Code Monkey home page Code Monkey logo

nguyendinhtiem / vn-law-advisor Goto Github PK

View Code? Open in Web Editor NEW

This project forked from ctu-lingutechies/vn-law-advisor

0.0 0.0 0.0 41.26 MB

Ứ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.

Home Page: https://ctu-lingutechies.github.io/VN-Law-Advisor/

License: GNU General Public License v3.0

Shell 0.05% JavaScript 9.83% Python 17.99% Java 21.02% TypeScript 36.78% CSS 11.86% Dockerfile 0.30% SCSS 2.17%

vn-law-advisor's Introduction

Github license Open issues Open Pull Requests Commit activity GitHub contributors

VN-Law-Advisor 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:

  • NextJS 14: Xây dựng web-app, hỗ trợ SEO, SSR, SSG.
  • Kong API Gateway: API Gateway cho hệ thống.
  • ExpressJS: Dựng API cho Auth Service.
  • SpringBoot: Dựng API cho Law Service.
  • Flask: Dựng API cho Q&A - RAG Service.
  • 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

Sử dụng mô hình Vietnamese SBERT để tạo embedding cho các tri thức pháp luật. Các embedding được lưu vào Chroma - một loại vector database.

Sau đó, xây dựng hệ thống RAG với framework LangChain để truy vấn các context là các điều từ pháp điển, sau đó đưa context cho mô hình LLM để sinh ra các câu trả lời.

Mô hình LLM chọn sử dụng là phoGPT, kết hợp context và câu hỏi để sinh câu trả lời.

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ác workflows của project được lưu tại: .github/workflows, với các workflow như sau:

Cấu trúc thư mục

  • Crawler - Crawl vào CSDL từ nguồn pháp điển Việt Nam.
  • Backend - Chứa các mô hình, services, kiến trúc của hệ thống.
  • Web - Giao diện người dùng.
  • Documents - Tài liệu về dự án.

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

Tất cả các images build từ services backend bạn có thể tìm thấy tại Docker Hub.

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:

Lưu ý: NextJS 14 chỉ tương thích với NodeJS từ version 18 trở lê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/CTU-LinguTechies/VN-Law-Advisor.git vnlawadvisor

cd vào thư mục vnlawadvisor:

cd vnlawadvisor

Chạy crawler lấy dữ liệu pháp điển và các van 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 law-crawler

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

Chạy backend hệ thống

  • Đầu tiên, cd vào thư mục backend:
cd backend
  • Start các services với 1 lệnh docker-compose:
docker-compose up -d

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

8000:8000

8001:8001

8002:8002

8003:8003

8004:8004

Auth Service 5000:5000
Law Service 8080:8080
RAG Service 5001:5001
Recommendation Service 5002:5002

Chạy web-app

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

Lúc này web-app sẽ chạy ở địa chỉ http://localhost:3000. Đến đây, bạn đã cài đặt xong. Còn nếu như bạn muốn chạy project ở môi trường production, hãy ngừng development server và chạy các lệnh sau:

  • Build frontend web-app
npm run build
  • Chạy web-app production mode:
npm run 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.

vn-law-advisor's People

Contributors

tranhuyzit avatar thaiha279 avatar lemmyc avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.