ลดความยุ่งยากในการใช้คลาวด์ พูดคุยกับเจ้าหน้าที่

Vector Database ฐานข้อมูลที่ค้นหาด้วยความหมาย
Home Vector Database คืออะไร? ทำไมระบบ AI ต้องมี และวิธีเลือก Qdrant, Milvus หรือ pgvector

Vector Database คืออะไร? ทำไมระบบ AI ต้องมี และวิธีเลือก Qdrant, Milvus หรือ pgvector

เมื่อพนักงานค้นว่า "ลืมรหัสผ่านอีเมล" คำตอบอาจอยู่ในเอกสารชื่อ "ขั้นตอนรีเซ็ตรหัสผ่าน" ที่ไม่มีคำว่า "ลืม" เลย การค้นหาด้วยความหมายแบบนี้คือหน้าที่ของ Vector Database

บทความนี้อธิบายหลักการทำงาน วิธีเลือกระหว่าง Qdrant, Milvus และ pgvector และการดูแลระบบให้ปลอดภัย

สรุปสั้นสำหรับผู้บริหาร

  • คืออะไร: ฐานข้อมูลที่เก็บความหมายเป็นเวกเตอร์ และค้นรายการที่ใกล้เคียงที่สุดได้เร็ว

  • ใช้ทำอะไร: ชั้นค้นหาของ AI ที่ตอบจากเอกสาร (RAG)

  • หัวใจทางเทคนิค: ดัชนีแบบประมาณอย่าง HNSW ที่แลกความแม่นยำเล็กน้อยกับความเร็ว

  • ตัวเลือกหลัก: pgvector ต่อยอด PostgreSQL, Qdrant เด่นเรื่องกรองเงื่อนไข และ Milvus สำหรับข้อมูลขนาดใหญ่มาก

  • อย่าลืม: สำรองข้อมูลและคุมสิทธิ์เหมือนฐานข้อมูลหลัก

Vector Database คืออะไร?

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

ในระบบ RAG Vector Database คือชั้นที่หาท่อนเอกสารที่เกี่ยวข้องก่อนส่งให้ LLM เรียบเรียงคำตอบ ถ้าค้นผิด คำตอบก็มีโอกาสผิดตาม

Vector Database ทำงานอย่างไร?

แผนภาพการทำงานของ Vector Database ตั้งแต่สร้าง Embedding จัดเก็บพร้อม Metadata สร้างดัชนี HNSW จนถึงค้นหาและกรองผลลัพธ์

แผนภาพแสดงห้าขั้นหลักของการทำงาน เริ่มจาก Embedding

Embedding คืออะไร?

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

เวกเตอร์ในชุดเดียวกันต้องมาจากโมเดลเดียวกันและมีจำนวนมิติเท่ากัน ถ้าเปลี่ยนโมเดลต้องสร้างเวกเตอร์ใหม่ทั้งหมด

Vector Database วัดความใกล้ของเวกเตอร์อย่างไร?

การค้นหาความคล้าย (Similarity Search) คือการหาเวกเตอร์ K ตัวที่ใกล้คำค้นที่สุด ตัววัดที่พบบ่อยในงานข้อความคือ Cosine Similarity ซึ่งดูมุมระหว่างเวกเตอร์ ยิ่งค่าเข้าใกล้ 1 ความหมายยิ่งใกล้กัน

ใน pgvector ตัวดำเนินการ <=> ให้ Cosine Distance (1 ลบ Cosine Similarity) <-> ให้ระยะแบบยุคลิด (L2) และ <#> ให้ผลคูณภายในแบบติดลบ ควรเลือกตัววัดตามคำแนะนำของผู้พัฒนาโมเดล Embedding

ทำไม Vector Database ต้องใช้ดัชนีแบบ ANN อย่าง HNSW?

การเทียบคำค้นกับทุกเวกเตอร์ได้ Recall (สัดส่วนของผลลัพธ์ที่ใกล้ที่สุดจริงที่ค้นเจอ) สมบูรณ์ และเป็นค่าเริ่มต้นของ pgvector แต่ช้าลงตามปริมาณข้อมูล ดัชนีแบบ ANN (Approximate Nearest Neighbor) จึงยอมแลก Recall บางส่วนกับความเร็ว

HNSW ทำงานอย่างไร?

HNSW (Hierarchical Navigable Small World) มาจากงานวิจัยของ Malkov และ Yashunin ที่เผยแพร่บน arXiv ปี 2016 โครงสร้างเป็นกราฟหลายชั้น ชั้นบนมีจุดน้อยและเส้นเชื่อมยาว ชั้นล่างหนาแน่นและเชื่อมจุดที่ใกล้กัน

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

