Système de comparaison de documents utilisant RAG
Un système basé sur la génération augmentée de récupération (RAG) pour effectuer des comparaisons contextuelles entre deux documents. Ce système utilise Azure OpenAI pour le traitement du langage et les intégrations, ChromaDB pour le stockage vectoriel, FastAPI pour le backend et Streamlit pour l'interface utilisateur.
Caractéristiques
- Téléchargez et traitez plusieurs formats de documents (PDF, DOCX, TXT)
- Comparaison de documents basée sur RAG avec recherche sémantique
- Interface Web interactive avec vue comparative côte à côte
- Requêtes de comparaison personnalisées
- Résultats de comparaison téléchargeables
- Regroupement et traitement efficaces des documents
- Stockage vectoriel avec ChromaDB
- Back-end de l'API REST avec FastAPI
Conditions préalables
- Python3.8+
- Accès à l'API Azure OpenAI
- Espace de stockage suffisant pour la base de données vectorielles
Installation
- Clonez le dépôt :
git clone < repository-url >
cd document-comparison-system
- Installez les packages requis :
pip install -r requirements.txt
- Créez un fichier
.env
à la racine du projet avec vos informations d'identification Azure OpenAI :
AZURE_OPENAI_API_KEY=your_api_key
AZURE_OPENAI_ENDPOINT=your_endpoint
AZURE_DEPLOYMENT_NAME=your_deployment_name
AZURE_EMBEDDINGS_DEPLOYMENT_NAME=your_embeddings_deployment_name
Structure du projet
project_root/
├── app.py # Streamlit frontend
├── backend.py # FastAPI backend
├── processor.py # Document processing and RAG logic
├── config.py # Configuration settings
└── requirements.txt # Project dependencies
Exécution de l'application
- Démarrez le serveur backend :
- Dans un nouveau terminal, démarrez l'interface Streamlit :
- Ouvrez votre navigateur et accédez à
http://localhost:8501
pour accéder à l'application.
Usage
Télécharger des documents :
- Utilisez les widgets de téléchargement de fichiers pour télécharger deux documents à des fins de comparaison
- Formats pris en charge : PDF, DOCX, TXT
- Attendez la confirmation du traitement
Comparez les documents :
- Une fois les deux documents téléchargés, vous pouvez lancer la comparaison
- Saisissez éventuellement une requête de comparaison personnalisée
- Cliquez sur "Comparer les documents" pour générer l'analyse
Afficher les résultats :
- Les résultats de la comparaison sont affichés dans trois onglets :
- Comparaison : analyse globale
- Extraits du document 1 : segments pertinents du premier document
- Extraits du document 2 : segments pertinents du deuxième document
- Téléchargez les résultats complets sous forme de fichier JSON
Réinitialiser:
- Utilisez le bouton "Réinitialiser" pour effacer la session en cours et recommencer
Points de terminaison de l'API
Le backend FastAPI fournit les points de terminaison suivants :
POST/télécharger
Téléchargez et traitez un seul document.
- Requête : données de formulaire en plusieurs parties avec fichier
- Réponse : ID du document et message de réussite
POST / comparer
Comparez deux documents.
- Paramètres :
- doc1_id : ID du premier document
- doc2_id : ID du deuxième document
- requête : requête de comparaison personnalisée facultative
- Réponse : Résultats de comparaison, y compris analyse et extraits pertinents
Configuration
Paramètres de configuration clés dans config.py
:
-
CHUNK_SIZE
: Taille des fragments de document (par défaut : 1000) -
CHUNK_OVERLAP
: Chevauchement entre les morceaux (par défaut : 200) -
SUPPORTED_FILES
: Liste des types de fichiers pris en charge -
CHROMA_PERSIST_DIRECTORY
: Emplacement de stockage de la base de données vectorielle
Détails techniques
Traitement des documents
- Les documents sont divisés en morceaux à l'aide de RecursiveCharacterTextSplitter
- Le texte est prétraité pour supprimer les caractères spéciaux et normaliser les espaces
- Chaque morceau est intégré à l'aide des intégrations Azure OpenAI
- Les morceaux sont stockés dans ChromaDB avec les métadonnées du document
Implémentation du RAG
- Utilise la recherche de similarité pour trouver des morceaux pertinents des deux documents
- Implémente la recherche hybride grâce aux capacités de recherche de ChromaDB
- Invites personnalisées pour générer une analyse comparative
- Paramètres de récupération configurables
Stockage vectoriel
- ChromaDB est utilisé pour un stockage et une récupération efficaces de vecteurs
- Le stockage persistant permet la mise en cache des documents traités
- Filtrage des métadonnées pour les recherches spécifiques aux documents
Gestion des erreurs
Le système comprend une gestion complète des erreurs pour :
- Types de fichiers non pris en charge
- Échecs de traitement
- Erreurs de communication API
- ID de document invalides
Améliorations futures
Améliorations potentielles :
- Prise en charge de plus de formats de fichiers
- Algorithmes de reclassement avancés
- Comparaison de documents multimodaux
- Authentification de l'utilisateur
- Historique de comparaison
- Des stratégies de segmentation plus sophistiquées
- Mécanismes de mise en cache avancés
Contribuer
Les contributions sont les bienvenues ! N'hésitez pas à soumettre des demandes de tirage.
Licence
Ce projet est sous licence MIT - voir le fichier LICENSE pour plus de détails.