Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Generación de recuperación aumentada (RAG) con MongoDB

La generación de recuperación aumentada (RAG) es una arquitectura utilizada para mejorar los grandes modelos de lenguaje (LLM) con datos adicionales, permitiéndoles generar respuestas más precisas. Puedes implementar RAG en tus aplicaciones de IA generativa combinando un LLM con un sistema de recuperación potenciado por MongoDB Vector Search.

Para probar rápidamente RAG con MongoDB Vector Search, use el Chatbot Demo Builder en el playground de MongoDB Search. Para obtener más información, consulta Constructor de demos de chatbot en Search Playground.

Para implementar su propio sistema RAG con Búsqueda vectorial de MongoDB, consulte el tutorial en esta página.

Al trabajar con LLM, es posible que encuentres las siguientes limitaciones:

  • Datos obsoletos: los LLM se entrenan con un conjunto de datos estático hasta un cierto punto en el tiempo. Esto significa que tienen una base de conocimientos limitada y podrían utilizar datos obsoletos.

  • Sin acceso a datos adicionales: Los LLM no tienen acceso a datos locales, personalizados o específicos del dominio. Por lo tanto, podrían carecer de conocimientos sobre áreas específicas.

  • Alucinaciones: cuando se basan en datos incompletos u obsoletos, los LLM pueden generar respuestas inexactas.

Puedes abordar estas limitaciones si sigues estos pasos para implementar RAG:

  1. Ingestión: se deben almacenar los datos personalizados como incrustaciones vectoriales en una base de datos vectorial, como MongoDB. Esto permite crear una base de conocimientos con datos actualizados y personalizados.

  2. Recuperación: recupere documentos semánticamente similares de la base de datos de acuerdo a la pregunta del usuario utilizando una solución de búsqueda, como la búsqueda vectorial de MongoDB. Estos documentos enriquecen el LLM con datos adicionales y relevantes.

  3. Generación: pregunta a LLM. El LLM utiliza los documentos recuperados como contexto para generar una respuesta más precisa y relevante, reduciendo las alucinaciones.

RAG es una arquitectura eficaz para construir chatbots de IA, ya que permite a los sistemas de IA proporcionar respuestas personalizadas y específicas del dominio. Para crear chatbots listos para producción, configure un servidor para enrutar solicitudes y crear una interfaz de usuario sobre su implementación de la RAG.

Para implementar la RAG con la búsqueda vectorial de MongoDB, debe ingerir datos en MongoDB, recuperar documentos con la búsqueda vectorial de MongoDB y generar respuestas utilizando un LLM. Esta sección describe los componentes de una implementación básica o ingenua de la RAG con la búsqueda vectorial de MongoDB. Para obtener instrucciones paso a paso, consulte el Tutorial.

Diagrama de flujo RAG con búsqueda vectorial de MongoDB
haga clic para ampliar

La ingesta de datos para RAG implica el procesamiento de tus datos personalizados y almacenarlos en una base de datos vectorial para prepararlos para la recuperación. Para crear un pipeline de ingestión básico con MongoDB como base de datos vectorial, haz lo siguiente:

  1. Prepare sus datos.

    Se debe cargar, procesar y dividir en fragmentos los datos para prepararlos para la aplicación RAG. La fragmentación implica dividir los datos en partes más pequeñas para una recuperación óptima.

  2. Convierte los datos en incrustaciones vectoriales.

    Convierte tus datos en embeddings vectoriales utilizando un modelo de embebimiento. Para obtener más información, consulte Cómo crear embebimientos vectoriales manualmente.

  3. Almacena los datos y las incrustaciones en MongoDB.

    Se deben almacenar estas incrustaciones en el clúster. Se deben almacenar las incrustaciones como un campo junto a otros datos en la colección.

Construir un sistema de recuperación implica buscar y devolver los documentos más relevantes de su base de datos vectorial para aumentar el LLM con. Para recuperar documentos relevantes con la búsqueda vectorial de MongoDB, convierta la pregunta del usuario en incrustaciones vectoriales y ejecute un query de búsqueda vectorial sobre los datos de su colección de MongoDB para identificar los documentos con las incrustaciones más similares.

