← กลับไปหน้าบทความ
คู่มือ

pgvector คืออะไร: ส่วนขยาย Postgres ที่ทำให้ค้นข้อมูลด้วยความหมายได้

ทีมบรรณาธิการ linli12 ส.ค. 04:52อัปเดต 12 ส.ค. 04:52อ่าน 2 นาที
pgvector คืออะไร: ส่วนขยาย Postgres ที่ทำให้ค้นข้อมูลด้วยความหมายได้
บทความนี้จัดทำเพื่อความรู้ ชื่อธุรกิจ ตัวเลข หรือบทสนทนาที่ไม่มีแหล่งอ้างอิงกำกับเป็นกรณีตัวอย่างเพื่ออธิบายแนวคิด ดูรายละเอียดที่ นโยบายกองบรรณาธิการ

สรุปสั้น ๆ

pgvector คือส่วนขยาย (Extension) ของ PostgreSQL ที่เพิ่มชนิดข้อมูลแบบเวกเตอร์และฟังก์ชันคำนวณระยะห่างระหว่างเวกเตอร์เข้าไปในฐานข้อมูล ทำให้เก็บและค้นหาข้อมูลแบบ Embedding ได้ในฐานข้อมูลเดียวกับข้อมูลธุรกิจปกติ โดยไม่ต้องเปิดฐานข้อมูลเวกเตอร์แยกอีกระบบ แต่ต้องเข้าใจเรื่องดัชนีและตัวชี้วัดระยะห่างให้ถูกต้องเพื่อให้ค้นหาได้เร็วเมื่อข้อมูลเพิ่มขึ้น

ทีมพัฒนาที่เริ่มอ่านเรื่อง Supabase สำหรับงาน AI มักเจอคำว่า pgvector อยู่แทบทุกบทความ แต่พอลองอ่านเอกสารทางการก็ยังงงว่ามันคือฐานข้อมูลใหม่หรือแค่ฟีเจอร์เสริม แล้วต่างจากฐานข้อมูลเวกเตอร์เฉพาะทางที่มีคนพูดถึงเยอะ ๆ ในวงการ AI ตรงไหน

คำตอบสั้น ๆ คือ pgvector ไม่ใช่ฐานข้อมูลใหม่ แต่เป็นส่วนขยายที่เสียบเข้ากับ PostgreSQL ที่มีอยู่แล้ว เพิ่มความสามารถให้ฐานข้อมูลเก็บชุดตัวเลขที่แทนความหมายของข้อมูล (Vector) และคำนวณว่าเวกเตอร์สองชุดใกล้เคียงกันแค่ไหนได้โดยตรง ไม่ต้องส่งข้อมูลไปคำนวณที่ระบบอื่นแยกต่างหาก

บทความนี้จะอธิบายตั้งแต่หลักการพื้นฐานของ pgvector วิธีเปิดใช้งาน วิธีเลือกตัวชี้วัดระยะห่างที่เหมาะกับงาน ไปจนถึงเรื่องดัชนีที่ทีมมือใหม่มักมองข้ามแล้วมาเจอปัญหาความเร็วทีหลังเมื่อข้อมูลเริ่มเยอะขึ้น

pgvector คืออะไร ต่างจากฐานข้อมูลเวกเตอร์เฉพาะทางตรงไหน

pgvector เป็นส่วนขยายโอเพนซอร์สของ PostgreSQL ที่เพิ่มชนิดข้อมูล (Data Type) ใหม่ชื่อ vector เข้าไปในฐานข้อมูล ทำให้คอลัมน์หนึ่งในตารางสามารถเก็บชุดตัวเลขหลายร้อยหรือหลายพันตัวที่แทนความหมายของข้อความหรือข้อมูลอื่น ๆ ได้ พร้อมทั้งเพิ่มฟังก์ชันคำนวณระยะห่างระหว่างเวกเตอร์สองชุดเข้ามาด้วย

จุดต่างสำคัญจากฐานข้อมูลเวกเตอร์เฉพาะทางคือ pgvector ไม่ได้เป็นระบบแยกต่างหาก แต่ฝังอยู่ในฐานข้อมูล Postgres ตัวเดียวกับที่เก็บข้อมูลธุรกิจปกติ แปลว่าคอลัมน์เวกเตอร์กับคอลัมน์ข้อมูลทั่วไป เช่น ชื่อสินค้า ราคา หรือวันที่สร้าง อยู่ในตารางเดียวกันได้เลย ไม่ต้องเชื่อมโยงข้ามระบบผ่าน API หรือกระบวนการซิงก์ข้อมูลแยกต่างหาก

