Lemini — แชตบอตให้คำปรึกษาด้านกฎหมายที่ทำงานด้วยสองโหมด
(github.com/maantano)URL : https://lemini-brown.vercel.app/
ขอแชร์ Lemini แชตบอต RAG สำหรับถามกฎหมายและคำพิพากษาของเกาหลีด้วยภาษาธรรมชาติ พอเห็นโพสต์เกี่ยวกับบริการที่มีแนวคล้ายกันเพิ่งถูกโพสต์เมื่อไม่นานนี้ พวกเราเลยอยากนำเสนอว่าเรากำลังแก้ปัญหาเดียวกันด้วยสองโหมดที่ต่างกัน และอยากขอรับฟีดแบ็กด้านเทคนิค
ทำไมต้องมีสองโหมด
คำถามด้านกฎหมายมักแยกออกเป็นสองลักษณะ
- "สถานการณ์ของฉันเป็นแบบนี้ ควรทำอย่างไร?" — ผู้ใช้มักไม่สามารถอธิบายข้อเท็จจริงได้ครบถ้วน ถ้ารับด้วย RAG ทั่วไปก็มักจะได้แค่คำตอบกว้าง ๆ
- "ช่วยตรวจสัญญา/ข้อกำหนดนี้ให้หน่อย" — มีเอกสารอยู่แล้ว แต่ถ้าใช้พรอมป์ต์เดียวว่า "ช่วยตรวจให้หน่อย" ก็มักได้แค่เช็กลิสต์มาตรฐาน
คำถามสองแบบนี้แก้ด้วย RAG แบบเดียวกันไม่ได้ Lemini จึงออกแบบโดยแยกเป็นสองโหมด
โหมด 1 — Ouroboros (การค่อย ๆ รวบรวมข้อเท็จจริงแบบโต้ตอบ)
คำถาม → [ข้อเท็จจริงเพียงพอหรือไม่?] ──ยังไม่พอ── คำถามติดตามแบบปรนัย ─┐
│ เพียงพอ │
▼ ←─ คำตอบผู้ใช้ ┘
RAG (กฎหมาย+คำพิพากษา+ระเบียบกำกับตนเอง)
▼
การวิเคราะห์แบบมีโครงสร้าง
· ข้อเท็จจริงที่เป็นประโยชน์/ควรระวัง
· แผนการดำเนินการ
· คำเตือนเรื่องกำหนดเวลา (อายุความ)
· คำพิพากษาที่เกี่ยวข้อง
▼
ลูปตรวจสอบการอ้างอิง — ลบการอ้างอิงที่ไม่มีอยู่ใน search hit
ประเด็นสำคัญในหนึ่งบรรทัด: ก่อนตอบ โมเดลจะถามตัวเองก่อนว่า "ข้อเท็จจริงเพียงพอหรือไม่"
ถ้ายังไม่พอ จะถามต่อด้วยการ์ดคำถามแบบปรนัย ถ้าเพียงพอแล้วจึงทำ RAG → วิเคราะห์แบบมีโครงสร้าง ผู้ใช้ไม่จำเป็นต้องออกแบบคำถามติดตามเอง
โหมด 2 — การวิเคราะห์เชิงผู้เชี่ยวชาญ (6-chain สำหรับตรวจเอกสาร)
ป้อนเอกสาร
▼
① สแกนภาพรวมทั้งหมด — ลักษณะเอกสาร, สรุปแต่ละส่วน
② จับคู่กับกรอบระบบภายนอก — ระบุว่ามีระบบ/หลักเกณฑ์ใดรองรับเอกสารนี้
③ RAG แยกตามแกน — ค้นหากฎหมายและคำพิพากษาตามแต่ละแกนของระบบ
② จับคู่กับกรอบระบบภายนอก — ระบุว่ามีระบบ/หลักเกณฑ์ใดรองรับเอกสารนี้
③ RAG แยกตามแกน — ค้นหากฎหมายและคำพิพากษาตามแต่ละแกนของระบบ
④ ตรวจรายข้อ — observations / gaps / external
⑤ chain แบบขนาน (ทำพร้อมกัน 3 ตัว)
├ ความสอดคล้องระหว่างเป้าหมาย-วิธีการ
├ การพิจารณาในมุมระบบ/หลักเกณฑ์
└ สถานการณ์ความเสี่ยง
⑥ verdict เชิงตัดสิน — ใช้เฉพาะเมื่อเป็นคำถามที่ต้องตัดสิน
ประเด็นสำคัญในหนึ่งบรรทัด: ไม่ใช่แค่ใช้พรอมป์ต์เดียวว่า "ช่วยตรวจให้หน่อย" แต่เป็นการ "ประกาศกรอบระบบภายนอกของเอกสารก่อนแล้วจึงเริ่มวิเคราะห์"
ขั้นตอนที่ ② นี้มักออกมาไม่ดีนักเมื่อใช้พรอมป์ต์เดียว จึงแยก chain ออกมา
พื้นฐานร่วมที่รองรับทั้งสองโหมด
- ลูปตรวจสอบการอ้างอิง — เปรียบเทียบการอ้างอิงที่ LLM สร้างขึ้นกับ search hit แล้วลบการอ้างอิงที่ไม่มีอยู่จริงออกจากคำตอบ ป้องกันการอ้างบทกฎหมายปลอมที่ดูน่าเชื่อ
- ใช้พูลข้อมูลชุดเดียวกัน 3 ประเภท — กฎหมาย + คำพิพากษา + ระเบียบกำกับตนเอง (ข้อกำหนดมาตรฐานของ Fair Trade Commission, ระเบียบของสมาคม, แนวทางของ KISA และคณะกรรมการคุ้มครองข้อมูลส่วนบุคคล) ถูกโหลดไว้ใน vector space เดียวกัน
ไม่มีการแยกสาขาโดเมนในโค้ดเลยแม้แต่จุดเดียว แยกกันด้วยdocument_typeเท่านั้น - ไปป์ไลน์เก็บข้อมูลที่พัฒนาขึ้นเอง — กฎหมายอัปเดตอัตโนมัติสัปดาห์ละครั้งผ่าน DRF API ส่วนคำพิพากษาใช้ National Law Information shared-use API + on-demand cache
- พรอมป์ต์ถูกออกแบบโดยให้ความสำคัญสูงสุดกับความเป็นทั่วไป ไม่ได้ป้อนข้อมูลเพื่อนำคำตอบไปสู่ข้อสรุปตายตัว แต่ตั้งใจให้ดึงคำตอบที่เหมาะกับคำถามออกมาเอง
สแตก
FastAPI / Cloud Run · Next.js · Gemini (structured JSON + multi-chain) · SQLite + เมทริกซ์ embedding ที่พัฒนาขึ้นเอง (3 แกน: vector · lexical · exact)
ความเป็นส่วนตัว
ไม่มีการสมัครสมาชิกหรือเข้าสู่ระบบ ไม่มีการเก็บบทสนทนาไว้ใน DB ฝั่งเซิร์ฟเวอร์ (เก็บใน localStorage ของเบราว์เซอร์), stateless, IP ใช้แบบ in-memory เฉพาะสำหรับ rate limit เท่านั้น
ข้อจำกัด
นี่เป็นเครื่องมือสำหรับค้นหาและวิเคราะห์ข้อมูล ไม่ใช่คำปรึกษาทางกฎหมาย ยังมีช่องว่างในข้อมูลประเภทเครื่องหมายดอกจัน/แบบฟอร์ม และความครอบคลุมของคำพิพากษา ความสามารถในการให้เหตุผลของโมเดลเองยังพึ่งพา LLM ภายนอก และจุดที่เราพยายามสร้างความแตกต่างไม่ใช่ "คำตอบที่ฟังดูน่าเชื่อ" แต่คือ "คำตอบแบบมีโครงสร้างที่ตรวจสอบหลักฐานอ้างอิงแล้ว"
สิ่งที่อยากได้ฟีดแบ็ก
- โหมด 1 — กรณีที่คำถามติดตามของ Ouroboros ออกนอกเรื่องหรือมากเกินไป
- โหมด 2 — มุมมองที่ตกหล่นไปจาก 6-chain สำหรับตรวจเอกสาร
- การอ้างอิงที่ผิดซึ่งลูปตรวจสอบการอ้างอิงยังจับไม่ได้
- มุมมองที่ยังขาดไปเมื่อเทียบกับบริการอื่นในโดเมนเดียวกัน
ลองใช้งานดู แล้วถ้ามีฟีดแบ็กตรง ๆ แรง ๆ ก็จะขอบคุณมากครับ
2 ความคิดเห็น
ผลการตรวจสอบเอกสาร
ยืนยันไม่สำเร็จ
เกิดข้อผิดพลาดระหว่างการตรวจสอบเอกสาร ระหว่างใช้งานแชตบอตเกิดข้อผิดพลาดขึ้น และเมื่อค้นหาชื่อกฎหมาย รายการแรกแสดงเป็น 50% แต่รายการที่เหลือดูเหมือนจะแสดงคะแนนที่ไม่สมเหตุสมผลอย่าง 4565%
ขอบคุณมากครับ!! ฮือฮือ เดี๋ยวจะลองตรวจสอบดูครับ!!