ข้ามไปยังเนื้อหาหลัก
ProgrammerThailand

ไอเดีย (Idea) idea ai rag

ไอเดีย #80: แชตบอตตอบคำถามจากเอกสารบริษัท (RAG)

พนักงานใหม่ถามเรื่องเดิมซ้ำทุกเดือน: ลาพักร้อนต้องแจ้งล่วงหน้ากี่วัน เบิกค่าเดินทางใช้ฟอร์มไหน ระเบียบจัดซื้อข้อไหนว่าอย่างไร คำตอบมีอยู่ในเอกสารหลายสิบไฟล์ แต่ไม่มีใครอยากเปิดอ่าน ไอเดียนี้คือแชตบอตที่ตอบคำถามจากเอกสารของบริษัทเองด้วยเทคนิค RAG (Retrieval-Augmented Generation) จุดสำคัญคือทุกคำตอบต้องบอกได้ว่ามาจากเอกสารไหน หน้าไหน

ใครจะใช้

  • พนักงาน — ถามคำถามเป็นภาษาธรรมชาติ ได้คำตอบพร้อมแหล่งอ้างอิง
  • เจ้าของเอกสาร (HR, บัญชี, IT) — อัปโหลดและอัปเดตเอกสาร ตรวจคำถามที่บอตตอบไม่ได้
  • ผู้ดูแลระบบ — กำหนดสิทธิ์ว่าใครเข้าถึงเอกสารกลุ่มไหน ดูสถิติการใช้งาน

ฟีเจอร์ขั้นต่ำ (MVP)

  • อัปโหลด PDF, Word, ข้อความ แล้วแปลงเป็นข้อความ ตัดเป็นชิ้น (chunk) พร้อมเก็บเลขหน้า
  • สร้าง embedding ของแต่ละ chunk เก็บใน PostgreSQL ด้วย pgvector
  • เมื่อมีคำถาม ค้นหา chunk ที่เกี่ยวข้อง (ผสม vector search กับ keyword search) แล้วส่งให้ language model สรุปคำตอบ
  • คำตอบแสดงแหล่งอ้างอิง (ชื่อเอกสาร หน้า ข้อความต้นฉบับ) คลิกเปิดดูได้
  • ถ้าค้นไม่เจอข้อมูลที่เกี่ยวข้อง ให้ตอบว่าไม่พบในเอกสาร แทนการเดา
  • กรองผลค้นหาตามสิทธิ์ของผู้ถาม ก่อนส่งเข้า model
  • ปุ่มให้คะแนนคำตอบ (มีประโยชน์/ไม่มีประโยชน์) และบันทึกคำถามที่ตอบไม่ได้ ให้เจ้าของเอกสารตรวจ

ต่อยอดได้อีก

  • ใช้งานผ่าน LINE OA หรือแชตภายในองค์กร
  • Re-ranking ผลค้นหาให้แม่นขึ้น
  • เตือนเมื่อเอกสารมีหลายเวอร์ชันขัดกัน
  • ชุดคำถามทดสอบ (evaluation set) สำหรับวัดคุณภาพหลังปรับระบบ

โครงข้อมูลตั้งต้น

CREATE EXTENSION IF NOT EXISTS vector;

CREATE TABLE doc_chunk (
  id BIGSERIAL PRIMARY KEY,
  document_id INT NOT NULL,
  page_no INT,
  content TEXT NOT NULL,
  embedding VECTOR(1024)   -- ขนาดตาม model ที่เลือก
);

ตารางอื่น: document (ชื่อ, ไฟล์, access_group, version, status), chat_session, chat_message (คำถาม คำตอบ chunk ที่อ้างอิง feedback), access_group และ user_group

ระดับความยาก และสิ่งที่จะได้เรียนรู้

ปานกลางถึงท้าทาย — ทำให้ "ใช้ได้" ไม่ยาก ทำให้ "แม่น" ยากกว่ามาก

  • เทคนิคการตัด chunk ภาษาไทยให้ไม่ขาดกลางประโยค
  • hybrid search: vector + full-text
  • เขียน prompt ให้ตอบจากบริบทที่ให้เท่านั้นและอ้างอิงแหล่ง
  • วัดผลคุณภาพคำตอบอย่างเป็นระบบ

ข้อควรระวัง

  • AI ตอบผิดได้แม้มีเอกสารอ้างอิง ต้องบอกผู้ใช้ให้ตรวจกับต้นฉบับเสมอ และเรื่องสำคัญ (กฎหมาย การเงิน) ให้ยืนยันกับเจ้าหน้าที่
  • ถ้าส่งเอกสารไปยัง AI ภายนอก ต้องตรวจนโยบายการเก็บข้อมูลของผู้ให้บริการ และอย่าใส่ข้อมูลส่วนบุคคลโดยไม่จำเป็น (PDPA)
  • ระวัง prompt injection จากเนื้อหาในเอกสาร และอย่าให้ผู้ใช้เห็นข้อมูลจากเอกสารที่ตัวเองไม่มีสิทธิ์

ใครเคยลองทำ RAG กับเอกสารภาษาไทยบ้างครับ ตัด chunk แบบไหนแล้วได้ผลดีที่สุด? และคุณเลือกรัน embedding model เองในเครื่อง หรือเรียกผ่าน API ด้วยเหตุผลอะไร มาแลกเปลี่ยนกัน ใครทำแล้วเอาผลการทดสอบมาแชร์ในกระทู้ได้เลย

0 คะแนน

0 คำตอบ

ยังไม่มีคำตอบ

รู้คำตอบ? ช่วยแบ่งปันได้เลย

ตอบคำถามนี้

เข้าสู่ระบบเพื่อตอบคำถามและโหวต

เข้าสู่ระบบ สมัครสมาชิก