Para realizar una recuperación básica con la búsqueda vectorial de MongoDB, realice lo siguiente:

  1. Defina un índice de búsqueda vectorial de MongoDB en la colección que contiene sus incrustaciones vectoriales.

  2. Elija uno de los siguientes métodos para recuperar documentos según la pregunta del usuario:

    • Utilice una integración de MongoDB Vector Search con un framework o servicio popular. Estas integraciones incluyen bibliotecas y herramientas integradas que le permiten crear fácilmente sistemas de recuperación con MongoDB Vector Search.

    • Desarrolle su propio sistema de recuperación. Puede definir sus propias funciones y pipelines para ejecutar consultas de búsqueda vectorial de MongoDB específicas para su caso de uso.

      Para aprender a desarrollar un sistema de recuperación básico con la búsqueda vectorial de MongoDB, consulte Tutorial.

Para generar respuestas, se deben combinar los sistema de recuperación con un LLM. Después de realizar una búsqueda vectorial para recuperar documentos relevantes, se debe proporcionar la pregunta del usuario junto con los documentos relevantes como contexto al LLM para que pueda generar una respuesta más precisa.

Elija uno de los siguientes métodos para conectarse a un LLM:

  • Utilice una integración de MongoDB Vector Search con un framework o servicio popular. Estas integraciones incluyen bibliotecas y herramientas integradas que le ayudarán a conectarse a LLM con una configuración mínima.

  • Llama a la API del LLM. La mayoría de los proveedores de IA ofrecen API a sus modelos generativos que puedes usar para generar respuestas.

  • Cargue un LLM de código abierto. Si no dispone de claves ni créditos de API, puede utilizar un LLM de código abierto cargándolo localmente desde su aplicación. Para ver una implementación de ejemplo, consulte el tutorial Crear una implementación local de RAG con búsqueda vectorial de MongoDB.

El siguiente ejemplo demuestra cómo implementar la RAG con un sistema de recuperación impulsado por la búsqueda vectorial de MongoDB. Seleccione su modelo de incrustación preferido, LLM y lenguaje de programación para empezar:

Para completar este ejemplo, debe tener lo siguiente:

Para tutoriales adicionales de RAG, consulta los siguientes recursos:

Para crear agentes de IA e implementar RAG agéntico, consulta Compilar agentes de IA con MongoDB.

Para optimizar sus aplicaciones RAG, asegúrese de utilizar un potente modelo de incrustación como Voyage IA para generar incrustaciones vectoriales de alta calidad.

Además, MongoDB Vector Search admite sistemas de recuperación avanzados. Puede indexar sin problemas los datos vectoriales junto con los demás datos de su clúster. Esto le permite mejorar los resultados prefiltrando por otros campos de su colección o realizando búsquedas híbridas que combinan la búsqueda semántica con los resultados de la búsqueda de texto completo.

La Fragmentación divide grandes documentos en fragmentos más pequeños antes de generar incrustaciones. La estrategia de fragmentación adecuada puede mejorar significativamente la calidad de recuperación para su aplicación RAG.

Una estrategia de fragmentación consiste en los siguientes componentes clave:

  • Técnica de división: determina dónde colocar los límites de fragmentos, como los límites de párrafo, los separadores específicos del lenguaje de programación, los tokens o los límites semánticos.

  • Tamaño del fragmento: Número máximo de caracteres o tokens por fragmento.

  • Superposición de fragmentos: Número de caracteres o fichas superpuestos entre fragmentos adyacentes. La superposición ayuda a preservar el contexto en los límites de los fragmentos.

Las estrategias comunes de fragmentación incluyen:

Strategy
Mejor para

Token fijo

Casos de uso simples con una estructura de contenido uniforme.

Token fijo con superposición

Segmentación de propósito general donde el contexto abarca los límites de los fragmentos.

Recursivo

Documentos de texto en los que se quiera preservar los límites de párrafos y oraciones.

Recursiva específica del lenguaje

Código o documentación técnica con partes de código en lenguaje de programación.

Semántico

Documentos sin límites estructurales claros, como ensayos o contenido narrativo.

Para experimentar con estrategias de división, utiliza el Creador de demos de Chatbot en el MongoDB Search Playground, que permite probar la división recursiva y la división fija de tokens con solapamiento.

Para un tutorial práctico que evalúa diferentes estrategias de fragmentación utilizando el marco Ragas, consulta el notebook de estrategias de fragmentación en el repositorio GenAI-Showcase.

También puede utilizar los siguientes recursos:

Volver

Casos de uso y patrones de diseño

Obtén una insignia de habilidad

¡Domina "RAG con MongoDB" gratis!

Más información

En esta página