? Système de chiffon de recherche vectorielle
Un système de recommandation de film sophistiqué utilisant des capacités de recherche vectorielle et de chiffon (génération augmentée de récupération), alimentée par les transformateurs de phrase de Huggingface et MongoDB Atlas.
? Caractéristiques
- Recherche sémantique : utilise des intérêts de phrases pour des recherches de films significatives
- Base de données vectorielle : exploite les capacités de recherche vectorielle de Mongodb Atlas
- Traitement en temps réel : générer des intégres à la volée à l'aide de l'API de HuggingFace
- Récupération efficace : recommandations de films rapides et précises basés sur les descriptions de l'intrigue
Structure du projet
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
Commencer
Condition préalable
- Python 3,8 ou plus
- Compte MongoDB Atlas
- Token API HuggingFace
- PIP (Python Package Manager)
Configuration de l'environnement
- Clone le référentiel:
git clone https://github.com/yourusername/Vector-Search-RaG.git
cd Vector-Search-RaG
- Créer et activer l'environnement virtuel:
python -m venv ragenv
source ragenv/bin/activate # On Windows: ragenvScriptsactivate
- Installez les dépendances:
pip install pymongo requests python-decouple
- Créez un fichier
.env dans le répertoire racine avec vos informations d'identification:
MONGODB_URI = your_mongodb_connection_string
HUGGING_FACE_TOKEN = your_huggingface_token
Composants de configuration
Connexion HuggingFace ( hf_connection.py )
- Gère les connexions à l'API de HuggingFace
- Utilise le modèle
sentence-transformers/all-MiniLM-L6-v2 pour générer des intérêts - Gère l'authentification de l'API et la gestion des erreurs
Connexion MongoDB ( mongo_connection.py )
- Établit une connexion sécurisée à MongoDB Atlas
- Implémente la sécurité TLS
- Comprend la validation de la connexion et la gestion des erreurs
Recommandations de film ( movie_recs.py )
- Implémente la fonctionnalité de recherche vectorielle
- Traite les requêtes cinématographiques et génère des recommandations
- Comprend des services publics pour récupérer et mettre à jour les données cinématographiques
? Usage
Exemple de recherche de base
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 )
Mettre à jour les données du film
from apps . semantic_search . movie_recs import fetch_and_update_movies
# Fetch and update movie information
fetch_and_update_movies ()
Détails de recherche vectorielle
Le système utilise l'agrégation $vectorSearch de MongoDB pour la recherche sémantique:
- Génère des incorporations à l'aide du transformateur de phrase de Huggingface
- Recherches contre des intrants pré-calculés stockés dans MongoDB
- Renvoie les films les plus similaires sémantiquement en fonction des descriptions de l'intrigue
Fonctionnalités de sécurité
- Encryption TLS pour les connexions MongoDB
- Sécréter la gestion des jetons API via des variables d'environnement
- Validation du certificat pour les connexions sécurisées
️ Notes importantes
- Assurez-vous que votre cluster MongoDB Atlas a une capacité de recherche de vecteur activée
- L'API Huggingface a des limites de taux - envisagez de mettre en œuvre la mise en cache pour une utilisation en production
- Gardez votre fichier
.env sécurisé et ne vous engagez jamais au contrôle de version
? Considérations de performance
- Le système utilise
numCandidates: 100 pour une large couverture de recherche - Les résultats sont limités à 4 films par requête pour un temps de réponse optimal
- Index de recherche vectorielle "PloteSanticsearch" doit être correctement configuré dans MongoDB
? Contributif
- Fourchez le référentiel
- Créez votre branche de fonctionnalité (
git checkout -b feature/AmazingFeature ) - Commissez vos modifications (
git commit -m 'Add some AmazingFeature' ) - Push to the Branch (
git push origin feature/AmazingFeature ) - Ouvrir une demande de traction
Licence
Ce projet est sous licence en vertu des termes du fichier de licence inclus dans le référentiel.