ปรับสมดุลความเร็วกับความแม่นยำอย่างไร?

ใน Qdrant ค่า m (จำนวนเส้นเชื่อมต่อจุด ค่าเริ่มต้น 16) และ ef_construct (จำนวนเพื่อนบ้านที่พิจารณาตอนสร้างดัชนี ค่าเริ่มต้น 100) ยิ่งสูงยิ่งแม่น แต่ใช้พื้นที่หรือเวลาสร้างมากขึ้น

ใน pgvector ค่า hnsw.ef_search เริ่มต้นที่ 40 ยิ่งสูง Recall ยิ่งดีแต่ช้าลง ส่วนดัชนี IVFFlat ที่แบ่งเวกเตอร์เป็นกลุ่ม สร้างเร็วและใช้หน่วยความจำน้อยกว่า HNSW แต่สมดุลความเร็วกับ Recall ด้อยกว่า

การกรองด้วย Metadata ใน Vector Database สำคัญแค่ไหน?

คำค้นจริงมักมีเงื่อนไขพ่วง เช่น เฉพาะแผนกบัญชี หรือเฉพาะเอกสารที่ผู้ถามมีสิทธิ์ ซึ่งเก็บเป็นข้อมูลกำกับ (Metadata) คู่กับเวกเตอร์

  • Qdrant: เรียกข้อมูลกำกับว่า Payload ถ้าสร้าง Payload Index (ดัชนีของฟิลด์ที่ใช้กรอง) ไว้ Filterable HNSW จะเพิ่มเส้นเชื่อมในกราฟตามค่าที่ทำดัชนี จึงกรองระหว่างค้นได้ ควรสร้างก่อนนำเข้าข้อมูล

  • pgvector: ใช้ WHERE ของ SQL ได้ แต่กับดัชนีแบบประมาณ การกรองเกิดหลังสแกนดัชนี เงื่อนไขที่ตรงกับข้อมูล 10% อาจได้ผลเฉลี่ยเพียง 4 แถวที่ค่าเริ่มต้น ตั้งแต่เวอร์ชัน 0.8.0 เปิด Iterative Index Scan ให้สแกนต่อจนได้ผลพอได้

  • Milvus: ค้นแบบ ANN ภายใต้เงื่อนไขกรองได้ และแยกข้อมูลหลายกลุ่มผู้ใช้ (Multi-tenancy) ได้ตั้งแต่ระดับฐานข้อมูลถึง Partition Key

เลือก Qdrant, Milvus หรือ pgvector อย่างไร?

ทั้งสามตัวติดตั้งบนเซิร์ฟเวอร์ขององค์กรได้ ควรทดสอบกับข้อมูลจริงก่อนตัดสินใจ

  • pgvector: ส่วนขยาย (Extension) ของ PostgreSQL เก็บเวกเตอร์ไว้กับข้อมูลเดิม ได้ ACID และ JOIN รองรับ HNSW และ IVFFlat ทำดัชนีชนิด vector ได้ถึง 2,000 มิติ เหมาะกับทีมที่ใช้ PostgreSQL อยู่แล้ว

  • Qdrant: Vector Database เฉพาะทางที่ใช้ดัชนีเวกเตอร์คู่กับ Payload Index เหมาะกับระบบที่ต้องกรองสิทธิ์หรือเงื่อนไขเกือบทุกคำค้น

  • Milvus: มีโหมด Lite (ไลบรารี Python) Standalone (Docker Image เดียว) และ Distributed บน Kubernetes ที่ออกแบบสำหรับข้อมูลระดับพันล้านเวกเตอร์ รองรับดัชนีหลายแบบ รวมถึง DiskANN และดัชนีบน GPU

ดูแล Vector Database ให้ปลอดภัยและกู้คืนได้อย่างไร?

  • สำรองข้อมูล: pgvector ใช้บันทึกธุรกรรม (WAL) ของ PostgreSQL จึงทำสำเนา (Replication) และกู้คืนแบบ Point-in-time ได้ ส่วน Milvus มีเครื่องมือ Milvus Backup

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

  • ความปลอดภัย: เปิดการยืนยันตัวตนและ TLS (เข้ารหัสการเชื่อมต่อ) วางฐานข้อมูลในเครือข่ายภายใน และให้แอปมีสิทธิ์เท่าที่จำเป็น Milvus รองรับทั้งสองอย่างพร้อม RBAC (สิทธิ์ตามบทบาท)

  • แยกข้อมูลแต่ละกลุ่มผู้ใช้: pgvector แนะนำ List Partitioning (แบ่งตารางตามรหัสกลุ่ม) หรือแยกตาราง

