3 puntos por GN⁺ 2024-09-22 | 1 comentarios | Compartir por WhatsApp

Introducción a Contextual Retrieval

  • Para que un modelo de IA sea útil en un contexto específico, necesita conocimiento de base
  • Un chatbot de soporte al cliente necesita conocimiento sobre un negocio específico, y un bot de análisis legal necesita un amplio conocimiento sobre casos anteriores
  • Los desarrolladores suelen usar Retrieval-Augmented Generation (RAG) para mejorar el conocimiento de los modelos de IA
  • Las soluciones RAG tradicionales a menudo eliminan el contexto al codificar la información, por lo que con frecuencia no logran recuperar información relevante

Método de Contextual Retrieval

  • Contextual Retrieval es un método que mejora de forma significativa la etapa de recuperación de RAG
  • Usa dos subtecnologías: Contextual Embeddings y Contextual BM25
  • Reduce en 49% la cantidad de búsquedas fallidas y, al combinarse con reranking, puede reducirlas hasta en 67%
  • Se puede implementar fácilmente una solución de Contextual Retrieval usando Claude

Simplemente usar prompts más largos

  • Si la base de conocimiento tiene menos de 200,000 tokens, puede ser mejor proporcionar toda la base de conocimiento al modelo
  • Al usar la función de prompt caching de Claude, este enfoque es más rápido y rentable
  • A medida que la base de conocimiento crece, se necesita una solución más escalable

Conceptos básicos de RAG

  • RAG se usa para manejar bases de conocimiento grandes
  • La base de conocimiento se divide en pequeños fragmentos de texto, y se usa un modelo de embeddings para codificar su significado
  • Se almacenan en una base de datos vectorial para recuperarlos según su similitud semántica
  • BM25 es eficaz para encontrar coincidencias exactas de palabras o frases

Limitaciones del RAG tradicional

  • En el proceso de dividir documentos en fragmentos pequeños, el contexto puede destruirse
  • Por ejemplo, ante una pregunta sobre información financiera de una empresa específica, podría devolverse un fragmento sin suficiente contexto

Implementación de Contextual Retrieval

  • Se agrega un contexto descriptivo a cada fragmento para generar índices de embeddings y de BM25
  • Se usa Claude para generar un contexto conciso para cada fragmento
  • Se puede reducir el costo usando prompt caching

Mejoras de rendimiento

  • Contextual Embeddings reduce la tasa de fallos de recuperación en 35%
  • Al combinar Contextual Embeddings y Contextual BM25, la tasa de fallos de recuperación se reduce en 49%

Consideraciones de implementación

  • Hay que considerar cómo dividir los documentos en fragmentos, la elección del modelo de embeddings y los prompts de contextualización personalizados
  • Incluir más fragmentos aumenta la probabilidad de contener información relevante

Mejora del rendimiento mediante reranking

  • El reranking mejora la calidad de la respuesta al enviar al modelo solo los fragmentos más relevantes
  • Contextual Embedding y Contextual BM25 con reranking reducen la tasa de fallos de recuperación en 67%

Conclusión

  • Combinar Embeddings y BM25 permite obtener mejores resultados
  • Los embeddings de Voyage y Gemini son los más eficaces
  • Enviar al modelo los 20 fragmentos principales es lo más efectivo
  • Agregar contexto mejora significativamente la precisión de recuperación
  • El reranking mejora aún más el rendimiento

Resumen de GN⁺

  • Contextual Retrieval es un método que puede mejorar en gran medida la precisión de recuperación de los modelos de IA
  • Es especialmente útil al trabajar con bases de conocimiento grandes
  • Se puede implementar de forma rentable usando la función de prompt caching de Claude
  • Otros proyectos con funciones similares incluyen GPT-3 de OpenAI y BERT de Google

