Docs Menu
Docs Home
/

Creación de aplicaciones RAG en continua actualización

Utilice MongoDB Atlas Stream Processing y Vector Search para actualizar, almacenar y buscar incrustaciones de forma continua a través de una interfaz unificada.

Casos de uso: Gen AI

Industrias: Finanzas, salud, comercio minorista

Productos: MongoDB Atlas, Búsqueda vectorial de MongoDB Atlas, Procesamiento de flujo de MongoDB Atlas

Socios: Confluent, AWS

Proporcionar datos actualizados a los modelos es esencial para que puedan usar el contexto relevante al ofrecer recomendaciones más allá de un enfoque de IA universal. Los sistemasde recuperación-generación aumentada (RAG) permiten a las organizaciones fundamentar los grandes modelos lingüísticos (LLM) y otros modelos fundamentales en la veracidad de sus datos patentados. Sin embargo, mantener los datos subyacentes es complejo. Para garantizar que los modelos proporcionen respuestas precisas, es esencial actualizar continuamente las incrustaciones vectoriales que conforman el núcleo de los sistemas RAG para que representen la información más reciente disponible.

Además, la elección del modelo de incrustación afecta la calidad de los resultados de IA, ya que cada modelo se optimiza para distintos propósitos y tipos de datos. Por ejemplo, un modelo de incrustación entrenado en un lenguaje específico creará incrustaciones más apropiadas para el contexto de ese lenguaje que un modelo de propósito general entrenado en varios lenguajes.

Aprovechando las capacidades nativas de Procesamiento de flujos y búsqueda vectorial de MongoDB Atlas, esta solución permite a los desarrolladores actualizar, almacenar y buscar embeddings continuamente dentro de una única interfaz.

Esta solución es relevante para muchas industrias y casos de uso, incluidos:

  • Servicios financieros: Los documentos financieros, las políticas legales y los contratos suelen estar en varios idiomas y varían según la normativa del país. Facilitar a los asesores de crédito una interfaz basada en IA que utiliza datos relevantes y actualizados para agilizar la tramitación de préstamos puede optimizar los flujos de trabajo bancarios.

  • Atención médica y seguros: Los sistemas RAG que ayudan a actualizar los registros de los pacientes o suscribir pólizas de seguro necesitan acceso a información actualizada.

  • Venta minorista: Contar con datos contextuales actualizados es crucial para que los sistemas RAG elijan el modelo de embeddings adecuado y así se puedan brindar experiencias personalizadas a los clientes, sin importar el lenguaje que utilicen.

Esta solución utiliza los siguientes componentes:

  • Clúster Atlas de MongoDB: Permite el almacenamiento flexible de diversos tipos de datos, incluyendo texto, metadatos asociados e incrustaciones vectoriales correspondientes en documentos. El índice vectorial en Atlas admite directamente consultas de búsqueda semántica eficientes dentro de la base de datos, que se pueden usar con el Marco de Agregación de MongoDB.

  • Clúster Confluent Kafka: recibe actualizaciones de documentos y documentos nuevos de los productores y los pone a disposición para su posterior procesamiento por parte de Atlas Stream Processing.

  • Procesamiento de flujos Atlas: Se suscribe a los flujos de eventos generados por MongoDB, filtra la información relevante, transforma los eventos y los emite al tema de Kafka correspondiente. También se suscribe al clúster de Kafka para procesar actualizaciones y propagar los cambios a la base de datos.

  • Servicio de Metadatos:

    • Generador de incrustaciones: Script de Python que se suscribe a los temas de entrada de Kafka. Para cada mensaje recibido, genera una incrustación mediante un modelo de aprendizaje automático especializado.

    • Extractor de etiquetas: script de Python que analiza los datos entrantes para identificar metadatos estructurados relevantes para enriquecer el documento para su indexación, búsqueda o análisis.

Arquitectura de referencia de actualizaciones vectoriales escalables con MongoDB
haga clic para ampliar

Figura 1. Arquitectura de referencia de actualizaciones vectoriales escalables con MongoDB

En la solución de demostración, el modelo de datos es una colección de documentos que encapsula toda la información relevante sobre una canción. El modelo de datos basado en documentos de MongoDB almacena tipos de datos diversos junto a sus embeddings, lo que permite una recuperación de datos fácil y rápida.

