Luthor: sistem kain legal
Ringkasan
Luthor adalah sistem Generasi Pengambilan (RAG) yang dirancang untuk firma hukum untuk memungkinkan pengacara untuk "berbicara dengan data mereka" secara efisien. Sistem ini memungkinkan para profesional hukum untuk mengunggah dokumen (misalnya, memo) ke database vektor yang disimpan di Pinecone dan selanjutnya menanyakan informasi ini menggunakan antarmuka seperti chatbot yang dibangun dengan streamLit.
Fitur
- Dokumen Unggah dan Pemrosesan (mendukung .txt, .pdf, dan file .docx)
- Preprocessing dan segmentasi teks
- Vektor Generasi Embedding Menggunakan API Openai
- Penyimpanan dan pengambilan dokumen yang efisien menggunakan Pinecone
- Antarmuka permintaan bahasa alami
- Generasi jawaban yang sadar konteks
Komponen
- Loader Data (
src/data_loader.py ): Menangani Membaca Berbagai Format File. - Preprocessor (
src/preprocessor.py ): Mempersiapkan teks untuk penyematan dan penyimpanan. - Aplikasi Utama (
app.py ): Antarmuka StreamLit untuk mengunggah dan permintaan dokumen. - Utilitas Openai : Menangani Interaksi API untuk Embeddings dan Generasi Jawaban.
- Pinecone Utilities : Mengelola operasi basis data vektor.
Arsitektur Sistem
Luthor dikerahkan pada AWS menggunakan arsitektur yang dikemas:
- Amazon ECS (layanan wadah elastis) dengan Fargate: menjalankan wadah aplikasi Luthor.
- Amazon ECR (Elastic Container Registry) : Menyimpan gambar Docker untuk aplikasi Luthor.
- Balancer beban aplikasi : mendistribusikan lalu lintas yang masuk di berbagai contoh.
- AWS Secrets Manager : Dengan aman menyimpan dan mengelola kunci API.
Infrastruktur AWS
- ECS Cluster: Mengelola tugas Fargate yang menjalankan wadah Luthor.
- Repositori ECR: Host gambar Luthor Docker.
- Balancer beban aplikasi: Rute lalu lintas ke tugas ECS.
- VPC dan Grup Keamanan: Memberikan isolasi dan keamanan jaringan.
- Peran IAM: Kelola izin untuk tugas ECS dan layanan AWS lainnya.
Pengaturan
Prasyarat
- Akun AWS
- AWS CLI dikonfigurasi dengan izin yang sesuai
- Docker dipasang secara lokal
Instalasi
Klon Repositori:
git clone https://github.com/boemer00/luthor.git
cd luthor
Bangun gambar Docker:
Dorong gambar ke 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
Mengatur AWS Secrets Manager: Buat rahasia untuk openai_api_key, pinecone_api_key, dan pinecone_environment.
Menyebarkan definisi tugas ECS:
aws ecs register-task-definition --cli-input-json file://infrastructure/ecs-task-definition.json
Buat Layanan 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"
Penggunaan
Akses aplikasi Luthor melalui nama DNS Load Balancer Application.
Unggah dokumen :
- Gunakan pengunggah file di antarmuka untuk mengunggah dokumen hukum (.txt, .pdf, atau .docx).
- Sistem akan memproses dokumen, menghasilkan embeddings, dan menyimpannya di Pinecone.
Permintaan :
- Masukkan kueri hukum Anda di bidang input teks.
- Secara opsional, gunakan sidebar untuk memperbaiki pencarian Anda berdasarkan rentang tanggal, jenis dokumen, atau area hukum.
- Sistem akan mengambil potongan dokumen yang relevan, menghasilkan jawaban, dan menampilkannya bersama dengan informasi sumber.
Keterbatasan dan perbaikan di masa depan
- Saat ini, sistem tidak menangani deduplikasi dokumen secara efektif.
- Opsi penyempurnaan pencarian (rentang tanggal, jenis dokumen, area hukum) tidak sepenuhnya diimplementasikan di backend.
- Penanganan dan pencatatan kesalahan dapat ditingkatkan untuk debugging dan umpan balik pengguna yang lebih baik.
- Sistem ini dapat memperoleh manfaat dari teknik NLP yang lebih maju untuk pemahaman yang lebih baik tentang konteks hukum.
- Pertimbangkan menerapkan penskalaan otomatis untuk layanan ECS berdasarkan pola lalu lintas.
- Menerapkan pipa CI/CD untuk penyebaran otomatis.
Lisensi
Semua hak dilindungi undang -undang.
Kode ini dan semua file terkait adalah properti eksklusif Renato Boemer. Tidak ada bagian dari kode ini, dalam bentuk apa pun atau dengan cara apa pun, dapat disalin, direproduksi, dimodifikasi, diadaptasi, disimpan dalam sistem pengambilan, atau dikirim tanpa izin tertulis sebelumnya dari Renato Boemer.