Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

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. Puede implementar RAG en sus aplicaciones de IA generativa combinando un LLM con un sistema de recuperación impulsado por la MongoDB Vector Search.

Para probar rápidamente RAG con la MongoDB Vector Search, utiliza el Chatbot Demo Builder en el Playground de MongoDB Search. Para aprender más, consulta Chatbot Demo Builder en el Playground de búsqueda.

Para implementar su propio sistema RAG con MongoDB Vector Search, 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 siguiendo los siguientes pasos para implementar RAG:

  1. Ingestión: almacena tus datos personalizados como vector embeddings en una base de datos de vectores, como MongoDB. Esto te permite crear una Base de Conocimiento de datos actualizada y personalizada.

  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 crear 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, se debe configurar un servidor para que enrute las solicitudes y compile una interfaz de usuario sobre la implementación de RAG.

Para implementar la RAG con la MongoDB Vector Search, debe ingerir datos en MongoDB, recuperar documentos con la MongoDB Vector Search y generar respuestas utilizando un LLM. Esta sección describe los componentes de una implementación básica o naïve de RAG con la MongoDB Vector Search. Para conocer instrucciones paso a paso, consulta Tutorial.

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

Vea un vídeo que demuestra cómo implementar la RAG con la búsqueda vectorial de MongoDB.

Duración: 5 minutos

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.

    Convierta sus datos en incrustaciones vectoriales mediante un modelo de incrustación. Puede generar incrustaciones automáticamente mediante incrustación automatizada o manualmente mediante un modelo de incrustación.

  3. Almacena los datos y las incrustaciones en MongoDB.

    Para la incrustación automatizada, MongoDB búsqueda vectorial almacena las incrustaciones en una base de datos interna dedicada. Para la incrustación creada manualmente, almacena la incrustación como un campo junto con otros datos de su colección en su clúster.

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 MongoDB Vector Search, 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 muestra cómo implementar RAG con un sistema de recuperación impulsado por la MongoDB Vector Search. Se debe seleccionar el 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: