Luthor: un sistema de trapo legal
Descripción general
Luthor es un sistema de generación (RAG) de recuperación diseñado para firmas de abogados para permitir a los abogados "hablar de manera eficiente con sus datos". Este sistema permite a los profesionales legales cargar documentos (por ejemplo, memorandos) a una base de datos vectorial almacenada en Pinecone y posteriormente consulte esta información utilizando una interfaz de chatbot construida con Strewlit.
Características
- Carga y procesamiento de documentos (admite archivos .txt, .pdf y .docx)
- Preprocesamiento y segmentación de texto
- La generación de incrustación de vectores utilizando la API de OpenAI
- Almacenamiento y recuperación de documentos eficientes utilizando pinecone
- Interfaz de consulta de lenguaje natural
- Generación de respuestas consciente del contexto
Componentes
- Cargador de datos (
src/data_loader.py ): maneja la lectura de varios formatos de archivo. - Preprocesador (
src/preprocessor.py ): prepara el texto para incrustar y almacenamiento. - Aplicación principal (
app.py ): interfaz de transmisión para la carga y consulta de documentos. - Utilidades de Operai : maneja las interacciones API para incrustaciones y generación de respuestas.
- Utilidades de Pinecone : administra las operaciones de la base de datos vectorial.
Arquitectura del sistema
Luthor se implementa en AWS utilizando una arquitectura contenedora:
- Amazon ECS (servicio de contenedores elásticos) con Fargate: ejecuta el contenedor de aplicaciones Luthor.
- Amazon ECR (Registro de contenedores elásticos) : almacena la imagen Docker para la aplicación Luthor.
- Balancador de carga de aplicación : distribuye el tráfico entrante en múltiples instancias.
- AWS Secrets Manager : almacena y administra las claves API de forma segura.
Infraestructura de AWS
- Cluster ECS: administra las tareas de Fargate que ejecutan los contenedores de Luthor.
- Repositorio de ECR: aloja la imagen de Luthor Docker.
- Balancador de carga de aplicación: enruta el tráfico a las tareas de ECS.
- VPC y grupos de seguridad: proporcionar aislamiento y seguridad de la red.
- Roles IAM: Administre los permisos para tareas de ECS y otros servicios de AWS.
Configuración
Requisitos previos
- Cuenta de AWS
- AWS CLI configurado con permisos apropiados
- Docker instalado localmente
Instalación
Clon el repositorio:
git clone https://github.com/boemer00/luthor.git
cd luthor
Construye la imagen Docker:
Empuje la imagen a 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
Configure AWS Secrets Manager: Crear secretos para OpenAI_API_KEY, PINECONE_API_KEY y PINECOne_environment.
Implementar la definición de la tarea ECS:
aws ecs register-task-definition --cli-input-json file://infrastructure/ecs-task-definition.json
Crea un servicio 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"
Uso
Acceda a la aplicación Luthor a través del nombre DNS del equilibrador de carga de la aplicación.
Carga de documentos :
- Use el cargador de archivos en la interfaz para cargar documentos legales (.txt, .pdf o .docx).
- El sistema procesará el documento, generará incrustaciones y los almacenará en Pinecone.
Consulta :
- Ingrese su consulta legal en el campo de entrada de texto.
- Opcionalmente, use la barra lateral para refinar su rango de búsqueda por fecha, tipo de documento o área legal.
- El sistema recuperará fragmentos de documentos relevantes, generará una respuesta y la mostrará junto con la información de origen.
Limitaciones y mejoras futuras
- Actualmente, el sistema no maneja la deduplicación de documentos de manera efectiva.
- Las opciones de refinamiento de búsqueda (rango de fechas, tipo de documento, área legal) no se implementan completamente en el backend.
- El manejo y el registro de errores podrían mejorarse para una mejor depuración y comentarios de los usuarios.
- El sistema podría beneficiarse de técnicas de PNL más avanzadas para una mejor comprensión del contexto legal.
- Considere la implementación de autoescalado para el servicio ECS basado en patrones de tráfico.
- Implemente una tubería CI/CD para implementaciones automatizadas.
Licencia
Reservados todos los derechos.
Este código y todos los archivos asociados son propiedad exclusiva de Renato Boemer. Ninguna parte de este código, de ninguna forma o de ninguna manera, puede copiarse, reproducirse, modificarse, adaptarse, almacenarse en un sistema de recuperación o transmitido sin el permiso previo por escrito de Renato Boemer.