Skip to main content

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

รายละเอียดคอลัมน์ของ ai_config, knowledge_base, document, chunk

ภาพรวม

Domain นี้มี 4 ตารางใน schema public (จัดการด้วย Prisma) — ai_config เก็บการตั้งค่า LLM provider ต่อ LINE OA ส่วนอีก 3 ตารางเป็นคลังความรู้แบบ RAG ที่ไล่ระดับกันลงมาคือ knowledge_base (คลัง) → knowledge_document (เอกสาร/FAQ ที่อัปโหลด) → knowledge_chunk (ชิ้นข้อความที่ตัดแล้ว พร้อมรหัสอ้างอิง embedding)

ตาราง ai_config

ColumnTypeNullableDefaultคำอธิบาย
idSERIALNOauto incrementPrimary key
line_oa_idINTEGERNO-LINE OA ที่ config นี้สังกัด
organization_idINTEGERNO-องค์กรเจ้าของข้อมูล (ใช้แยก tenant)
providerVARCHAR(50)NO'gemini'ผู้ให้บริการ LLM
modelVARCHAR(100)NO'gemini-2.0-flash'ชื่อโมเดลที่เรียกใช้
api_keyTEXTNO-API key ของ provider
settingsJSONBNO'{}'ค่าปรับแต่งเพิ่มเติม เช่น temperature, max tokens
statusVARCHAR(20)NO'active'สถานะการใช้งาน
created_byINTEGERYES-ผู้สร้างเรกคอร์ด
updated_byINTEGERYES-ผู้แก้ไขล่าสุด
created_dateTIMESTAMP(3)YESnow()วันเวลาที่สร้าง
updated_dateTIMESTAMP(3)YESnow()วันเวลาที่แก้ไขล่าสุด
deleted_dateTIMESTAMP(3)YES-วันเวลาที่ soft delete

ตาราง knowledge_base

ColumnTypeNullableDefaultคำอธิบาย
idSERIALNOauto incrementPrimary key
line_oa_idINTEGERNO-LINE OA ที่คลังความรู้นี้สังกัด
organization_idINTEGERNO-องค์กรเจ้าของข้อมูล
nameVARCHAR(255)NO-ชื่อคลังความรู้
descriptionTEXTNO''คำอธิบายคลังความรู้
system_instructionTEXTNO''System prompt ที่ส่งให้โมเดลเวลาตอบจากคลังนี้
statusVARCHAR(20)NO'active'สถานะการใช้งาน
statsJSONBNO'{}'สถิติสรุป เช่น จำนวนเอกสาร/ชิ้นข้อความ
created_byINTEGERYES-ผู้สร้างเรกคอร์ด
updated_byINTEGERYES-ผู้แก้ไขล่าสุด
created_dateTIMESTAMPTZ(3)NOnow()วันเวลาที่สร้าง
updated_dateTIMESTAMPTZ(3)NOnow()วันเวลาที่แก้ไขล่าสุด
deleted_dateTIMESTAMPTZ(3)YES-วันเวลาที่ soft delete

ตาราง knowledge_document

ColumnTypeNullableDefaultคำอธิบาย
idSERIALNOauto incrementPrimary key
knowledge_base_idINTEGERNO-FK ไปยัง knowledge_base.id
typeVARCHAR(20)NO-ชนิดเอกสาร เช่น ไฟล์ / ข้อความ / คู่ถาม-ตอบ
titleVARCHAR(500)NO''หัวเรื่องเอกสาร
contentTEXTNO''เนื้อหาแบบข้อความ
questionTEXTNO''คำถาม (ใช้กับเอกสารแบบ FAQ)
answerTEXTNO''คำตอบ (ใช้กับเอกสารแบบ FAQ)
file_urlTEXTNO''URL ไฟล์ที่อัปโหลด
file_nameVARCHAR(255)NO''ชื่อไฟล์เดิม
file_typeVARCHAR(50)NO''ชนิดไฟล์ / MIME type
file_sizeINTEGERNO0ขนาดไฟล์ (ไบต์)
index_statusVARCHAR(20)NO'pending'สถานะการทำ index/embedding
index_errorTEXTNO''ข้อความ error จากการ index ครั้งล่าสุด
statusVARCHAR(20)NO'active'สถานะการใช้งาน
created_byINTEGERYES-ผู้สร้างเรกคอร์ด
updated_byINTEGERYES-ผู้แก้ไขล่าสุด
created_dateTIMESTAMPTZ(3)NOnow()วันเวลาที่สร้าง
updated_dateTIMESTAMPTZ(3)NOnow()วันเวลาที่แก้ไขล่าสุด
deleted_dateTIMESTAMPTZ(3)YES-วันเวลาที่ soft delete

ตาราง knowledge_chunk

ColumnTypeNullableDefaultคำอธิบาย
idSERIALNOauto incrementPrimary key
knowledge_document_idINTEGERNO-FK ไปยัง knowledge_document.id
knowledge_base_idINTEGERNO-FK ไปยัง knowledge_base.id (denormalize ไว้เพื่อ query ระดับคลัง)
contentTEXTNO-เนื้อหาของชิ้นข้อความ
chunk_indexINTEGERNO0ลำดับชิ้นข้อความภายในเอกสาร
embedding_idVARCHAR(100)NO''รหัสอ้างอิง vector ใน vector store ภายนอก
metadataJSONBNO'{}'ข้อมูลประกอบของชิ้นข้อความ
created_dateTIMESTAMPTZ(3)NOnow()วันเวลาที่สร้าง

หมายเหตุ

  • Foreign key: knowledge_document.knowledge_base_idknowledge_base.id, knowledge_chunk.knowledge_document_idknowledge_document.id, knowledge_chunk.knowledge_base_idknowledge_base.id
  • Unique: ai_config มี unique constraint uq_ai_config_org_lineoa_provider บน (organization_id, line_oa_id, provider) — หนึ่ง OA มีได้ 1 config ต่อ 1 provider
  • Index: idx_ai_config_org_lineoa บน (organization_id, line_oa_id); knowledge_base มี index บน (line_oa_id, organization_id); knowledge_document มี index บน knowledge_base_id; knowledge_chunk มี index บน knowledge_base_id และ knowledge_document_id
  • knowledge_chunk ไม่มีคอลัมน์ soft delete และไม่มี updated_date — เมื่อเอกสารถูกแก้ ระบบจะ ตัด chunk ใหม่ทั้งชุดแทนการแก้ทีละแถว
  • ตัว vector embedding ไม่ได้เก็บใน PostgreSQL แต่อยู่ใน vector store ภายนอก โดยอ้างอิงผ่าน knowledge_chunk.embedding_id