ข้อดีของแนวทางนี้คือความสอดคล้องของข้อมูล (Consistency) เพราะเมื่อแก้ไขหรือลบข้อมูลต้นฉบับในแถวเดียวกัน คอลัมน์เวกเตอร์ก็อยู่ในธุรกรรม (Transaction) เดียวกันได้ ลดความเสี่ยงที่ข้อมูลสองฝั่งจะไม่ตรงกันซึ่งเป็นปัญหาที่พบบ่อยเมื่อใช้ระบบแยกสองตัว

เปิดใช้งาน pgvector ในโปรเจกต์ Supabase ทำยังไง

  1. เข้าไปที่ส่วน Database ในแดชบอร์ดของโปรเจกต์ แล้วมองหาเมนูจัดการ Extensions ที่ Supabase เตรียมไว้ให้เปิดปิดได้ง่ายโดยไม่ต้องพิมพ์คำสั่งเอง
  2. ค้นหาและเปิดใช้งานส่วนขยายชื่อ vector ในรายการ Extensions หลังเปิดใช้งานแล้ว ฐานข้อมูลจะรู้จักชนิดข้อมูล vector ทันที
  3. สร้างหรือแก้ไขตารางที่ต้องการเก็บ Embedding เพิ่มคอลัมน์ชนิด vector พร้อมระบุจำนวนมิติ (Dimension) ให้ตรงกับโมเดลที่ใช้สร้าง Embedding เพราะแต่ละโมเดลให้เวกเตอร์ที่มีจำนวนมิติไม่เท่ากัน
  4. สร้าง Embedding จากข้อมูลข้อความที่มีอยู่ แล้วบันทึกค่าลงในคอลัมน์เวกเตอร์นั้น อาจทำผ่าน Automatic Embeddings หรือเขียนโค้ดเรียกโมเดลเองแล้วบันทึกผลลัพธ์กลับเข้าฐานข้อมูล
  5. ทดสอบ Query ค้นหาความใกล้เคียงด้วยข้อมูลตัวอย่างจำนวนน้อยก่อน เพื่อตรวจว่าผลลัพธ์ที่ได้สมเหตุสมผล ก่อนนำไปใช้กับข้อมูลจำนวนมากจริง

ตัวชี้วัดระยะห่างที่ pgvector รองรับ เลือกแบบไหนให้เหมาะกับงาน

pgvector รองรับตัวชี้วัดความใกล้เคียงหลายแบบ การเลือกใช้ตัวไหนควรอิงจากคำแนะนำของโมเดลที่ใช้สร้าง Embedding เป็นหลัก เพราะโมเดลแต่ละตัวถูกฝึกมาให้เหมาะกับตัวชี้วัดบางแบบมากกว่าแบบอื่น:

ตัวชี้วัดหลักการคร่าว ๆเหมาะกับกรณีไหน
Cosine Distanceวัดมุมระหว่างเวกเตอร์สองชุด ไม่สนใจขนาดของเวกเตอร์งาน Semantic Search ทั่วไปที่โมเดล Embedding ส่วนใหญ่แนะนำให้ใช้
Euclidean Distance (L2)วัดระยะห่างเป็นเส้นตรงระหว่างจุดสองจุดในปริภูมิหลายมิติงานที่ขนาดของเวกเตอร์มีความหมายสำคัญต่อผลลัพธ์ ไม่ใช่แค่ทิศทาง
Inner Productคำนวณผลคูณเชิงมุมของเวกเตอร์ มักใช้กับโมเดลที่ฝึกมาเฉพาะแบบนี้งานที่เอกสารทางเทคนิคของโมเดลระบุให้ใช้ตัวชี้วัดนี้โดยตรง

ทำไมต้องตั้งดัชนี และดัชนีแบบไหนที่ pgvector ใช้ได้

ถ้าไม่ตั้งดัชนี การค้นหาความใกล้เคียงของเวกเตอร์จะทำแบบไล่เทียบทุกแถวในตาราง (Sequential Scan) ซึ่งใช้ได้กับข้อมูลจำนวนน้อยแต่จะช้าลงชัดเจนเมื่อข้อมูลมีหลักหมื่นหรือหลักแสนแถวขึ้นไป ดัชนีช่วยให้ระบบข้ามการเทียบบางส่วนที่ไม่น่าจะเป็นคำตอบไปได้ ทำให้ค้นหาเร็วขึ้นมากโดยแลกกับความแม่นยำที่ลดลงเล็กน้อยในบางกรณี

