Skip to main content

AI และคลังความรู้

ภาพรวม

Domain นี้คือส่วนที่ทำให้ LINE OA สามารถตอบคำถามลูกค้าด้วย AI ได้ ประกอบด้วยสองส่วนหลัก

  • การตั้งค่าโมเดล — ตาราง ai_config เก็บผู้ให้บริการ ชื่อโมเดล และ API key โดยมี Gemini เป็นค่าเริ่มต้น
  • คลังความรู้แบบ RAG — ตาราง knowledge_base, knowledge_document และ knowledge_chunk ทำหน้าที่เก็บเอกสารและตัดเป็นชิ้นย่อย (chunk) เพื่อให้ค้นหาด้วย embedding ได้

การตัดสินว่า AI จะได้ตอบข้อความหรือไม่ ขึ้นอยู่กับ line_oa.message_handling_config ซึ่งเป็นตัวจัดลำดับความสำคัญระหว่าง AI, auto-response และ trigger rule

โครงสร้างข้อมูลหลัก

ai_config — การตั้งค่าโมเดล

  • provider (ค่าเริ่มต้น gemini) และ model (ค่าเริ่มต้น gemini-2.0-flash)
  • api_key แบบ TEXT พร้อม settings แบบ JSONB สำหรับพารามิเตอร์เพิ่มเติม
  • unique constraint (organization_id, line_oa_id, provider) ชื่อ uq_ai_config_org_lineoa_provider หมายความว่าแต่ละช่องทางตั้งค่าได้หนึ่งชุดต่อหนึ่งผู้ให้บริการ

knowledge_base — คลังความรู้

  • name, description และ system_instruction ซึ่งเป็น prompt ระดับระบบของคลังนั้น
  • stats แบบ JSONB สรุปจำนวนเอกสารและ chunk พร้อม status
  • ผูกกับ line_oa_id และ organization_id และใช้ soft delete ผ่าน deleted_date
  • มีความสัมพันธ์แบบ 1 ต่อหลาย กับทั้ง knowledge_document และ knowledge_chunk

knowledge_document — เอกสารในคลัง

แต่ละแถวคือเอกสารหนึ่งชิ้นที่ผู้ดูแลเพิ่มเข้ามา

  • type ระบุรูปแบบของเอกสาร เช่น ข้อความอิสระ คู่คำถาม-คำตอบ หรือไฟล์แนบ
  • เนื้อหา: title, content, question, answer
  • ข้อมูลไฟล์: file_url, file_name, file_type, file_size
  • สถานะการทำ index: index_status (ค่าเริ่มต้น pending) และ index_error
  • FK knowledge_base_id ชี้กลับไปยัง knowledge_base

knowledge_chunk — ชิ้นย่อยที่ใช้ค้นหาจริง

  • content และ chunk_index ระบุลำดับของชิ้นภายในเอกสาร
  • embedding_id เก็บเพียง ตัวอ้างอิงไปยัง vector store ภายนอก เท่านั้น ตัว vector ไม่ได้ถูกเก็บไว้ใน PostgreSQL
  • metadata แบบ JSONB สำหรับข้อมูลประกอบการค้นหา
  • มี FK ทั้ง knowledge_document_id และ knowledge_base_id โดยตัวหลังเป็นการ denormalize ไว้เพื่อให้ query ชิ้นทั้งหมดของคลังได้ในคำสั่งเดียว

ไฟล์ที่เกี่ยวข้อง

  • prisma/schema.prisma:1539 — model AiConfig
  • prisma/schema.prisma:1607 — model KnowledgeBase
  • prisma/schema.prisma:1629 — model KnowledgeDocument
  • prisma/schema.prisma:1657 — model KnowledgeChunk
  • schema-dumps/2026-07-24/schema.sql:823, :2027, :2104, :2068

จุดเชื่อมต่อกับ Service อื่น

  • cms-api-go ให้ผู้ดูแลตั้งค่า AI อัปโหลดเอกสารเข้าคลัง และสั่งทำ index ใหม่
  • worker-go รับงาน index เอกสาร โดยตัดเนื้อหาเป็น chunk สร้าง embedding แล้วอัปเดต index_status กลับมา
  • webhook-go เป็นฝั่งที่ใช้งานจริง เมื่อผู้ใช้พิมพ์ข้อความเข้ามาและลำดับความสำคัญกำหนดให้ AI ตอบ ระบบจะค้น chunk ที่เกี่ยวข้องแล้วเรียกโมเดลพร้อมกับ system_instruction ของคลังนั้น
  • เชื่อมโยงกับ ช่องทาง LINE OA ในส่วน message_handling_config และกับ การตอบกลับอัตโนมัติ