- 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.