pgvector รองรับดัชนีหลักสองแบบคือ IVFFlat และ HNSW แบบแรกเหมาะกับข้อมูลที่ไม่เปลี่ยนแปลงบ่อยและต้องการสร้างดัชนีที่ใช้ทรัพยากรน้อยกว่า ส่วน HNSW ให้ความแม่นยำและความเร็วในการค้นหาที่ดีกว่าในหลายกรณี แต่ใช้หน่วยความจำมากกว่าตอนสร้างดัชนี การเลือกใช้แบบไหนควรทดสอบกับข้อมูลจริงของโปรเจกต์เอง ไม่ใช่เลือกตามที่บทความไหนบอกมาตายตัว

อีกพารามิเตอร์ที่มีผลต่อความแม่นยำและความเร็วคือค่าที่ควบคุมจำนวนรายการที่ดัชนีพิจารณาระหว่างค้นหา ถ้าตั้งค่านี้ต่ำเกินไปเพื่อความเร็ว ผลลัพธ์ที่ได้อาจไม่ใช่รายการที่ใกล้เคียงที่สุดจริง ๆ เสมอไป แต่ถ้าตั้งสูงเกินไปก็จะได้ความแม่นยำเพิ่มขึ้นแลกกับเวลาค้นหาที่ช้าลง ทีมควรทดลองปรับค่านี้ควบคู่กับการวัดเวลาตอบสนองจริงของระบบ แทนที่จะใช้ค่าเริ่มต้นไปตลอดโดยไม่เคยทบทวน

จุดที่ทีมมือใหม่มักพลาดคือสร้างดัชนีตั้งแต่ตอนที่ข้อมูลยังมีน้อยมาก แล้วลืมกลับมาตรวจสอบซ้ำเมื่อข้อมูลเพิ่มขึ้นเยอะแล้ว พารามิเตอร์ของดัชนีที่เหมาะกับข้อมูลหลักร้อยแถวอาจไม่เหมาะกับข้อมูลหลักแสนแถวอีกต่อไป ควรมีจุดตรวจสอบประสิทธิภาพการค้นหาเป็นระยะเมื่อข้อมูลเติบโตขึ้น

เขียน Query ค้นหาความใกล้เคียงยังไงในทางปฏิบัติ

โครงสร้างพื้นฐานของ Query ค้นหาความใกล้เคียงคือการนำเวกเตอร์ของคำถามผู้ใช้ไปเทียบกับเวกเตอร์ที่เก็บไว้ในคอลัมน์ของตาราง แล้วเรียงลำดับผลลัพธ์ตามค่าระยะห่างจากน้อยไปมาก จำกัดจำนวนแถวที่ดึงมาให้พอเหมาะกับการใช้งาน เช่น ดึงมาห้าถึงสิบรายการที่ใกล้เคียงที่สุดแทนที่จะดึงทั้งหมด

หลายโปรเจกต์เพิ่มเงื่อนไขกรองข้อมูลร่วมกับการค้นหาความใกล้เคียงด้วย เช่น ค้นหาเฉพาะเอกสารในหมวดหมู่ที่กำหนด หรือเฉพาะข้อมูลของผู้ใช้คนนั้นเท่านั้น เพราะฐานข้อมูลเดียวกับข้อมูลธุรกิจทำให้ผสมเงื่อนไขแบบนี้ได้ง่ายกว่าการค้นหาบนฐานข้อมูลเวกเตอร์แยกที่มักต้องดึงผลลัพธ์มากรองซ้ำอีกชั้นในโค้ดฝั่งแอปพลิเคชัน

อีกเทคนิคที่หลายทีมใช้คือการกำหนดค่าระยะห่างสูงสุดที่ยอมรับได้ ไม่ใช่แค่จำกัดจำนวนแถวที่ดึงมา เพราะบางครั้งคำถามของผู้ใช้อาจไม่มีเอกสารที่เกี่ยวข้องจริง ๆ อยู่ในระบบเลย ถ้าไม่ตั้งเพดานระยะห่างไว้ ระบบจะยังคืนผลลัพธ์ที่ใกล้เคียงที่สุดเท่าที่มีมาให้อยู่ดี ทั้งที่ความใกล้เคียงนั้นอาจต่ำมากจนไม่มีประโยชน์กับผู้ใช้ การตั้งเพดานนี้ช่วยให้ระบบตอบได้อย่างตรงไปตรงมาว่าไม่พบข้อมูลที่เกี่ยวข้องแทนที่จะยัดเยียดคำตอบที่ไม่ตรงประเด็น

