Luthor: Ein legales Lappensystem
Überblick
Luthor ist ein RAG-System (Retrieval-Augmented Generation), das für Anwaltskanzleien entwickelt wurde, mit denen Anwälte effizient "mit ihren Daten sprechen" können. Dieses System ermöglicht es Rechtsangehörigen, Dokumente (z. B. Memos) in eine in Pinecone gespeicherte Vektordatenbank hochzuladen und diese Informationen anschließend mit einer mit Streamlit erstellten Chatbot-ähnlichen Schnittstelle abzufragen.
Merkmale
- Upload und Verarbeitung von Dokumenten (unterstützt .txt-, .pdf- und .docx -Dateien)
- Textvorverarbeitung und Segmentierung
- Vektor -Einbettung der Erzeugung mit OpenAIs API
- Effizienter Speicher und Abruf von Dokumenten mit Pinecone
- Schnittstelle für natürliche Sprachabfrage
- Kontextbewusste Antwortgenerierung
Komponenten
- Datenloader (
src/data_loader.py ): Handle das Lesen verschiedener Dateiformate. - Präprozessor (
src/preprocessor.py ): Vorbereitet Text zum Einbetten und Speicher. - Hauptanwendung (
app.py ): Streamlit -Schnittstelle für das Hochladen und Abfragen von Dokumenten. - OpenAI -Dienstprogramme : API -Interaktionen für Einbettungen und Antwortgenerierung.
- Pnecone -Dienstprogramme : Verwaltet Vektordatenbankvorgänge.
Systemarchitektur
Luthor wird mit einer Containerarchitektur auf AWS eingesetzt:
- Amazon ECS (Elastic Container Service) mit Fargate: Leitet den Luthor -Anwendungscontainer.
- Amazon ECR (Elastic Container Registry) : Speichert das Docker -Bild für die Luthor -Anwendung.
- Anwendungslastausgleich : Verteilt eingehenden Verkehr über mehrere Instanzen hinweg.
- AWS Secrets Manager : Speichert und verwaltet API -Schlüssel sicher und verwaltet.
AWS -Infrastruktur
- ECS -Cluster: Verwaltet die Fargate -Aufgaben, die die Luthor -Container ausführen.
- ECR -Repository: Host das Luthor Docker -Bild.
- Anwendungslastbalancer: Routet den Verkehr zu den ECS -Aufgaben.
- VPC- und Sicherheitsgruppen: Bieten Sie die Isolation und Sicherheit von Netzwerken.
- IAM -Rollen: Verwalten Sie Berechtigungen für ECS -Aufgaben und andere AWS -Dienste.
Aufstellen
Voraussetzungen
- AWS -Konto
- AWS CLI mit geeigneten Berechtigungen konfiguriert
- Docker lokal installiert
Installation
Klonen Sie das Repository:
git clone https://github.com/boemer00/luthor.git
cd luthor
Erstellen Sie das Docker -Bild:
Drücken Sie das Bild zu Amazon ECR:
aws ecr get-login-password --region [your-region] | docker login --username AWS --password-stdin [your-account-id].dkr.ecr.[your-region].amazonaws.com
docker tag luthor:latest [your-account-id].dkr.ecr.[your-region].amazonaws.com/luthor:latest
docker push [your-account-id].dkr.ecr.[your-region].amazonaws.com/luthor:latest
Richten Sie AWS Secrets Manager ein: Erstellen Sie Secrets für OpenAI_API_KEY, PineCone_API_Key und PineCone_Environment.
Stellen Sie die ECS -Aufgabendefinition ein:
aws ecs register-task-definition --cli-input-json file://infrastructure/ecs-task-definition.json
Erstellen Sie einen ECS -Dienst:
aws ecs create-service --cluster [your-cluster-name] --service-name luthor-service --task-definition luthor-app --desired-count 1 --launch-type FARGATE --network-configuration "awsvpcConfiguration={subnets=[subnet-xxxxxxxx,subnet-yyyyyyyy],securityGroups=[sg-xxxxxxxxxxxxxxxx]}" --load-balancers "targetGroupArn=arn:aws:elasticloadbalancing:[region]:[account-id]:targetgroup/[target-group-name]/[target-group-id],containerName=luthor-app,containerPort=8501"
Verwendung
Greifen Sie über den DNS -Namen des Anwendungslastausgleichs auf die Luthor -Anwendung zu.
Dokument -Upload :
- Verwenden Sie den Datei -Uploader in der Schnittstelle, um Rechtsdokumente hochzuladen (.txt, .pdf oder .docx).
- Das System verarbeitet das Dokument, generiert Einbettungen und speichert es in Tinecone.
Abfrage :
- Geben Sie Ihre rechtliche Abfrage in das Feld Texteingabe ein.
- Optional verwenden Sie die Seitenleiste, um Ihre Suche nach Datumsbereich, Dokumenttyp oder Rechtsbereich zu verfeinern.
- Das System ruft relevante Dokumentbrocken ab, generiert eine Antwort und zeigt sie zusammen mit Quellinformationen an.
Einschränkungen und zukünftige Verbesserungen
- Derzeit behandelt das System keine Dokumentdeduplizierung effektiv.
- Die Optionen für die Verfeinerung der Suchverfeinerung (Datumsbereich, Dokumenttyp, Rechtsbereich) sind im Backend nicht vollständig implementiert.
- Die Fehlerbehebung und -protokollierung können für ein besseres Debuggen und ein besseres Feedback der Benutzer verbessert werden.
- Das System könnte von fortgeschritteneren NLP -Techniken profitieren, um den rechtlichen Kontext besser zu verstehen.
- Erwägen Sie, die automatische Skalierung für den ECS-Dienst basierend auf Verkehrsmustern zu implementieren.
- Implementieren Sie eine CI/CD -Pipeline für automatisierte Bereitstellungen.
Lizenz
Alle Rechte vorbehalten.
Dieser Code und alle zugehörigen Dateien sind die exklusive Eigenschaft von Renato Boemer. Kein Teil dieses Codes kann in irgendeiner Form oder auf irgendeine Weise kopiert, reproduziert, modifiziert, angepasst, in einem Abrufsystem gespeichert oder ohne vorherige schriftliche Genehmigung von Renato Boemer übertragen werden.