Skip to content

AVG-Team/VN-Law

Repository files navigation

Open issues Open Pull Requests Commit activity GitHub contributors

VN-LAW Demo Documentation

Bug Report ⚠️

Request Feature 👩‍💻

Ứng dụng hỗ trợ tra cứu, hỏi đáp tri thức pháp luật dựa trên Bộ pháp điển và CSDL văn bản QPPL Việt Nam.

Mục tiêu là phát triển một hệ thống tra cứu, hỏi đáp tri thức pháp luật Việt Nam. Dựa trên các mô hình ngôn ngữ lớn cùng với kiến trúc microservices.

Dự án được thực hiện trong cuộc thi Phần Mềm Nguồn Mở-Olympic Tin học Sinh viên Việt Nam 2023. Được được open source theo giấy phép GNU General Public License v3.0 bởi đội tác giả CTU-LinguTechnies.

Để biết thêm chi tiết về cuộc thi, bạn có thể xem tại đây.

Link thuyết trình Canva tại cuộc thi link

Slide bài thuyết trình tại cuộc thi dưới dạng PDF có thể được truy cập tại đây: Slide

🔎 Danh Mục

  1. Giới Thiệu
  2. Chức Năng
  3. Tổng Quan Hệ Thống
  4. Cấu Trúc Thư Mục
  5. Hướng Dẫn Cài Đặt
  6. CI/CD
  7. 🙌 Đóng Góp
  8. 📝 License

Giới Thiệu

  • Pháp điển là tập hợp các quy phạm pháp luật đang còn hiệu lực của các văn bản quy phạm pháp luật do cơ quan nhà nước ở trung ương ban hành, từ Thông tư trở lên và trừ Hiến pháp.
  • Cơ sở dữ liệu văn bản quy phạm pháp luật Việt Nam được xây dựng từ năm 2000, bao gồm các văn bản quy phạm pháp luật từ năm 1990 đến nay. Cơ sở dữ liệu này được cập nhật thường xuyên, đảm bảo tính toàn vẹn, đầy đủ và chính xác của các văn bản quy phạm pháp luật.
  • Tuy nhiên, do việc cập nhật không thường xuyên của pháp điển so với các văn bản quy phạm pháp luật, nên pháp điển hiện tại không đảm bảo tính toàn vẹn, đầy đủ và chính xác của các văn bản quy phạm pháp luật.

Chức Năng Chính

Project tập trung vào các chức năng chính như sau:

  • 🤖 Trả lời các câu hỏi về pháp luật của người dùng.
  • 🔍 Hệ thống tra cứu các pháp điển, văn bản quy phạm pháp luật: chỉ mục, liên kết các điều mục, các bảng và biểu mẫu.
  • 📖 Tóm tắt văn bản, hỗ trợ người dùng trong lúc tra cứu.
  • 📝 Gợi ý văn bản quy phạm pháp luật theo từ khóa tìm kiếm, nhận đóng góp để cải thiện gợi ý.

👩‍💻 Tổng Quan Hệ Thống

Backend của hệ thống được thiết kế theo kiến trúc microservices, với các công nghệ sử dụng như sau:

  • ReactJS: Xây dựng web-app.
  • SpringBoot: Dựng API cho Law Service, Authentication Service, Chat Service, Api Gateway, Crawl,...
  • LangChain: Sử dụng để truy vấn các context là tri thức luật.
  • MySQL: Cơ sở dữ liệu quan hệ.
  • Redis: Cơ sở dữ liệu NoSQL in-memory dạng key-value.
  • ChromaDB: Cơ sở dữ liệu embedding dạng vector.
  • RabbitMQ: Message broker cho hệ thống.
  • Docker: Containerize các service.
  • Docker Compose: Quản lý các container.
  • Prometheus: Monitor các metrics.
  • Grafana: WebUI hiển thị metrics.
  • Transformer.js: Thư viện transformer cho JS, load trực tiếp trên trình duyệt web.

Architecture

RAG

Hệ thống Tăng Cường Trí Tuệ (RAG) đại diện cho một mô hình đổi mới tiên tiến tận dụng sức mạnh kết hợp của ChatGPT Api, LangChainWeaviate. Sự tích hợp tinh vi này cho phép sự kết hợp hài hòa giữa việc truy xuất thông tin và tạo nội dung, tạo ra các kết quả không chỉ chính xác và mạch lạc mà còn đầy sáng tạo và sâu sắc.

rag-perform

Thiết kế Hệ thống hỏi đáp như hình vẽ bên dưới: Kiến trúc hệ thống hỏi đáp

CI/CD

Project CI/CD sử dụng Github và Github Actions để tự động hóa quá trình build và deploy. Quy trình như hình vẽ sau:

CI/CD

Cấu trúc thư mục

  • API Gateway - Crawl vào CSDL từ nguồn pháp điển Việt Nam.

  • Authorization Service - Dịch vụ xác thực.

  • Chat Service - Dịch vụ cung cấp thông tin Pháp Luật.

  • Law Service - Dịch vụ quản lý dữ liệu pháp điển và văn bản quy phạm pháp luật.

  • Crawl - Crawl vào CSDL từ nguồn pháp điển Việt Nam.

  • Web - Giao diện người dùng.

Hướng Dẫn Cài Đặt

Yêu Cầu 📋

Để cài đặt và chạy được dự án, trước tiên bạn cần phải cài đặt các công cụ bên dưới. Hãy thực hiện theo các hướng dẫn cài đặt sau, lưu ý chọn hệ điều hành phù hợp với máy tính của bạn:

🔨 Cài Đặt

Trước hết, hãy clone dự án về máy tính của bạn:

git clone https://github.com/AVG-Team/VN-Law.git

Chạy crawl lấy dữ liệu pháp điển và các văn bản quy phạm pháp luật (optional):

Bước này chỉ cần chạy một lần duy nhất để lấy dữ liệu pháp điển và các văn bản quy phạm pháp luật vào cơ sở dữ liệu MySQL. Nếu bạn đã có dữ liệu, bạn có thể bỏ qua bước này và tự import vào hệ thống với hướng dẫn phía dưới.

Để cào dữ liệu, hãy:

cd crawl

Và tiếp tục theo hướng dẫn trong thư mục crawl README.md.

PORT BINDING

  • Sau khi chạy xong, các service sẽ được chạy trên các port như sau:
Service PORT
API Gateway 9000
Auth Service 9001
Law Service 9002
Chat Service 9003
Recommendation Service 9004

Chạy web-app

  • Đầu tiên, cd vào thư mục web:
cd front-end/website
  • Cài đặt các thư viện cần thiết:
npm -i
  • Chạy web-app development mode:
npm start

Lúc này web-app sẽ chạy ở địa chỉ http://localhost:3000.

🙌 Đóng góp cho dự án

Bug Report ⚠️

Request Feature 👩‍💻

Nếu bạn muốn đóng góp cho dự án, hãy đọc CONTRIBUTING.md để biết thêm chi tiết.

Mọi đóng góp của các bạn đều được trân trọng, đừng ngần ngại gửi pull request cho dự án.

Liên hệ

📝 License

This project is licensed under the terms of the GPL V3 license.