Lemini — chatbot tư vấn pháp lý hoạt động với hai chế độ
(github.com/maantano)URL : https://lemini-brown.vercel.app/
Chúng tôi chia sẻ Lemini, một chatbot RAG cho phép hỏi đáp bằng ngôn ngữ tự nhiên về luật và án lệ Hàn Quốc. Gần đây tôi thấy có bài viết về một dịch vụ có hướng tiếp cận tương tự, và vì bên tôi đang giải bài toán này bằng hai chế độ khác nhau nên muốn đăng lên để nhận phản hồi kỹ thuật.
Vì sao lại có hai chế độ
Câu hỏi pháp lý thường tách thành hai nhóm.
- "Tình huống của tôi như thế này thì nên làm gì?" — người dùng không đủ khả năng diễn đạt đầy đủ quan hệ sự việc. Nếu nhận bằng RAG thông thường thì chỉ trả về các nhận định chung chung.
- "Hãy xem giúp hợp đồng/điều khoản này" — tài liệu thì đã có sẵn, nhưng nếu chỉ dùng một prompt duy nhất kiểu "hãy xem giúp" thì sẽ chỉ ra checklist tiêu chuẩn.
Hai kiểu này không thể giải bằng cùng một RAG. Lemini được thiết kế bằng cách tách thành hai chế độ.
Chế độ 1 — Ouroboros (hội tụ quan hệ sự việc theo đối thoại)
câu hỏi → [quan hệ sự việc đã đủ chưa?] ──thiếu── câu hỏi tiếp theo dạng trắc nghiệm ─┐
│ đủ │
▼ ←─ câu trả lời của người dùng ┘
RAG (luật + án lệ + quy định tự quản)
▼
phân tích có cấu trúc
· sự thật có lợi/cần lưu ý
· kế hoạch hành động
· cảnh báo thời hạn (thời hiệu)
· án lệ liên quan
▼
vòng lặp kiểm chứng trích dẫn — loại bỏ các trích dẫn không có trong hit tìm kiếm
Một câu cốt lõi: trước khi trả lời, mô hình tự hỏi xem "quan hệ sự việc đã đủ chưa".
Nếu chưa đủ thì đặt câu hỏi tiếp theo bằng thẻ trắc nghiệm, nếu đủ thì RAG → phân tích có cấu trúc. Người dùng không cần tự thiết kế các câu hỏi tiếp theo.
Chế độ 2 — phân tích chuyên sâu (6 chuỗi rà soát tài liệu)
nhập tài liệu
▼
① quét tổng thể — tính chất tài liệu, tóm tắt các mục
② ánh xạ khung thể chế bên ngoài — tuyên bố thể chế mà tài liệu này dựa vào
③ RAG theo từng trục — tìm luật và án lệ cho từng trục thể chế
② ánh xạ khung thể chế bên ngoài — tuyên bố thể chế mà tài liệu này dựa vào
③ RAG theo từng trục — tìm luật và án lệ cho từng trục thể chế
④ rà soát theo từng điều khoản — observations / gaps / external
⑤ chuỗi song song (chạy đồng thời 3 nhánh)
├ tính nhất quán giữa mục tiêu-phương tiện
├ rà soát từ góc độ thể chế
└ kịch bản rủi ro
⑥ verdict dạng phán đoán — chỉ khi là câu hỏi yêu cầu phán đoán
Một câu cốt lõi: không phải chỉ dùng một prompt duy nhất kiểu "hãy xem giúp", mà là "khai báo trước khung thể chế nằm ngoài tài liệu rồi mới đi vào phân tích."
Bước ② này khó rút ra tốt chỉ bằng một prompt đơn lẻ, nên chúng tôi tách riêng chuỗi xử lý.
Nền tảng chung nâng đỡ cả hai chế độ
- Vòng lặp kiểm chứng trích dẫn — đối chiếu các trích dẫn mà LLM tạo ra với hit tìm kiếm, và loại khỏi phản hồi mọi trích dẫn không tồn tại. Ngăn các điều khoản giả nhưng có vẻ hợp lý.
- Một pool dữ liệu thống nhất gồm 3 loại — luật + án lệ + quy định tự quản (điều khoản mẫu của FTC Hàn Quốc, quy định hiệp hội, hướng dẫn của KISA và Ủy ban Bảo vệ Thông tin Cá nhân) được nạp vào cùng một không gian vector.
Trong code không có nhánh rẽ theo domain, chỉ phân biệt bằngdocument_type. - Pipeline thu thập tự xây — luật được tự động cập nhật hàng tuần qua DRF API, án lệ dùng National Law Information joint-use API + cache on-demand.
- Prompt được thiết kế với ưu tiên cao nhất là tính tổng quát. Chúng tôi không truyền trước thông tin để dẫn tới đáp án, mà thiết kế để hệ thống tự rút ra câu trả lời phù hợp với câu hỏi.
Stack
FastAPI / Cloud Run · Next.js · Gemini (JSON có cấu trúc + multi-chain) · SQLite + ma trận embedding tự xây (3 trục vector · lexical · exact)
Quyền riêng tư
Không đăng ký hay đăng nhập, không lưu hội thoại vào DB máy chủ (chỉ lưu trên localStorage của trình duyệt), stateless, IP chỉ được dùng in-memory cho rate limit.
Giới hạn
Đây là công cụ tìm kiếm và phân tích thông tin, không phải tư vấn pháp lý. Dữ liệu dấu sao/biểu mẫu và độ bao phủ án lệ vẫn còn chỗ trống. Năng lực suy luận của bản thân mô hình phụ thuộc vào LLM bên ngoài, và điểm chúng tôi muốn tạo khác biệt không phải là "câu trả lời nghe hợp lý" mà là "câu trả lời có cấu trúc với căn cứ đã được kiểm chứng".
Những điều chúng tôi muốn nhận phản hồi
- Chế độ 1 — các trường hợp câu hỏi tiếp theo của Ouroboros bị lệch hoặc quá đà
- Chế độ 2 — các góc nhìn còn thiếu trong 6 chuỗi rà soát tài liệu
- Các trích dẫn sai mà vòng lặp kiểm chứng trích dẫn chưa phát hiện được
- Những góc nhìn còn thiếu khi so với các dịch vụ khác trong cùng domain
Hãy dùng thử và cho chúng tôi phản hồi thẳng thắn nếu có thể, xin cảm ơn.
2 bình luận
Kết quả rà soát tài liệu
Không thể xác nhận
Đã xảy ra lỗi trong quá trình rà soát tài liệu. Có vẻ như khi đang sử dụng chatbot thì phát sinh lỗi, và khi tìm kiếm tên văn bản pháp luật thì kết quả đầu tiên hiện 50%, nhưng các kết quả còn lại lại xuất hiện những điểm số vô lý như 4565%.
Cảm ơn bạn!! hu hu Mình sẽ kiểm tra thử!!