ต้องใช้พื้นที่จัดเก็บเท่าไหร่?

เอกสารของ pgvector ระบุว่าเวกเตอร์ชนิด vector ใช้ 4 × จำนวนมิติ + 8 ไบต์ต่อรายการ และ halfvec (ความละเอียดครึ่งหนึ่ง) ใช้ 2 × จำนวนมิติ + 8 ไบต์ เวกเตอร์ 1,024 มิติหนึ่งล้านรายการจึงใช้ราว 4.1 GB หรือราว 2.1 GB แบบ halfvec ยังไม่รวมข้อความและดัชนี

ควรวัดขนาดจริงกับข้อมูลตัวอย่างก่อนกำหนดสเปก

รัน Vector Database บนคลาวด์ไทยกับ THAI DATA CLOUD

Vector Database เก็บความหมายของเอกสารองค์กร จึงควรอยู่บนคลาวด์ที่ควบคุมได้

  • Cloud Server: รัน Qdrant หรือ Milvus แบบ Standalone ปรับเพิ่มลด CPU/RAM ได้เองเมื่อข้อมูลโตขึ้น SLA 99.9% เริ่มต้น 90 บาท/เดือน

  • Cloud Database Server: MySQL, MariaDB, MsSQL, PostgreSQL, MongoDB และ Redis บน NVMe SSD พร้อม SSL, Anti-DDoS และ WAF สำหรับข้อมูลธุรกิจ หากต้องการ pgvector โปรดสอบถามทีมงาน หรือติดตั้ง PostgreSQL พร้อม pgvector บน Cloud Server เอง

  • GPU Server: NVIDIA Tesla T4 / V100 ใน Data Center ประเทศไทย สำหรับสร้าง Embedding จากเอกสารจำนวนมากหรือรันโมเดล AI เอง เริ่มต้น 33,210 บาท/เดือน

  • Private Cloud: ข้อมูลอยู่ในประเทศ รองรับ PDPA มีทีมวิศวกรไทยดูแล 24/7 เหมาะกับแนวทาง Private AI

  • Cybersecurity: SOC เฝ้าระวัง 24x7, Managed Firewall และ Backup กัน Ransomware

คำถามที่พบบ่อยเกี่ยวกับ Vector Database

Vector Database ต่างจากฐานข้อมูลทั่วไปอย่างไร?

ฐานข้อมูลทั่วไปค้นข้อมูลที่ตรงเงื่อนไขแน่นอน เช่น รหัสลูกค้า ส่วน Vector Database ค้นข้อมูลที่ความหมายใกล้คำค้นที่สุด ระบบจริงจึงมักใช้ทั้งสองแบบคู่กัน

ใช้ PostgreSQL อยู่แล้ว ต้องมี Vector Database แยกไหม?

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

ดัชนี HNSW ทำให้ผลค้นหาไม่ครบไหม?

เป็นไปได้ เพราะเป็นการค้นแบบประมาณ ผลลัพธ์อาจต่างจากการเทียบทุกเวกเตอร์เล็กน้อย ปรับได้ด้วยค่า ef หรือ hnsw.ef_search ที่ยิ่งสูงยิ่งครบแต่ช้าลง

ต้องสำรองข้อมูล Vector Database อย่างไร?

ใช้เครื่องมือของแต่ละระบบ เช่น WAL ของ PostgreSQL สำหรับ pgvector หรือ Milvus Backup และเก็บเอกสารต้นฉบับกับชื่อรุ่นโมเดล Embedding ไว้สร้างเวกเตอร์ใหม่ พร้อมทดสอบกู้คืนจริง

สรุป: เลือก Vector Database ให้เหมาะกับข้อมูลและทีม

Vector Database มีผลโดยตรงต่อคุณภาพของ AI ที่ตอบจากข้อมูลองค์กร ใช้ pgvector ถ้ามี PostgreSQL อยู่แล้ว Qdrant เมื่อต้องกรองเงื่อนไขมาก และ Milvus เมื่อข้อมูลใหญ่มาก

ต้องการวาง Vector Database บนคลาวด์ในประเทศไทย ติดต่อทีม THAI DATA CLOUD ปรึกษาฟรี

แหล่งข้อมูลอ้างอิง

สอบถามข้อมูลบริการ

  • Categories:
  • AI

ผู้ให้บริการคลาวด์ไทย
เพื่อธุรกิจของคนไทย

"มุ่งมั่น" และ "มั่นคง"
พร้อมรับมือทุกการเติบโต
Trust Cloud
คลาว์ที่ปลอดภัย
คือรากฐานที่มั่นคง
cloud security