16 puntos por xguru 2024-09-21 | Aún no hay comentarios. | Compartir por WhatsApp
  • Para que un modelo de IA sea útil en un contexto específico, necesita acceso a conocimiento de fondo
  • Los desarrolladores suelen usar Retrieval-Augmented Generation (RAG) para mejorar el conocimiento de los modelos de IA
  • Las soluciones tradicionales de RAG a menudo eliminan el contexto al codificar la información, por lo que muchas veces no logran recuperar información relevante
  • Contextual Retrieval es un método que mejora de forma importante la etapa de recuperación de RAG, usando dos subtecnologías: Contextual Embeddings y Contextual BM25
  • Este método puede reducir la tasa de fallos de recuperación en un 49%, y al combinarse con reranking puede reducirla hasta en un 67%
  • Los desarrolladores pueden desplegar fácilmente su propia solución de Contextual Retrieval junto con Claude

Nota sobre el uso de prompts largos

  • Si la base de conocimiento tiene menos de 200,000 tokens, se puede incluir toda la base de conocimiento en el prompt que se entrega al modelo
  • Anthropic lanzó recientemente el prompt caching en Claude, lo que hace este enfoque mucho más rápido y rentable
  • Cuando la Knowledge Base crece, se necesita una solución más escalable, y ahí es donde entra Contextual Retrieval

Fundamentos de RAG: escalar a bases de conocimiento grandes

  • Para bases de conocimiento más grandes que no caben en la ventana de contexto, la solución habitual es RAG
  • RAG divide la base de conocimiento en chunks de texto más pequeños, los convierte en vector embeddings y luego los almacena en una base de datos vectorial para poder recuperarlos mediante similitud semántica
  • Los modelos de embeddings son excelentes para capturar relaciones semánticas, pero pueden pasar por alto coincidencias exactas importantes
  • BM25 es una función de ranking que usa coincidencia léxica para encontrar palabras o frases exactas, y es especialmente efectiva para consultas que incluyen identificadores únicos o términos técnicos
  • Las soluciones RAG pueden recuperar con mayor precisión los chunks más aplicables al combinar embeddings y BM25 con los siguientes pasos:
    • Dividir la base de conocimiento (el "corpus" de documentos) en chunks de texto más pequeños, normalmente de unos pocos cientos de tokens o menos
    • Generar codificación TF-IDF y embeddings semánticos para esos chunks
    • Usar BM25 para encontrar los chunks principales basándose en coincidencias exactas
    • Usar embeddings para encontrar los chunks principales basándose en similitud semántica
    • Combinar los resultados de (3) y (4) con técnicas de fusión de ranking y eliminar duplicados
    • Agregar los K chunks principales al prompt para generar la respuesta

Introducción a Contextual Retrieval

  • En el RAG tradicional, como los documentos se dividen en chunks más pequeños, cada chunk individual puede carecer de suficiente contexto
  • Contextual Retrieval resuelve este problema agregando antes de cada chunk un contexto descriptivo específico para ese chunk
  • Claude facilita la implementación de Contextual Retrieval usando un prompt que le indica proporcionar un contexto breve y específico para cada chunk, describiéndolo con base en el contexto del documento completo
  • Contextual Retrieval puede usarse con Claude a bajo costo gracias al prompt caching

Mejoras de rendimiento

  • Contextual Embeddings reduce la tasa de fallos de recuperación de los 20 chunks principales en un 35% (5.7% → 3.7%)
  • Combinar Contextual Embeddings con Contextual BM25 reduce la tasa de fallos en un 49% (5.7% → 2.9%)

Consideraciones de implementación

  • Considerar cómo dividir los documentos en chunks
  • Contextual Retrieval mejora el rendimiento en todos los modelos de embeddings, pero algunos modelos pueden beneficiarse más
  • Un prompt genérico funciona bien, pero se pueden obtener mejores resultados con prompts ajustados a un dominio o caso de uso específico
  • Agregar más chunks a la ventana de contexto aumenta la probabilidad de incluir información relevante
  • Siempre se deben ejecutar evaluaciones, ya que pasar chunks contextualizados y distinguir entre el contexto y el chunk puede mejorar la generación de respuestas

Mejora adicional del rendimiento con reranking

  • El reranking es una técnica de filtrado de uso común para asegurar que solo se entreguen al modelo los chunks más relevantes
  • Se realiza una recuperación inicial para traer los chunks principales potencialmente relevantes
  • Los N chunks principales y la consulta del usuario se pasan al modelo de reranking
  • El modelo de reranking asigna una puntuación a cada chunk según su relevancia e importancia frente al prompt, y luego selecciona los K chunks principales
  • Los K chunks principales se pasan al modelo como contexto para generar el resultado final
  • Contextual Embedding rerankeado y Contextual BM25 reducen la tasa de fallos de recuperación de los 20 chunks principales en un 67% (5.7% → 1.9%)
  • Consideraciones de costo y latencia
    • El reranking puede afectar la latencia y el costo, especialmente cuando se reranquea una gran cantidad de chunks
    • Existe una compensación entre reranquear más chunks para obtener mejor rendimiento y reranquear menos para reducir latencia y costo

Conclusión

  • Se realizaron muchas pruebas comparando distintas combinaciones de todas las técnicas descritas arriba (modelo de embeddings, uso de BM25, uso de recuperación contextual, uso de reranking y número total de resultados top K recuperados) en varios tipos de datasets
  • Los resultados fueron los siguientes:
    • Embeddings + BM25 funciona mejor que solo embeddings
    • Entre los embeddings probados, Voyage y Gemini fueron los mejores
    • Pasar los 20 chunks principales al modelo es más efectivo que pasar solo los 10 o 5 principales
    • Agregar contexto a los chunks mejora mucho la precisión de recuperación
    • El reranking funciona mejor que no usar reranking
    • Todos estos beneficios son acumulativos: para maximizar la mejora del rendimiento, se pueden combinar embeddings contextualizados (de Voyage o Gemini) con Contextual BM25 y una etapa de reranking, y agregar 20 chunks al prompt
  • Se recomienda que todos los desarrolladores que trabajan con una Knowledge Base experimenten con este enfoque usando el cookbook proporcionado para alcanzar nuevos niveles de rendimiento

Aún no hay comentarios.

Aún no hay comentarios.