Luthor: um sistema de pano legal
Visão geral
Luthor é um sistema de geração de recuperação de recuperação (RAG), projetado para escritórios de advocacia para permitir que os advogados "conversem com eficiência" conversem com seus dados ". Este sistema permite que os profissionais do direito enviem documentos (por exemplo, memorandos) para um banco de dados vetorial armazenado no Pinecone e, posteriormente, consulte essas informações usando uma interface semelhante a chatbot construída com o Streamlit.
Características
- Documentar o upload e processamento (suporta arquivos .txt, .pdf e .docx)
- Pré -processamento e segmentação de texto
- Geração de incorporação de vetor usando a API do OpenAi
- Armazenamento e recuperação eficiente de documentos usando Pinecone
- Interface de consulta de linguagem natural
- Geração de respostas com reconhecimento de contexto
Componentes
- Carregador de dados (
src/data_loader.py ): lida com a leitura de vários formatos de arquivo. - Processador (
src/preprocessor.py ): prepara texto para incorporação e armazenamento. - Aplicativo principal (
app.py ): interface do streamlit para upload e consulta de documentos. - Utilitários OpenAI : lida com as interações da API para incorporação e geração de respostas.
- Utilitários Pinecone : gerencia operações de banco de dados vetoriais.
Arquitetura do sistema
Luthor é implantado na AWS usando uma arquitetura de contêiner:
- Amazon ECS (Elastic Container Service) com Fargate: executa o contêiner Luthor Application.
- Amazon ECR (Registro de contêineres elásticos) : armazena a imagem do Docker para o aplicativo Luthor.
- Balanceador de carga do aplicativo : distribui o tráfego recebido em várias instâncias.
- O AWS Secrets Manager : armazena e gerencia com segurança as teclas da API.
Infraestrutura da AWS
- Cluster ECS: gerencia as tarefas Fargate executando os contêineres Luthor.
- Repositório de ECR: hospeda a imagem Luthor Docker.
- Balanceador de carga do aplicativo: rotas o tráfego para as tarefas do ECS.
- VPC e grupos de segurança: Forneça isolamento e segurança da rede.
- Funções do IAM: Gerenciar permissões para tarefas de ECS e outros serviços da AWS.
Configurar
Pré -requisitos
- Conta da AWS
- AWS CLI configurada com permissões apropriadas
- Docker instalado localmente
Instalação
Clone o repositório:
git clone https://github.com/boemer00/luthor.git
cd luthor
Construa a imagem do Docker:
Empurre a imagem para 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
Configurar o AWS Secrets Manager: Crie segredos para openai_api_key, Pinecone_api_key e Pinecone_environment.
Implantar a definição de tarefa do ECS:
aws ecs register-task-definition --cli-input-json file://infrastructure/ecs-task-definition.json
Crie um serviço 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
Acesse o aplicativo Luthor através do nome DNS do Balancer de Carga do Aplicativo.
Upload de documentos :
- Use o upload de arquivo na interface para fazer upload de documentos legais (.txt, .pdf ou .docx).
- O sistema processará o documento, gerará incorporação e os armazenará em Pinecone.
Consulta :
- Digite sua consulta legal no campo de entrada de texto.
- Opcionalmente, use a barra lateral para refinar sua pesquisa por intervalo, tipo de documento ou área legal.
- O sistema recuperará pedaços de documentos relevantes, gerará uma resposta e exibirá -lo junto com as informações de origem.
Limitações e melhorias futuras
- Atualmente, o sistema não lida com a desduplicação de documentos de maneira eficaz.
- As opções de refinamento de pesquisa (intervalo de data, tipo de documento, área legal) não estão totalmente implementadas no back -end.
- O manuseio e o log de erros podem ser aprimorados para melhor depuração e feedback do usuário.
- O sistema pode se beneficiar de técnicas de PNL mais avançadas para uma melhor compreensão do contexto legal.
- Considere a implementação de escala automática para o serviço ECS com base em padrões de tráfego.
- Implementar um pipeline de CI/CD para implantações automatizadas.
Licença
Todos os direitos reservados.
Este código e todos os arquivos associados são de propriedade exclusiva da Renato Boemer. Nenhuma parte deste código, de qualquer forma ou por qualquer meio, pode ser copiada, reproduzida, modificada, adaptada, armazenada em um sistema de recuperação ou transmitida sem a permissão prévia por escrito de Renato Boemer.