pgvector เชื่อมกับงาน RAG และ Semantic Search ยังไง

pgvector เป็นชิ้นส่วนพื้นฐานที่งานหลายอย่างต่อยอดไปได้ ทั้งการทำ Semantic Search ที่ค้นหาข้อมูลด้วยความหมายโดยตรง และการทำ Retrieval Augmented Generation ที่ดึงข้อมูลที่เกี่ยวข้องมาป้อนให้โมเดลภาษาช่วยสรุปคำตอบ ทั้งสองแนวทางใช้หลักการเดียวกันคือค้นหาแถวข้อมูลที่เวกเตอร์ใกล้เคียงกับคำถามมากที่สุด

สำหรับทีมที่อยากเห็นตัวอย่างการนำ pgvector ไปสร้างฟีเจอร์ค้นหาด้วยความหมายแบบเต็มรูปแบบ แนะนำให้อ่านต่อในบทความ ทำ Semantic Search ด้วย Supabase และ pgvector ตั้งแต่เก็บ Embedding ถึง Query ของชุดนี้ ส่วนทีมที่สนใจต่อยอดไปทำระบบตอบคำถามจากเอกสารด้วยโมเดลภาษา สามารถอ่านต่อในบทความ สร้างระบบตอบคำถามจากเอกสารด้วย Supabase ต้องออกแบบอะไรบ้าง

ข้อผิดพลาดที่พบบ่อยตอนเริ่มใช้ pgvector

  • ใช้ตัวชี้วัดระยะห่างไม่ตรงกับที่โมเดลแนะนำ — ทำแบบนี้แล้วพัง เพราะผลลัพธ์การค้นหาจะดูไม่สมเหตุสมผล ทั้งที่ Embedding ถูกสร้างมาถูกต้อง
  • ไม่ตั้งดัชนีจนข้อมูลเยอะแล้วค่อยมาแก้ — ทำแบบนี้แล้วพัง เพราะการค้นหาจะช้าลงเรื่อย ๆ จนกระทบประสบการณ์ผู้ใช้ก่อนทีมจะทันสังเกต
  • จำนวนมิติของคอลัมน์เวกเตอร์ไม่ตรงกับโมเดลที่ใช้จริง — ทำแบบนี้แล้วพัง เพราะระบบจะบันทึกข้อมูลไม่ได้หรือรับ Embedding มาผิดรูปแบบตั้งแต่ขั้นตอนแรก

วางแผนเรื่องพื้นที่จัดเก็บและต้นทุนก่อนใช้งานจริง

ข้อมูลเวกเตอร์ใช้พื้นที่จัดเก็บมากกว่าข้อมูลข้อความหรือตัวเลขทั่วไปพอสมควร เพราะแต่ละแถวต้องเก็บชุดตัวเลขหลายร้อยหรือหลายพันตัวแทนความหมาย ถ้าโปรเจกต์มีเอกสารจำนวนมากที่ต้องแปลงเป็น Embedding ควรประเมินพื้นที่จัดเก็บที่ต้องใช้ล่วงหน้า แทนที่จะเริ่มใช้งานแล้วมาพบว่าพื้นที่ในแผนที่เลือกไว้ไม่พอ

อีกจุดที่ควรวางแผนคือดัชนีเองก็ใช้พื้นที่และหน่วยความจำเพิ่มเติมจากตัวข้อมูลเวกเตอร์โดยตรง โดยเฉพาะดัชนีแบบ HNSW ที่มักใช้ทรัพยากรมากกว่า IVFFlat ตอนสร้างดัชนี ทีมที่มีข้อมูลจำนวนมากควรทดสอบสร้างดัชนีกับชุดข้อมูลตัวอย่างก่อน เพื่อประมาณทรัพยากรที่ต้องใช้จริงก่อนนำไปใช้กับข้อมูลเต็มจำนวน

