? Sistema de trapo de búsqueda de vectores
Un sofisticado sistema de recomendación de películas que utiliza capacidades de búsqueda de vectores y trapo (generación aumentada de recuperación), impulsada por los transformadores de oraciones de Huggingface y el atlas de MongoDB.
? Características
- Búsqueda semántica : utiliza incrustaciones de oraciones para búsquedas de películas significativas
- Base de datos vectorial : aprovecha las capacidades de búsqueda de vectores de MongoDB Atlas
- Procesamiento en tiempo real : genere integridades sobre la marcha utilizando la API de Huggingface
- Recuperación eficiente : recomendaciones de películas rápidas y precisas basadas en descripciones de la trama
Estructura de proyectos
Vector-Search-RaG/
├── apps/
│ └── semantic_search/
│ ├── __init__.py
│ ├── hf_connection.py # HuggingFace API connection
│ ├── mongo_connection.py # MongoDB connection handler
│ └── movie_recs.py # Movie recommendation logic
├── ragenv/ # Virtual environment
├── LICENSE
└── README.md
Empezando
Requisitos previos
- Python 3.8 o superior
- Cuenta de Atlas de MongoDB
- Token de API de Huggingface
- Pip (Python Package Manager)
Configuración del medio ambiente
- Clon el repositorio:
git clone https://github.com/yourusername/Vector-Search-RaG.git
cd Vector-Search-RaG
- Crear y activar el entorno virtual:
python -m venv ragenv
source ragenv/bin/activate # On Windows: ragenvScriptsactivate
- Instalar dependencias:
pip install pymongo requests python-decouple
- Cree un archivo
.env en el directorio raíz con sus credenciales:
MONGODB_URI = your_mongodb_connection_string
HUGGING_FACE_TOKEN = your_huggingface_token
Componentes de configuración
Conexión HuggingFace ( hf_connection.py )
- Administra conexiones con la API de Huggingface
- Utiliza el modelo
sentence-transformers/all-MiniLM-L6-v2 para generar integridades - Maneja la autenticación de la API y el manejo de errores
Conexión MongoDB ( mongo_connection.py )
- Establece una conexión segura con MongoDB Atlas
- Implementa la seguridad de TLS
- Incluye validación de conexión y manejo de errores
Recomendaciones de películas ( movie_recs.py )
- Implementa la funcionalidad de búsqueda vectorial
- Procesa consultas de películas y genera recomendaciones
- Incluye servicios públicos para obtener y actualizar los datos de las películas
? Uso
Ejemplo de búsqueda básica
from apps . semantic_search . movie_recs import search_movies
# Search for movies with a specific plot description
query = "A group of bandits stage a brazen train hold-up"
search_movies ( query )
Actualizar datos de la película
from apps . semantic_search . movie_recs import fetch_and_update_movies
# Fetch and update movie information
fetch_and_update_movies ()
Detalles de búsqueda de vectores
El sistema utiliza la agregación $vectorSearch de MongoDB para la búsqueda semántica:
- Genera incrustaciones utilizando el transformador de oraciones de Huggingface
- Búsquedas contra incrustaciones de trama precomputadas almacenadas en MongoDB
- Devuelve las películas más semánticamente similares basadas en descripciones de la trama
Características de seguridad
- Cifrado TLS para conexiones MongoDB
- Manejo de token API seguro a través de variables de entorno
- Validación de certificado para conexiones seguras
️ Notas importantes
- Asegúrese de que su clúster MongoDB Atlas tenga habilitado la capacidad de búsqueda vectorial
- La API de Huggingface tiene límites de velocidad: considere implementar almacenamiento en caché para el uso de producción
- Mantenga su archivo
.env seguro y nunca lo comprometa al control de versiones
? Consideraciones de rendimiento
- El sistema utiliza
numCandidates: 100 para una amplia cobertura de búsqueda - Los resultados se limitan a 4 películas por consulta para un tiempo de respuesta óptimo
- Índice de búsqueda vectorial "PlotSemanticSearch" debe configurarse correctamente en MongoDB
? Que contribuye
- Bifurca el repositorio
- Cree su rama de características (
git checkout -b feature/AmazingFeature ) - Comprometer sus cambios (
git commit -m 'Add some AmazingFeature' ) - Push to the Branch (
git push origin feature/AmazingFeature ) - Abra una solicitud de extracción
Licencia
Este proyecto tiene licencia bajo los términos del archivo de licencia incluido en el repositorio.