Los datos de muestra tienen dos conjuntos de datos disponibles para importar: archive_lyrics_small1 y archive_lyrics_small2. Los documentos de estos conjuntos de datos tienen la siguiente estructura:

{
"title": "Hurricane",
"artist": "Bob Dylan",
"year": 1976,
"lyrics": "...",
"language": "en",
"genre": "rock",
"duration": 61,
"lyrics_embeddings_en": [...],
"tags": ["man", "story", "night"] // only in archive_lyrics_small1
}

En esta solución, Atlas Stream Processing utiliza los siguientes campos de datos para el tema de salida:

  • lyrics_embeddings_en/lyrics_embeddings_es: Vector de incrustación de letras específico del idioma

  • tags:Solo en el conjunto de datos archive_lyrics_small1, enumera las palabras que aparecen con frecuencia en las letras.

El repositorio de GitHub contiene instrucciones detalladas para replicar esta solución, lo que le permite actualizar sus incorporaciones de forma asincrónica y a escala con MongoDB Atlas.

El README le guiará a través de los siguientes pasos:

1

Clone el repositorio, configure un entorno virtual e instale las dependencias necesarias.

2

Importante

Si aún no tiene una cuenta Atlas, únase ahora y cree un clúster.

Utilice el script proporcionado para cargar los datos con mongoimport.

3

Siga las instrucciones de la documentación de Confluent para crear un clúster de Kafka.

Copie la URL de arranque desde la pestaña Cluster Settings en Confluent y use la API REST de Kafka para crear una clave API para conectarse a su clúster.

Cree los temas SpanishInputTopic, EnglishInputTopic y OutputTopic en la pestaña Topics de Confluent.

4

Utilice la URL de bootstrap de Confluent en el registro de conexiones para configurar una nueva conexión entre el Espacio de Trabajo de Procesamiento de Flujos Atlas y el clúster de Kafka.

Conecte el espacio de trabajo de procesamiento de secuencias de Atlas al clúster Atlas.

5

Copie su cadena de conexión para conectarse al espacio de trabajo de procesamiento de secuencias.

Utilice MongoDB Shell (mongosh) para configurar las canalizaciones y conexiones en el espacio de trabajo de procesamiento de secuencias.

6

Ejecute el servicio de metadatos para suscribirse a los temas de entrada, crear las etiquetas e incrustaciones para el idioma correspondiente según la información recibida en el evento y escribir el evento en el tema de salida.

7

Cree y configure un índice de búsqueda vectorial Atlas lyrics_embeddings_espara. Debe estructurar el índice de búsqueda de la siguiente manera:

{
"fields": [
{
"type": "vector",
"path": "lyrics_embeddings_es",
"numDimensions": 768,
"similarity": "cosine"
}
]
}

Cree y configure un índice de búsqueda vectorial Atlas lyrics_embeddings_enpara. Debe estructurar el índice de búsqueda de la siguiente manera:

{
"fields": [
{
"type": "vector",
"path": "lyrics_embeddings_en",
"numDimensions": 384,
"similarity": "cosine"
}
]
}
8

Utilice el script query_client.py proporcionado para ejecutar consultas semánticas utilizando Atlas Vector Search en una interfaz de chat.

  • Mantenga la relevancia de las incrustaciones: actualice periódicamente las incrustaciones de datos para garantizar que sus búsquedas semánticas sigan siendo precisas.

  • Optimice la combinación de lenguaje y modelo: asegúrese de que su LLM se alinee estrechamente con el lenguaje de sus datos para mejorar la relevancia y precisión de sus resultados de búsqueda.

  • Adopte incrustaciones flexibles: el modelo de datos flexible de MongoDB le permite almacenar incrustaciones directamente junto con sus datos, independientemente de su longitud o del modelo utilizado para generarlas.

  • Elija la función de similitud adecuada: La eficacia de sus búsquedas semánticas depende de la función de similitud elegida. Adapte su selección a su caso de uso específico.

  • Genere incrustaciones asincrónicas: cree incrustaciones de forma asincrónica para mantener el rendimiento de su aplicación y escalar las funciones de generación de forma horizontal.

David Sanchez, MongoDB

  • Gestión de reclamaciones mediante LLM y búsqueda vectorial para RAG

  • Lanzamiento de un chatbot Agentic RAG con MongoDB y Dataworkz

  • Optimice el rendimiento de la IA con MongoDB Atlas y Fireworks AI

Volver

Optimice las aplicaciones RAG con Fireworks AI

En esta página