การประเมินต้นทุนควรแยกให้ชัดระหว่างค่าใช้จ่ายด้านพื้นที่จัดเก็บของ Supabase กับค่าใช้จ่ายในการเรียกโมเดลสร้าง Embedding จากผู้ให้บริการภายนอก เพราะสองส่วนนี้เป็นคนละบิลกัน การสร้าง Embedding ใหม่ทุกครั้งที่ข้อมูลเปลี่ยนแปลงบ่อยเกินจำเป็นอาจทำให้ต้นทุนฝั่งโมเดลสูงขึ้นโดยไม่จำเป็น ควรพิจารณาว่าข้อมูลส่วนไหนเปลี่ยนบ่อยจริงและควรอัปเดต Embedding ถี่แค่ไหนถึงจะเหมาะสม

สรุป

pgvector ทำให้ Postgres กลายเป็นฐานข้อมูลที่รองรับทั้งข้อมูลธุรกิจปกติและข้อมูลเวกเตอร์ในที่เดียว จุดแข็งที่สุดคือความสอดคล้องของข้อมูลและความง่ายในการผสมเงื่อนไขค้นหาความใกล้เคียงกับเงื่อนไขข้อมูลทั่วไปในคำสั่งเดียวกัน

สิ่งที่ตัดสินว่าระบบจะเร็วหรือช้าเมื่อข้อมูลเติบโตขึ้นไม่ใช่ตัว pgvector เอง แต่คือการตั้งดัชนีและเลือกตัวชี้วัดระยะห่างให้เหมาะสมตั้งแต่ต้น ทีมที่วางแผนเรื่องนี้ล่วงหน้าจะไม่ต้องมาแก้ปัญหาความเร็วย้อนหลังตอนข้อมูลมีจำนวนมากแล้ว

  • pgvector คือส่วนขยายของ PostgreSQL ที่เพิ่มชนิดข้อมูลเวกเตอร์และฟังก์ชันคำนวณระยะห่างเข้าไปในฐานข้อมูล
  • เลือกตัวชี้วัดระยะห่าง (Cosine, Euclidean, Inner Product) ให้ตรงกับคำแนะนำของโมเดลที่ใช้สร้าง Embedding
  • ตั้งดัชนี IVFFlat หรือ HNSW ให้เหมาะกับขนาดข้อมูล อย่ารอจนข้อมูลเยอะแล้วค่อยตั้ง
  • ผสมเงื่อนไขค้นหาความใกล้เคียงกับเงื่อนไขข้อมูลปกติในคำสั่งเดียวกันได้ เพราะอยู่ในฐานข้อมูลเดียวกัน

คำถามที่พบบ่อย

pgvector ใช้ฟรีไหม หรือเป็นฟีเจอร์เสียเงินเพิ่ม

pgvector เป็นส่วนขยายโอเพนซอร์สที่เปิดให้ใช้ได้ในทุกแผนของ Supabase รวมถึงแผนไม่เสียเงิน แต่ควรตรวจหน้าราคาปัจจุบันเรื่องทรัพยากรที่จำกัดในแต่ละแผน เพราะข้อมูลเวกเตอร์อาจใช้พื้นที่จัดเก็บมากกว่าข้อมูลข้อความปกติ

IVFFlat กับ HNSW เลือกยากไหม ต้องรู้ลึกด้านคณิตศาสตร์ไหม

ไม่จำเป็นต้องเข้าใจสูตรคณิตศาสตร์เบื้องหลังลึกมาก แค่เข้าใจหลักการคร่าว ๆ ว่า IVFFlat ใช้ทรัพยากรตอนสร้างดัชนีน้อยกว่า ส่วน HNSW มักให้ความแม่นยำดีกว่าในหลายกรณี แล้วทดสอบกับข้อมูลจริงของโปรเจกต์เพื่อตัดสินใจ

ถ้าเปลี่ยนโมเดลที่ใช้สร้าง Embedding ทีหลัง ต้องทำอะไรเพิ่ม

ต้องสร้าง Embedding ใหม่ทั้งหมดด้วยโมเดลใหม่ เพราะเวกเตอร์จากโมเดลต่างกันไม่สามารถเทียบกันได้โดยตรง และควรตรวจว่าจำนวนมิติของโมเดลใหม่ตรงกับคอลัมน์ที่ตั้งไว้หรือไม่ ถ้าไม่ตรงต้องปรับโครงสร้างตารางด้วย

