Creation of RAG with TrueFoundry and MongoDB Atlas
.webp)
Diseñado para la velocidad: ~ 10 ms de latencia, incluso bajo carga
¡Una forma increíblemente rápida de crear, rastrear e implementar sus modelos!
- Gestiona más de 350 RPS en solo 1 vCPU, sin necesidad de ajustes
- Listo para la producción con soporte empresarial completo
Introduction
La generación aumentada por recuperación (RAG) combina las fortalezas de los sistemas de recuperación y los modelos generativos para producir resultados altamente relevantes y sensibles al contexto. Consulta fuentes de conocimiento externas, como bases de datos o índices de búsqueda, para recuperar información relevante, que luego se refina mediante un modelo generativo.
Why RAG?
- Altamente productos relevantes y sensibles al contexto.
- Al incorporar conocimiento dinámico y actualizado, los sistemas RAG superan las limitaciones del preentrenamiento estático en los modelos generativos, lo que los hace muy eficaces para aplicaciones como la respuesta a preguntas, las tareas intensivas en conocimiento y la generación de contenido personalizado.
- El modular La naturaleza de RAG permite la optimización tanto en las etapas de recuperación como de generación, lo que permite una mayor flexibilidad y escalabilidad en el diseño del sistema.
Cognita de TrueFoundry: RAG simplification for escalable applications
A pesar de su potencial, la implementación de RAG puede ser compleja, ya que implica la selección de modelos, la organización de datos y las mejores prácticas. Las herramientas existentes simplifican la creación de prototipos, pero carecen de una plantilla de código abierto para una implementación escalable: ingrese Cognita.
Cognita es un marco RAG de código abierto que simplifica la creación y la implementación de aplicaciones escalables. Al dividir el RAG en pasos modulares, garantiza un mantenimiento sencillo, la interoperabilidad con otras herramientas de inteligencia artificial, la personalización y el cumplimiento. Cognita equilibra la adaptabilidad y la facilidad de uso, sin dejar de ser escalable para futuros avances.
Ventajas de Cognita
- Un repositorio central reutilizable de analizadores, cargadores, integradores y recuperadores.
- Capacidad para que los usuarios no técnicos jueguen con la interfaz de usuario: cargue documentos y ejecute QnA utilizando módulos creados por el equipo de desarrollo.
- Totalmente impulsado por API, lo que permite la integración con otros sistemas.
- Grandes modelos de lenguaje (LLM) para facilitar la interacción con modelos generativos como los modelos GPT, Hugging Face u otras API de LLM de OpenAI.
- Integraciones prediseñadas para conectarse fácilmente a Pinecone, Weaviate, ChromaDB o MongoDB Atlas Vector Search.
¿Por qué MongoDB for RAG?
Usos MongoDB como base de datos vectorial para su aplicación de generación aumentada de recuperación (RAG) puede resultar beneficiosa según sus requisitos. He aquí por qué MongoDB podría ser una buena elección:
1. Vector search support native
Support MongoDB indexación vectorial a través de su Atlas Vector Search. Esto permite realizar búsquedas de similitud eficientes en datos de alta dimensión, lo que es fundamental para los flujos de trabajo de RAG. Principales ventajas:
- Integration with MongoDB query language: combina la búsqueda vectorial con las consultas tradicionales, lo que permite una composición de consultas más flexible y potente.
- High rendiment search: Utiliza algoritmos aproximados de vecindad más cercana (ANN) como HNSW (Hierarchical Navigable Small World) para una recuperación rápida y escalable de vectores.
2. Administración unificada de datos
Las aplicaciones RAG a menudo requieren la administración de ambos datos no estructurados (por ejemplo, texto e incrustaciones) y datos estructurados (p. ej., metadatos, preferencias de usuario).
MongoDB, al ser una base de datos de documentos, le permite almacenar las incrustaciones junto con sus metadatos asociados en un solo registro. Per example:
{
"embedding": [0.1, 0.2, 0.3, ...],
"text": "This is a sample document.",
"metadata": {
"source": "document_1",
"timestamp": "2024-12-06T10:00:00Z"
}
}
Esto evita la complejidad de administrar las incrustaciones en un sistema independiente.
3. Flexibilidad y escalabilidad
Design without schema: La flexibilidad del esquema de MongoDB facilita la iteración del modelo de datos a medida que la aplicación RAG evoluciona.
Escalado horizontal: la capacidad de fragmentación de MongoDB permite gestionar grandes conjuntos de datos y escalarlos a medida que crezca su aplicación.
Funciones nativas de la nube: MongoDB Atlas proporciona servicios totalmente gestionados, incluidos el escalado, las copias de seguridad y la supervisión.
Implementación de RAG con cognita + MongoDB
Paso 1: configurar MongoDB
Para ver un tutorial en vídeo sobre cómo obtener su clúster MongoDB Atlas gratuito, haga clic here.
- Configurar una cuenta de MongoDB Atlas visitando la Registrarse página si aún no tienes una cuenta.

- Para configurar un clúster en la pestaña Descripción general, haga clic en «Crear», seleccione el clúster según sus requisitos y pulse «Crear implementación».

- Para agregar las autenticaciones necesarias, en la ventana «Conectarse al clúster», cree un usuario de base de datos.
- Conéctese con el controlador MongoDB
- Elige la versión de python
- La cadena de conexión tendrá su nombre de usuario y contraseña. Copia la cadena de conexión. Esto se utilizaría en el siguiente paso.

