Luthor: un système de chiffon légal
Aperçu
Luthor est un système de génération (RAG) de la récupération conçue pour que les cabinets d'avocats permettent aux avocats de "parler efficacement de leurs données". Ce système permet aux professionnels du droit de télécharger des documents (par exemple, Memos) dans une base de données vectorielle stockée dans PineCone et de demander par la suite ces informations à l'aide d'une interface de type chatbot construite avec Streamlit.
Caractéristiques
- Document Téléchargez et traitement (prend en charge les fichiers .txt, .pdf et .docx)
- Prétraitement du texte et segmentation
- Génération d'intégration de vecteur à l'aide de l'API d'Openai
- Stockage et récupération de documents efficaces à l'aide de Pinecone
- Interface de requête en langue naturelle
- Génération de réponse au contexte
Composants
- Data Loder (
src/data_loader.py ): gère la lecture de divers formats de fichiers. - Prérocesseur (
src/preprocessor.py ): Prépare le texte pour l'incorporation et le stockage. - Application principale (
app.py ): interface rationalisée pour le téléchargement de documents et la requête. - Utilitaires OpenAI : gère les interactions API pour les intégres et la génération de réponses.
- Utilitaires PineCone : gère les opérations de base de données vectorielles.
Architecture du système
Luthor est déployé sur AWS à l'aide d'une architecture conteneurisée:
- Amazon ECS (Elastic Container Service) avec Fargate: exécute le conteneur de l'application Luthor.
- Amazon ECR (Elastic Container Registry) : stocke l'image Docker pour l'application Luthor.
- Équilibreur de chargement d'application : distribue un trafic entrant sur plusieurs instances.
- AWS Secrets Manager : Securely stocke et gère en toute sécurité les clés de l'API.
Infrastructure AWS
- Cluster ECS: gère les tâches Fargate exécutant les conteneurs Luthor.
- ECR Repository: héberge l'image Luthor Docker.
- Équilibreur de chargement d'application: achemine le trafic vers les tâches ECS.
- VPC et groupes de sécurité: assurez-vous l'isolement et la sécurité du réseau.
- Rôles IAM: Gérer les autorisations pour les tâches ECS et autres services AWS.
Installation
Condition préalable
- Compte AWS
- AWS CLI configuré avec des autorisations appropriées
- Docker installé localement
Installation
Clone le référentiel:
git clone https://github.com/boemer00/luthor.git
cd luthor
Construisez l'image Docker:
Poussez l'image vers 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
Configurez AWS Secrets Manager: Créez des secrets pour OpenAI_API_KEY, PineCone_API_KEY et PineCone_environment.
Déployer la définition de la tâche ECS:
aws ecs register-task-definition --cli-input-json file://infrastructure/ecs-task-definition.json
Créer un service ECS:
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"
Usage
Accédez à l'application Luthor via le nom DNS de l'équilibreur de chargement de l'application.
Téléchargement de documents :
- Utilisez le téléchargeur de fichiers dans l'interface pour télécharger des documents juridiques (.txt, .pdf ou .docx).
- Le système traitera le document, génèrera des intégres et les stockera en pinone.
Requête :
- Entrez votre requête juridique dans le champ de saisie du texte.
- Facultativement, utilisez la barre latérale pour affiner votre recherche par plage de dates, type de document ou zone juridique.
- Le système récupérera des morceaux de document pertinents, génèrera une réponse et les affichera avec les informations source.
Limitations et améliorations futures
- Actuellement, le système ne gère pas efficacement la déduplication des documents.
- Les options de raffinement de recherche (plage de dates, type de document, zone juridique) ne sont pas entièrement implémentées dans le backend.
- La gestion des erreurs et la journalisation pourraient être améliorées pour un meilleur débogage et des commentaires des utilisateurs.
- Le système pourrait bénéficier de techniques de PNL plus avancées pour une meilleure compréhension du contexte juridique.
- Envisagez d'implémenter la mise à l'échelle automatique pour le service ECS en fonction des modèles de trafic.
- Implémentez un pipeline CI / CD pour les déploiements automatisés.
Licence
Tous droits réservés.
Ce code et tous les fichiers associés sont la propriété exclusive de Renato Boemer. Aucune partie de ce code, sous quelque forme que ce soit ou par aucun moyen, ne peut être copiée, reproduite, modifiée, adaptée, stockée dans un système de récupération ou transmise sans l'autorisation écrite préalable de Renato Boemer.