pgvector รองรับข้อมูลจำนวนกี่ล้านแถวได้จริง

ไม่มีตัวเลขตายตัวที่ใช้ได้กับทุกกรณี ขึ้นอยู่กับขนาดเซิร์ฟเวอร์ที่เลือกใช้ การตั้งดัชนีให้เหมาะสม และรูปแบบการใช้งานจริง ควรทดสอบภาระงานจำลองก่อนตัดสินใจผูกระบบสำคัญกับปริมาณข้อมูลระดับใหญ่มาก

ต้องติดตั้งอะไรเพิ่มในเครื่องตัวเองไหมถึงจะใช้ pgvector บน Supabase ได้

ไม่ต้องติดตั้งอะไรเพิ่มในเครื่องของทีมพัฒนา เพราะ pgvector เป็นส่วนขยายที่เปิดใช้งานได้จากแดชบอร์ดของ Supabase โดยตรง งานของทีมคือเขียนโค้ดฝั่งแอปพลิเคชันให้เรียก Query ผ่านไลบรารีที่ใช้เชื่อมต่อฐานข้อมูลตามปกติ

จำเป็นต้องเรียนรู้ SQL เพิ่มเติมโดยเฉพาะสำหรับ pgvector ไหม

ควรเข้าใจไวยากรณ์ SQL เพิ่มเติมเล็กน้อยสำหรับคำสั่งค้นหาความใกล้เคียง เพราะมีตัวดำเนินการเฉพาะสำหรับเปรียบเทียบเวกเตอร์ที่ต่างจากคำสั่งเทียบข้อมูลข้อความหรือตัวเลขปกติ แต่ไม่ได้ซับซ้อนถึงขั้นต้องเรียนรู้ภาษาใหม่ทั้งหมด

ทดลองวัดผลโฆษณาเข้า LINE ฟรี 14 วัน

สมัครแล้วสร้างโปรเจกต์ เชื่อม LINE ติดตั้ง Tracking แล้วเริ่มเห็น Funnel จาก Click ถึง Purchase ได้ทันที ไม่ต้องใช้บัตรเครดิต

เริ่มทดลองใช้ฟรี 14 วัน

บทความที่เกี่ยวข้อง

เพิ่มวิธีค้นหาเป็นสองแบบแล้ว ทำไมผลลัพธ์บางครั้งยังแย่กว่าใช้วิธีเดียว

เพิ่มวิธีค้นหาเป็นสองแบบแล้ว ทำไมผลลัพธ์บางครั้งยังแย่กว่าใช้วิธีเดียว

หลายทีมเข้าใจว่าเอา Keyword Search กับ Vector Search มาต่อกันแล้วผลลัพธ์จะดีขึ้นเสมอ แต่ในทางปฏิบัติ Supabase hybrid search ที่ตั้งค่าไม่ถูกวิธีอาจให้ผลแย่กว่าใช้วิธีเดียวด้วยซ้ำ บทความนี้อธิบายว่า Hybrid Search ทำงานยังไง จุดไหนที่ทำให้พัง และวิธีตั้งค่าให้ได้ผลจริง
เขียน Webhook ด้วย Supabase Edge Functions หรือ Next.js API Route ต่างกันตรงไหน

เขียน Webhook ด้วย Supabase Edge Functions หรือ Next.js API Route ต่างกันตรงไหน

ทั้งสองทางเขียนโค้ด TypeScript รับ request ได้เหมือนกัน แต่รันคนละ runtime คนละที่ตั้ง และเหมาะกับงานคนละแบบ บทความนี้เจาะให้เห็นว่าเมื่อไหร่ควรเลือกทางไหน
บอทมี RAG ครบแล้ว ทำไมบางคำถามยังตอบผิดหรือตอบไม่ได้เลย

บอทมี RAG ครบแล้ว ทำไมบางคำถามยังตอบผิดหรือตอบไม่ได้เลย

ทีมที่ต่อโมเดลภาษาเข้ากับฐานข้อมูลแล้วยังเจอปัญหาบอทตอบผิดหรือตอบไม่ได้บ่อย ทั้งที่คำตอบที่ถูกต้องมีอยู่ในเอกสารจริง บทความนี้อธิบายว่า Supabase RAG ควรออกแบบฐานข้อมูล ขั้นตอนดึงข้อมูล และการวัดคุณภาพยังไง เพื่อลดปัญหาคำตอบผิดพลาด