Este artículo discute la creación de un sistema de recomendación de películas utilizando una tubería de generación aumentada por recuperación (RAG) y las capacidades de búsqueda vectorial de MongoDB. El objetivo es construir un sistema inteligente y eficiente que entienda las preferencias del usuario y proporcione recomendaciones de películas personalizadas. Al final del artículo, los lectores tendrán un sistema funcional capaz de responder a preguntas específicas, como sugerir una buena película de ciencia ficción sobre inteligencia artificial o una película animada adecuada para adultos.
Una tubería RAG combina las fortalezas de los grandes modelos de lenguaje (LLMs) y la recuperación de datos estructurados, lo que mejora la precisión y la relevancia contextual de las respuestas. MongoDB se elige por su base de datos NoSQL de código abierto, que almacena datos en documentos flexibles y similares a JSON, y por sus robustas capacidades de búsqueda vectorial que manejan eficientemente los datos de películas embebidos.
El proyecto implica varios pasos:
1. Configurar el entorno y cargar un conjunto de datos de películas desde Hugging Face.
2. Modelar datos con Pydantic para asegurar la consistencia y la seguridad de tipos.
3. Generar embebidos para la información de las películas utilizando la API de OpenAI.
4. Ingerir los datos procesados en una base de datos de MongoDB.
5. Crear un índice de búsqueda vectorial en MongoDB Atlas para habilitar búsquedas de similitud.
6. Implementar una función de búsqueda vectorial para encontrar películas relevantes.
7. Manejar consultas del usuario con un LLM, utilizando los resultados de la búsqueda vectorial para generar respuestas contextualmente adecuadas.
El artículo proporciona instrucciones detalladas para configurar el entorno, incluyendo la importación de bibliotecas necesarias, la carga del conjunto de datos y la configuración de MongoDB. La modelización de datos con Pydantic implica definir una clase Movie para asegurar la validación y serialización adecuadas de los datos. Los embebidos se generan utilizando el modelo "text-embedding-3-small" de OpenAI, creando embebidos de 1536 dimensiones para búsquedas semánticas.
Los datos se ingieren en MongoDB y se crea un índice de búsqueda vectorial en MongoDB Atlas. Este índice utiliza la similitud coseno para igualar consultas del usuario con descripciones de películas. La función de búsqueda vectorial incluye un mecanismo de reintento para manejar problemas transitorios y utiliza la tubería de agregación de MongoDB para recuperar películas relevantes.
Las consultas del usuario se procesan generando embebidos para la consulta, realizando una búsqueda vectorial y utilizando el modelo GPT-3.5-turbo de OpenAI para generar respuestas basadas en los resultados de la búsqueda. El artículo concluye mostrando cómo el sistema puede recomendar películas y proporcionar razones para las recomendaciones.
La flexibilidad del sistema permite futuras expansiones, como agregar más datos, afinar embebidos o implementar algoritmos de recomendación avanzados. El código completo y los recursos están disponibles en GitHub, y el conjunto de datos utilizado se obtuvo de Kaggle, con dedicación al dominio público. El proyecto ejemplifica el poder de combinar MongoDB y tuberías RAG para crear sistemas de recomendación personalizados y eficientes.
towardsdatascience.com
Building a RAG Pipeline with MongoDB: Vector Search for Personalized Movie Picks
Create attached notes ...