Paso 2: Configurar Cognita para usar MongoDB
- Clona el repositorio github de cognita: https://github.com/truefoundry/cognita/tree/main
- Antes de iniciar los servicios, necesitamos configurar los proveedores de modelos que necesitaríamos para incrustar y generar respuestas. Para empezar, copia models_config.sample.yaml en models_config.yaml.
cp models_config.sample.yaml models_config.yaml
- Cree una colección mongo db en la base de datos recién creada, diga «cognita». Esta es la colección en la que se almacenarán todos los fragmentos y se utilizarán en el proceso de recuperación.
- El archivo compose usa el archivo compose.env para las variables de entorno. Puede modificarlo según sus necesidades.
- Edite la clave «VECTOR_DB_CONFIG» en el archivo de entorno. Esta configuración se utilizará en el proceso de arranque para garantizar que MongoDB se utilice como almacén de vectores durante el tiempo de ejecución. Aquí se utilizará la cadena de conexión de la base de datos mongo. El siguiente es un ejemplo de cómo se vería:
VECTOR_DB_CONFIG=' {"proveedor» :"mongo», «url» :"mongodb+srv: //nombre de usuario: password@clustername.mongodb.net/? retrywrites=true&w=majority&appName=cluster0", «config»: {"database_name»: «cognita"}} '
- De forma predeterminada, la configuración tiene habilitados los proveedores locales que necesitan infinity y un servidor ollama para ejecutar la incrustación y los LLM localmente. Sin embargo, si tienes una clave de API de OpenAI, puedes eliminar los comentarios del proveedor de openai en models_config.yaml y actualizar OPENAI_API_KEY en compose.env. Ahora puedes ejecutar el siguiente comando para iniciar los servicios:
docker-compose --env-file compose.env --profile ollama --profile infinity up
- El archivo de composición iniciará los siguientes servicios
- cognita-db: instancia de Postgres utilizada para almacenar metadatos para colecciones y fuentes de datos.
- cognita-backend: se usa para iniciar el servidor backend FastAPI para Cognita.
- cognita-frontend: se usa para iniciar la interfaz de Cognita.
- Una vez que los servicios estén activos, puede acceder a la interfaz en http://localhost:5001.
Paso 3: Configurar una recopilación de datos en Cognita
Una vez que haya configurado cognita, los siguientes pasos mostrarán cómo usar la interfaz de usuario para consultar documentos:

1. Crear fuente de datos
- Haga clic en la pestaña Fuentes de datos
- Haga clic en + Nueva fuente de datos
- El tipo de fuente de datos puede ser archivos del directorio local, URL web, URL de github o proporcionar el FQN del artefacto de Truefoundry. Por ejemplo, si se selecciona Localdir, cargue los archivos desde su máquina y haga clic en Enviar.
- La lista de fuentes de datos creadas estará disponible en la pestaña Fuentes de datos.
2. Crear colección
- Haga clic en la pestaña Colecciones

- Haga clic en + Nueva colección

- Introduzca el nombre de la colección
- Seleccione el modelo de incrustación
- Agregue la fuente de datos creada anteriormente y la configuración necesaria
- Haga clic en Procesar para crear la recopilación e indexar los datos

3. Al crear una nueva colección, esto es lo que sucede entre bastidores
- Cree una nueva colección en la base de datos de MongoDB configurada. Por ejemplo, si el nombre de la base de datos es `cognita`, este paso crea una colección con el nombre de entrada dado en la base de datos de cognita de mondo db.
- Al crear una colección, se crea un índice de búsqueda vectorial con el siguiente fragmento de código:
from pymongo.operations import SearchIndexModel
search_index_model = SearchIndexModel(
definition={
"fields": [
{
"type": "vector",
"path": "embedding",
"numDimensions": self.get_embedding_dimensions(embeddings),
"similarity": "cosine",
}
]
},
name="vector_search_index",
type="vectorSearch",
)
# Create the search index
result = self.db[collection_name].create_search_index(model=search_index_model)Esto garantiza que la colección recién creada esté lista para las consultas de búsqueda vectorial. Tenga en cuenta que la creación de un índice en MongoDB puede tardar hasta un minuto.
4. Tan pronto como crees la colección, comienza la ingesta de datos. Puedes ver su estado seleccionando tu colección en la pestaña de colecciones. Este paso se encarga de analizar tus archivos, fragmentarlos y añadirlos a tu MongoDB. También puede agregar fuentes de datos adicionales más adelante e indexarlas en la colección. Pase al siguiente paso una vez que el estado sea «Completado».

Paso 4: Encuentra la configuración correcta para tu aplicación

- En la pestaña DocsQA, usa el área de juegos de Cognita para jugar con los diferentes ajustes y ver cuál funciona mejor para tu aplicación. Puedes probar diferentes opciones:
- Recovery techniques
- Modelos LLM, temperaturas, etc.
- Indicaciones de LLM
- Modelados de incrustación
- Sea cual sea la configuración que mejor funcione para su aplicación, pulse «Crear aplicación» y se implementará un punto final de API para su aplicación. Puedes ir a la pestaña «Aplicaciones» para ver todas las aplicaciones implementadas.
Conclusión
Este tutorial demostró cómo crear una aplicación RAG lista para la producción con Cognita y MongoDB en solo 10 minutos. La sinergia entre la adaptabilidad y facilidad de uso de Cognita y el modelo de documentos flexible de MongoDB con búsqueda vectorial ofrece una base sólida para crear aplicaciones de IA avanzadas.
TrueFoundry AI Gateway ofrece una latencia de entre 3 y 4 ms, gestiona más de 350 RPS en una vCPU, se escala horizontalmente con facilidad y está listo para la producción, mientras que LitellM presenta una latencia alta, tiene dificultades para superar un RPS moderado, carece de escalado integrado y es ideal para cargas de trabajo ligeras o de prototipos.
La forma más rápida de crear, gobernar y escalar su IA



















.png)


.webp)




.webp)







