Resumen del seminario web: Técnicas de recuperación para acceder al contexto más relevante para aplicaciones de LLM
Conectar modelos de lenguaje grandes (LLMs) con fuentes de datos externas es crucial para mejorar el rendimiento de muchas aplicaciones de IA. Estas conexiones implican enlazarse con colecciones de datos preexistentes, recordar conversaciones de usuarios o generar "nuevos recuerdos" mediante reflexión. La recuperación consiste en extraer información relevante de fuentes externas conectadas e incorporarla en la consulta para proporcionar contexto.
En nuestro webinar reciente, Harrison Chase, cofundador y CEO de LangChain, y Filip Haltmayer, ingeniero de software en Zilliz, hablaron sobre la recuperación con LangChain y bases de datos vectoriales, la búsqueda semántica y sus casos límite. En esta publicación, exploraremos las conclusiones clave del webinar y responderemos algunas de las preguntas sin responder de la audiencia.
¿Qué es la recuperación y por qué es importante?
En general, la recuperación se refiere al acceso a información desde la memoria u otros dispositivos de almacenamiento. Durante el webinar, Harrison explicó cómo podríamos aprovechar técnicas de recuperación para aportar conocimiento externo a los LLMs usando una base de datos vectorial como Milvus y un agente de IA como LangChain.
Aunque los LLMs son muy potentes, tienen limitaciones, ya que solo conocen la información con la que fueron preentrenados, que puede necesitar actualización. Por ejemplo, los datos de ChatGPT solo cubren hasta el año 2021, por lo que no sabe qué ocurrió después. Los LLMs también carecen de datos sobre información específica de dominio o propietaria y datos sobre tu negocio y proyecto. Además, incluso si la información está presente dentro del LLM, reconocerla puede ser difícil. En tales casos, la recuperación puede ser un gran complemento para dar a los LLMs más contexto y obtener respuestas más precisas o llevar al primer plano la información objetivo que ya está en el LLM.
Resumen de la búsqueda semántica
La recuperación mediante búsqueda semántica es uno de los casos de uso más críticos. Durante el webinar reciente, Harrison proporcionó un resumen de cómo funciona la búsqueda semántica dentro de una arquitectura CVP típica (ChatGPT+almacén vectorial+Prompt as code).
El siguiente diagrama explica cómo funciona la búsqueda semántica en una pila CVP. Si un usuario hace una pregunta general que el LLM puede responder, el LLM responde directamente a la pregunta. Sin embargo, si la pregunta es específica de dominio, se transforma en vectores y se envía a una base de datos vectorial, como Milvus, que ya contiene documentos relevantes. La base de datos vectorial descompone los registros prealmacenados en fragmentos y embeddings, realiza búsquedas semánticas para encontrar los resultados top-k más relevantes para la consulta del usuario y luego envía estos resultados a un agente de IA, como LangChain, junto con la consulta del usuario. LangChain combina los resultados con la pregunta del usuario y los envía al LLM. Luego, el LLM proporciona una respuesta satisfactoria.
Cómo funciona la búsqueda semántica en una pila CVP típica
Casos límite de la búsqueda semántica
La búsqueda semántica se ha utilizado durante un tiempo y ha demostrado ser útil para abordar muchos desafíos. Harrison demostró cinco casos límite de búsquedas semánticas durante el webinar y analizó a fondo cada caso.
Información repetida
Al trabajar con numerosos documentos similares o copiados, recuperar información relevante puede ser un desafío. Este tipo de contenido no es adecuado para los LLMs y puede crear contexto innecesario. Harrison propuso tres soluciones para superar este problema:
Filtrar documentos similares mediante búsquedas semánticas antes de enviarlos al LLM. Por ejemplo, antes de que LangChain envíe los prompts a ChatGPT, recupera 20-30 documentos y elimina los similares mediante embeddings o los omite para el LLM.
Aprovechar la relevancia marginal máxima para optimizar la diversidad. Esta búsqueda se centra en la similitud y la diversidad respecto de otros vectores recuperados.
Deduplicar documentos antes de almacenarlos en la base de datos vectorial. Sin embargo, este enfoque puede ser desafiante, ya que determinar la puntuación de similitud que equivale a un duplicado requiere mucho trabajo. Un elemento vectorial podría ser muy diferente, lo que daría lugar a diferencias significativas.
Información contradictoria
La información contradictoria ocurre cuando múltiples fuentes proporcionan respuestas diferentes a una pregunta, lo que puede ser muy confuso si presentas todos los datos a un LLM. Por ejemplo, si preguntas sobre la política de vacaciones de tu empresa, puedes recibir respuestas diferentes de fuentes como el documento de RR. HH. y algunas notas aleatorias de reuniones.
Harrison propuso dos soluciones para este problema:
Priorizar fuentes e incorporar esa clasificación en la recuperación.
Pasar la información de la fuente al paso de generación, lo que permite al LLM decidir qué fuente es más fiable.
Temporalidad
Cuando la información cambia con el tiempo, se denomina temporalidad. Por ejemplo, la política de vacaciones de tu empresa puede cambiar ocasionalmente.
Para abordar este problema, Harrison propone tres soluciones:
Ponderación por actualidad en la recuperación: filtrar por completo la información desactualizada.
Incluir marcas de tiempo al generar información: pedir al LLM que se base en información más reciente.
Reflexión: revisar la comprensión de un tema con el tiempo.
Consulta de metadatos
A veces, los usuarios hacen preguntas que tratan más sobre metadatos que sobre contenido. Por ejemplo, un usuario puede consultar películas con extraterrestres en 1980. Aunque "películas sobre extraterrestres" puede buscarse semánticamente, 1980 es más una coincidencia exacta.
Entonces, ¿cómo podemos resolver este problema? Harrison sugiere generar un filtro de metadatos antes de realizar una recuperación de búsqueda semántica. Este enfoque implica dividir la pregunta en dos partes: el filtro de metadatos (que es una coincidencia exacta, como "año igual a 1980") y la consulta (como "extraterrestres o algo así" en este caso).
Pero ¿cómo aplicamos el filtro de metadatos? Muchos almacenes vectoriales permiten la inclusión directa de filtros de metadatos en la consulta. Si eso no es posible, filtrar los resultados después de la recuperación sigue siendo posible.
Preguntas de varios saltos
A veces, los usuarios pueden hacer varias preguntas a la vez, lo que dificulta que la búsqueda semántica recupere toda la información necesaria de la pregunta original.
Harrison sugirió que usemos agentes de IA como LangChain para abordar este desafío. LangChain puede descomponer la pregunta en varios pasos y usar el modelo de lenguaje como motor de razonamiento para recuperar la información requerida. Sin embargo, este enfoque convincente puede generar muchas llamadas al LLM, lo que conlleva costos más altos.
Filip recomendó integrar GPTCache con LangChain porque GPTCache puede almacenar preguntas y respuestas generadas por el LLM. Cuando los usuarios hacen consultas similares la próxima vez, GPTCache realiza búsquedas semánticas y da respuestas antes de consultar al LLM, ahorrando así dinero a los usuarios en llamadas al LLM.
Preguntas y respuestas
Recibimos muchas preguntas de nuestra audiencia durante el webinar y apreciamos su participación. Harrison y Filip respondieron algunas de las preguntas durante la sesión de preguntas y respuestas, pero debido a limitaciones de tiempo, algunas quedaron sin responder. A continuación, hemos recopilado una lista de las preguntas y respuestas.
P: ¿Puedes hablar más sobre la generación de prompts usando fuentes de conocimiento externas? ¿Cuáles son algunos ejemplos o trucos que has utilizado? ¿LangChain planea añadir funciones que creen prompts optimizados?
La clave para la prompting es tener claro lo que quieres. Si no expresas claramente todas tus intenciones y la información relevante, el LLM no sabrá qué hacer, al igual que un humano no sabría qué hacer. Sí, añadiremos algunas funciones en torno a la optimización de prompts.
P: ¿Cómo ves el panorama actual de la generación aumentada por recuperación? Hay muchas soluciones como Langchain, Llama Index, Vectara y otras. ¿Cuál es la mejor solución para ajustar los pasos de recuperación, incluidos los motores de consulta enrutadores y otros? Has mencionado que la recuperación podría diferenciar la importancia de los documentos, ¿y esto ya está disponible a través de LangChain?
Todo este espacio todavía está en una etapa temprana y avanza superrápido. Distinguiré el paso de recuperación y el paso de generación. En cuanto a la recuperación, diría que LangChain ofrece la mayor flexibilidad y modularidad para personalizar un sistema de recuperación basado en vectores. Vectara es una excelente solución integral totalmente gestionada para la recuperación, que abstrae muchos de los detalles. LlamaIndex proporciona algunas estructuras de datos más interesantes, como árboles, para experimentar. Independientemente del paso de recuperación que elijas, todos usan LangChain durante el paso de generación: tenemos integraciones con los tres. Puedes lograr esa diferenciación con prompts personalizados.
P: ¿Cómo esperas que los casos de uso de la recuperación y las compensaciones asociadas se vean afectados a medida que los límites de contexto de los LLM aumenten con el tiempo?
¿Por qué sigue siendo necesario tener una base de datos vectorial para transformers de contexto extendido como el LLM de Anthropic con una longitud de contexto de 100k? Bueno, las bases de datos vectoriales ofrecen una solución mucho más rentable. Cuando se trata de estos LLMs, ellos hacen todo el trabajo pesado de computación, mientras que la base de datos vectorial se encarga del almacenamiento. Ten en cuenta que los gastos de computación pueden acumularse rápidamente. Así que, si quieres meter más contexto en tus LLMs, debes lidiar con esos costos incrementados. Ahí es donde entra la belleza de una base de datos vectorial. Es una alternativa rentable porque la mayoría de los gastos están relacionados con la computación, que siempre es 100 veces más cara.
Dependencias de largo alcance: los LLMs aún pueden olvidar cosas de "temprano" en la conversación, incluso con la arquitectura transformer.
P: ¿Qué opinas sobre los proyectos de código abierto para publicar contenido previamente vectorizado? Cohere publicó Wikipedia, y otro proyecto ha publicado resúmenes de arXiv. ¿Cuál es el mejor modelo para publicar contenido vectorial de código abierto?
Es una gran idea para aprender sobre búsqueda semántica y evitar el tiempo y el costo adicionales de generar los vectores. Aparte de esto, tener los vectores precalculados te limita seriamente, ya que no te permite modificar cómo o qué se está incrustando. En cuanto al mejor modelo, no hay uno que dé los mejores resultados para los datos que estás usando: cuanto más popular sea el modelo que uses, mayor será la probabilidad de que se use tu conjunto de datos.
P: ¿Cómo funciona el subpaquete de memoria en LangChain? ¿Por qué el historial de mensajes de chat está separado de la memoria? ¿Por qué lo diseñaste de esta manera?
Estamos trabajando en una renovación de la memoria para que esto quede más claro.
¡Mira la grabación completa del seminario web!
Mira la grabación del seminario web para obtener más información sobre LangChain y la conversación entre Filip y Harrison.
Sigue leyendo

Notion's Vector Search Is Excellent. Their Next Problem Is Harder.
Notion solved vector search scaling in two years. The next bottleneck — offline context engineering, unified data, and the real-time/offline gap — is harder.

Introducing Business Critical Plan: Enterprise-Grade Security and Compliance for Mission-Critical AI Applications
Discover Zilliz Cloud’s Business Critical Plan—offering advanced security, compliance, and uptime for mission-critical AI and vector database workloads.

Context Engineering Strategies for AI Agents: A Developer’s Guide
Learn practical context engineering strategies for AI agents. Explore frameworks, tools, and techniques to improve reliability, efficiency, and cost.