1 comentarios

 
GN⁺ 2024-09-22
Comentarios de Hacker News
  • Primer comentario

    • Comparte su experiencia construyendo RAG empresarial para organismos gubernamentales
    • Resultados de pruebas A/B usando métricas de RAGAS:
      • La búsqueda híbrida (semántica + vectorial) y el re-ranking basado en LLM no muestran grandes cambios en preguntas de evaluación sintéticas
      • HyDE degrada gravemente la calidad de las respuestas y de la búsqueda en preguntas de evaluación sintéticas
    • La búsqueda híbrida siempre es útil, pero no hay un solo método que gane siempre
    • La búsqueda semántica de Azure AI Search es lo suficientemente efectiva junto con la similitud vectorial
    • Es necesario probar distintos métodos
    • Cosas que intentará después:
      • RAPTOR
      • SelfRAG
      • Agentic RAG
      • Refinamiento de consultas (expansión y subconsultas)
      • GraphRAG
    • Lo aprendido:
      • Siempre se debe usar una línea base y experimentos para intentar refutar la hipótesis nula
      • Usar tres tipos de preguntas/respuestas de evaluación: redactadas por expertos, preguntas reales de usuarios y preguntas sintéticas
  • Segundo comentario

    • Le gusta la forma en que aprovechan el prompt caching
    • Gracias al caching, el costo de los prompts se reduce a 1/10
    • El ahorro de costos por caching permite aplicar varios trucos
    • Comparte notas sobre búsqueda contextual y prompt caching
  • Tercer comentario

    • Es común usar LLM para expandir los chunks base con el fin de mejorar los resultados de RAG
    • La expansión de consultas con HyDE no siempre mejora los resultados
    • La novedad de Anthropic es la introducción del prompt caching
    • El prompt caching reduce costos al proporcionar documentos largos como contexto
    • Está muy satisfecho con la API de Cohere
  • Cuarto comentario

    • Usa un método que divide los documentos en chunks según los encabezados h1, h2 y h3, y agrega los encabezados al inicio del chunk
    • Ejemplo:
      • Chunk original: "La dosis habitual para adultos es de 1 a 2 tabletas o cápsulas de 200 mg, 3 veces al día"
      • Chunk nuevo: "# Fiebre ## Tratamiento --- La dosis habitual para adultos es de 1 a 2 tabletas o cápsulas de 200 mg, 3 veces al día"
    • Este método funciona bien incluso sin LLM
  • Quinto comentario

    • Está en contra de esta técnica
    • Los embeddings vectoriales pueden concentrarse demasiado en el primer bloque de texto separado por salto de línea
    • La búsqueda IDF lo compensa hasta cierto punto, pero no lo suficiente
    • Se puede usar un "semantic boost" para desplazar los embeddings hacia el título, el resumen, etc. del documento
    • Comparte una explicación del "semantic boost" de la API de Trieve
  • Sexto comentario

    • Usa una estrategia de "linked list" para que los chunks tengan múltiples punteros hacia los elementos a los que hacen referencia
    • Lo explica como una forma en que cada comentario se convierte en un puntero hacia la publicación original
    • Comparte un ejemplo de esta técnica
  • Séptimo comentario

    • La afirmación de que usar 200k tokens da las mejores respuestas en datasets pequeños no coincide con su experiencia
    • Mientras más grande se vuelve el prompt, más inconsistente se vuelve la salida y más difícil es seguir instrucciones
    • Se pregunta si otras personas han tenido experiencias similares y si hay formas de evitarlo
  • Octavo comentario

    • Se enfrenta al problema de recuperar reglas en lugar de recuperar conocimiento usando RAG
    • Propone entrenar un pequeño clasificador para determinar si una regla específica podría aplicar
    • Ejemplo: una forma de decidir si cierta regla aplica en un juego tipo multi-user dungeon
    • Determinar si una regla aplica o no es un problema más abstracto y difícil
    • Está buscando una forma de resolver este problema
  • Noveno comentario

    • Si la base de conocimiento es menor a 200,000 tokens (aprox. 500 páginas)
    • Espera que Anthropic publique su tokenizer
  • Décimo comentario

    • Espera el día en que la industria de la IA vuelva otra vez a TF-IDF