Dokumentenvergleichssystem mit RAG
Ein auf Retrieval Augmented Generation (RAG) basierendes System zur Durchführung kontextbezogener Vergleiche zwischen zwei Dokumenten. Dieses System verwendet Azure OpenAI für die Sprachverarbeitung und -einbettung, ChromaDB für die Vektorspeicherung, FastAPI für das Backend und Streamlit für die Benutzeroberfläche.
Merkmale
- Mehrere Dokumentformate hochladen und verarbeiten (PDF, DOCX, TXT)
- RAG-basierter Dokumentenvergleich mit semantischer Suche
- Interaktive Weboberfläche mit direkter Vergleichsansicht
- Benutzerdefinierte Vergleichsabfragen
- Vergleichsergebnisse zum Herunterladen
- Effiziente Dokumentenaufteilung und -verarbeitung
- Vektorspeicherung mit ChromaDB
- REST-API-Backend mit FastAPI
Voraussetzungen
- Python 3.8+
- Zugriff auf die Azure OpenAI-API
- Ausreichend Speicherplatz für die Vektordatenbank
Installation
- Klonen Sie das Repository:
git clone < repository-url >
cd document-comparison-system
- Installieren Sie die erforderlichen Pakete:
pip install -r requirements.txt
- Erstellen Sie im Projektstamm eine
.env
Datei mit Ihren Azure OpenAI-Anmeldeinformationen:
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
Projektstruktur
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
Ausführen der Anwendung
- Starten Sie den Backend-Server:
- Starten Sie in einem neuen Terminal das Streamlit-Frontend:
- Öffnen Sie Ihren Browser und navigieren Sie zu
http://localhost:8501
um auf die Anwendung zuzugreifen.
Verwendung
Dokumente hochladen:
- Verwenden Sie die Datei-Upload-Widgets, um zwei Dokumente zum Vergleich hochzuladen
- Unterstützte Formate: PDF, DOCX, TXT
- Warten Sie auf die Bearbeitungsbestätigung
Dokumente vergleichen:
- Sobald beide Dokumente hochgeladen sind, können Sie den Vergleich starten
- Geben Sie optional eine benutzerdefinierte Vergleichsabfrage ein
- Klicken Sie auf „Dokumente vergleichen“, um die Analyse zu erstellen
Ergebnisse anzeigen:
- Die Vergleichsergebnisse werden in drei Registerkarten angezeigt:
- Vergleich: Gesamtanalyse
- Auszüge aus Dokument 1: Relevante Segmente aus dem ersten Dokument
- Auszüge aus Dokument 2: Relevante Segmente aus dem zweiten Dokument
- Laden Sie die vollständigen Ergebnisse als JSON-Datei herunter
Zurücksetzen:
- Verwenden Sie die Schaltfläche „Zurücksetzen“, um die aktuelle Sitzung zu löschen und von vorne zu beginnen
API-Endpunkte
Das FastAPI-Backend stellt die folgenden Endpunkte bereit:
POST/hochladen
Laden Sie ein einzelnes Dokument hoch und verarbeiten Sie es.
- Anfrage: Mehrteilige Formulardaten mit Datei
- Antwort: Dokument-ID und Erfolgsmeldung
POST /vergleichen
Vergleichen Sie zwei Dokumente.
- Parameter:
- doc1_id: ID des ersten Dokuments
- doc2_id: ID des zweiten Dokuments
- Abfrage: Optionale benutzerdefinierte Vergleichsabfrage
- Antwort: Vergleichsergebnisse inklusive Analyse und relevanten Auszügen
Konfiguration
Wichtige Konfigurationseinstellungen in config.py
:
-
CHUNK_SIZE
: Größe der Dokumentblöcke (Standard: 1000) -
CHUNK_OVERLAP
: Überlappung zwischen Chunks (Standard: 200) -
SUPPORTED_FILES
: Liste der unterstützten Dateitypen -
CHROMA_PERSIST_DIRECTORY
: Speicherort für die Speicherung der Vektordatenbank
Technische Details
Dokumentenverarbeitung
- Dokumente werden mithilfe von RecursiveCharacterTextSplitter in Blöcke aufgeteilt
- Der Text wird vorverarbeitet, um Sonderzeichen zu entfernen und Leerzeichen zu normalisieren
- Jeder Block wird mithilfe von Azure OpenAI-Einbettungen eingebettet
- Chunks werden in ChromaDB mit Dokumentmetadaten gespeichert
RAG-Implementierung
- Verwendet die Ähnlichkeitssuche, um relevante Abschnitte aus beiden Dokumenten zu finden
- Implementiert die Hybridsuche über die Suchfunktionen von ChromaDB
- Benutzerdefinierte Eingabeaufforderungen zum Generieren einer vergleichenden Analyse
- Konfigurierbare Abrufparameter
Vektorspeicher
- ChromaDB wird für die effiziente Speicherung und den Abruf von Vektoren verwendet
- Persistente Speicherung ermöglicht die Zwischenspeicherung verarbeiteter Dokumente
- Metadatenfilterung für dokumentspezifische Suchen
Fehlerbehandlung
Das System umfasst eine umfassende Fehlerbehandlung für:
- Nicht unterstützte Dateitypen
- Verarbeitungsfehler
- API-Kommunikationsfehler
- Ungültige Dokument-IDs
Zukünftige Verbesserungen
Mögliche Verbesserungen:
- Unterstützung für weitere Dateiformate
- Erweiterte Reranking-Algorithmen
- Multimodaler Dokumentenvergleich
- Benutzerauthentifizierung
- Vergleichshistorie
- Anspruchsvollere Chunking-Strategien
- Erweiterte Caching-Mechanismen
Mitwirken
Beiträge sind willkommen! Bitte zögern Sie nicht, Pull-Anfragen einzureichen.
Lizenz
Dieses Projekt ist unter der MIT-Lizenz lizenziert – Einzelheiten finden Sie in der LIZENZ-Datei.