สิ่งที่ได้เรียนรู้จากการทำงานที่บริษัท Vector DB ตลอด 2 ปี
(leoniemonigatti.com)ทำงานอยู่ที่ Weaviate ซึ่งเป็น Vector DB และได้สรุปบทเรียน 37 ข้อจากประสบการณ์การใช้งานจริง
↳ ตั้งแต่ ประโยชน์ของ BM25 และการค้นหาด้วยคีย์เวิร์ด ไปจนถึง vector search, embedding และ hybrid search
1. BM25 เป็น baseline ที่ทรงพลังสำหรับการค้นหา
- ในทางปฏิบัติ ควรเริ่มจาก การค้นหาด้วยคีย์เวิร์ดแบบง่าย เช่น BM25 เพื่อตรวจสอบประสิทธิภาพก่อน แล้วค่อยขยายไปสู่ vector search แบบค่อยเป็นค่อยไป แทนที่จะเริ่มจากระบบที่ซับซ้อนกว่า
2. Vector search เป็นแบบประมาณค่า (Approximate) ไม่ใช่แบบแม่นยำตรงตัว (Exact)
- สำหรับข้อมูลขนาดใหญ่ มักใช้ อัลกอริทึม nearest neighbor แบบประมาณค่า (ANN) เช่น HNSW, IVF, ScaNN เพื่อเพิ่มความเร็ว แต่ก็ต้องแลกกับความแม่นยำบางส่วน
- การทำ vector indexing คือหัวใจสำคัญที่ทำให้ vector DB รองรับความเร็วในสเกลใหญ่ได้
3. Vector DB ไม่ได้เก็บแค่ embedding
- ยังเก็บ ข้อมูลต้นฉบับ (เช่น ข้อความ) และ metadata ร่วมด้วย จึงรองรับการกรองด้วย metadata, การค้นหาด้วยคีย์เวิร์ด และ hybrid search ได้
4. กรณีใช้งานหลักของ vector DB ไม่ใช่ Generative AI แต่คือ ‘การค้นหา’
- การใส่ context ให้ LLM ก็มีแก่นแท้เป็น ‘การค้นหา’ เช่นกัน และ vector DB กับ LLM เป็นคู่ที่เข้ากันได้ดีมาก
5. ต้องระบุจำนวนผลลัพธ์การค้นหาด้วยตนเอง
- หากไม่กำหนดพารามิเตอร์
limitหรือtop_kระบบจะเรียงและส่งคืนผลลัพธ์ทั้งหมดที่ใกล้กับ query มากที่สุด
6. Embedding มีหลายประเภท
- นอกจาก dense vector แล้ว ยังมีฟอร์แมตของ embedding vector แบบ sparse, binary, multi-vector และอื่น ๆ อีก
7. Benchmark สำหรับเลือก embedding model
- MTEB ครอบคลุมงาน embedding หลากหลายประเภท เช่น classification, clustering, retrieval
- หากเน้น information retrieval โดยเฉพาะ ให้ดู BEIR
8. โมเดลส่วนใหญ่ใน MTEB รองรับภาษาอังกฤษเป็นหลัก
- หากใช้งานหลายภาษาหรือภาษาที่ไม่ใช่อังกฤษ แนะนำให้ใช้ benchmark อย่าง MMTEB
9. ประวัติของ embedding: Static vs Contextual
- Static embedding อย่าง Word2Vec, GloVe เป็นตัวแทนแบบคงที่ของแต่ละคำ
- Contextual embedding อย่าง BERT จะสร้างเวกเตอร์แบบไดนามิกตามบริบท
- Static embedding ยังมีข้อดีในสภาพแวดล้อมที่มีข้อจำกัดด้านทรัพยากร เพราะอ้างอิงได้รวดเร็ว
10. ความต่างระหว่าง sparse vector กับ sparse embedding
- sparse vector: อาจสร้างจากวิธีเชิงสถิติอย่าง TF-IDF/BM25 หรือจาก neural method (sparse embedding, SPLADE เป็นต้น)
- sparse embedding ทุกแบบเป็น sparse vector แต่ sparse vector ไม่ได้เป็น sparse embedding เสมอไป
11. สามารถทำ embedding ให้ข้อมูลได้หลากหลายนอกเหนือจากข้อความ
- ข้อมูลอย่าง รูปภาพ, PDF (หลังแปลงเป็นภาพ), กราฟ ฯลฯ ก็สามารถทำ embedding เพื่อรองรับ multimodal vector search ได้
12. จำนวนมิติของ embedding กับต้นทุนการจัดเก็บ
- เมื่อจำนวนมิติเพิ่มขึ้น ต้นทุนด้าน storage ก็เพิ่มขึ้นตาม
- สำหรับงานง่าย ๆ เช่น “chatbot” อาจไม่จำเป็นต้องใช้โมเดลมิติสูง
- และยังสามารถลดมิติได้ด้วย Matryoshka Representation Learning
13. บทสอน “Chat with your docs” คือ hello world ของ Generative AI
14. Embedding model ต้องถูกเรียกใช้งานซ้ำอย่างต่อเนื่อง
- ไม่ใช่แค่ตอน ingestion ของเอกสาร แต่ยังรวมถึงตอน query, ตอนเพิ่ม/แก้ไขเอกสาร และตอนเปลี่ยน embedding model ซึ่งทุกครั้งล้วนต้อง ทำ embedding และ indexing
15. Vector similarity อาจไม่เท่ากับ relevance ที่แท้จริง
- ประโยคที่คล้ายกัน (เช่น “วิธีซ่อมก๊อกน้ำ” กับ “ซื้อก๊อกน้ำที่ไหน”) อาจมีความเกี่ยวข้องจริงต่ำก็ได้
16. Cosine similarity กับ cosine distance ไม่เหมือนกัน
- similarity กับ distance มีความสัมพันธ์แบบแปรผกผันกันในเชิงคณิตศาสตร์
- ถ้าเป็นเวกเตอร์เดียวกัน similarity จะเป็น 1 และ distance จะเป็น 0
17. เมื่อทำ normalization ให้เวกเตอร์แล้ว cosine similarity จะเท่ากับ dot product
- ถ้าเป็น normalized vector การคำนวณด้วย dot product จะมีประสิทธิภาพมากกว่า
18. R ใน RAG ไม่ได้ย่อมาจาก ‘vector search’ แต่คือ ‘retrieval’
- วิธี retrieval ใน RAG มีได้หลากหลาย ทั้งคีย์เวิร์ด เวกเตอร์ ฟิลเตอร์ ฯลฯ
19. Vector search เป็นเพียงหนึ่งในเครื่องมือค้นหา
- สิ่งสำคัญคือการผสานหลายวิธีเข้าด้วยกัน เช่น keyword search, filtering, reranking และแนวทางแบบ hybrid
20. การเลือกใช้ keyword/vector search ให้เหมาะสม
- การจับคู่เชิงความหมายหรือคำพ้องเหมาะกับ vector search, คีย์เวิร์ดที่ต้องตรงเป๊ะเหมาะกับ keyword search และหากต้องการทั้งสองอย่างก็ควรใช้ hybrid search พร้อมปรับน้ำหนัก
alpha
21. ความหมายของ hybrid search
- โดยทั่วไปหมายถึงการผสาน keyword + vector แต่การผสานกับวิธีค้นหาอื่น เช่น metadata ก็เรียกว่า ‘hybrid’ ได้เช่นกัน
22. การทำ filtering ไม่ได้ช่วยเพิ่มความเร็วเสมอไป
- เช่น อาจทำให้ connectivity ของกราฟ HNSW เสียไป หรือหากเป็น post-filtering ก็อาจไม่เหลือผลลัพธ์เลย
- vector DB แต่ละตัวจึงมีเทคนิค optimization สำหรับเรื่องนี้ต่างกันไป
23. ประโยชน์ของ search pipeline แบบสองขั้นตอน
- ไม่ใช่แค่ระบบแนะนำเท่านั้น แต่ในงานอย่าง RAG ก็สามารถดึง candidate ชุดแรกมาก่อน แล้วใช้ reranking ประสิทธิภาพสูงในรอบที่สองเพื่อยกระดับคุณภาพได้
24. ความต่างระหว่าง vector search กับ reranking
- vector search คือการคืนผลลัพธ์บางส่วนจากทั้งฐานข้อมูล ส่วน reranking คือการจัดลำดับใหม่ให้กับชุดผลลัพธ์ที่ได้รับมาแล้ว
25. การเลือกขนาด chunk สำหรับทำ embedding เป็นเรื่องยาก
- ถ้าเล็กเกินไปจะสูญเสียบริบท ถ้าใหญ่เกินไปความหมายก็จะเจือจาง
- แม้จะสามารถเวกเตอร์ไรซ์ทั้งเอกสารด้วยวิธีอย่าง mean pooling ได้ แต่ข้อมูลอาจถูกเจือจางเช่นกัน (เปรียบเหมือนการเอาทุกเฟรมของหนังมารวมกันเป็นโปสเตอร์ใบเดียว)
26. ความต่างระหว่าง vector indexing library กับ vector DB
- ทั้งคู่ทำงานได้รวดเร็ว แต่ vector DB ยังมีความสามารถด้านการจัดการข้อมูล เช่น durability, CRUD, filter/hybrid เป็นต้น
27. แม้ LLM จะมี context ยาวขึ้น แต่ RAG ก็ยังพัฒนาต่อไป
- ทุกครั้งที่มี long-context LLM ออกมา มักจะมีคำพูดว่า ‘RAG ตายแล้ว’ แต่ในความเป็นจริงมันยังจำเป็นอยู่เสมอ
28. แม้ลดข้อมูลลง 97% ด้วย vector quantization ก็ยังรักษาความสามารถในการค้นหาได้
- การใช้เทคนิคอย่าง binary quantization สามารถลด storage ได้ถึง 32 เท่า (เช่น จาก 32-bit float เหลือ 1-bit)
29. Vector search ไม่ robust ต่อการพิมพ์ผิด
- แม้จะมี text corpus ขนาดใหญ่ ก็ไม่ได้หมายความว่าจะครอบคลุมคำสะกดผิดทุกแบบ แต่จะรองรับได้เพียงบางส่วนเท่านั้น
30. มีตัวชี้วัดสำหรับประเมินคุณภาพการค้นหาหลากหลายแบบ
- มีทั้งตัวชี้วัดตามลำดับอันดับอย่าง NDCG@k และตัวชี้วัดพื้นฐานอย่าง Precision/Recall ซึ่งก็มีประโยชน์ตามสถานการณ์
31. ตัวอย่าง trade-off ระหว่าง Precision กับ Recall ในงานจริง
- เช่น การคืนผลลัพธ์เพียงรายการเดียว (Precision ↑ / Recall ↓) หรือคืนผลลัพธ์ทั้งหมด (Recall ↑ / Precision ↓) เพื่ออธิบายกรณีสุดขั้ว
32. ตัวชี้วัดที่สะท้อนลำดับของผลการค้นหา
- Precision/Recall ไม่สะท้อนลำดับ ดังนั้นจึงต้องใช้ตัวชี้วัดอย่าง MRR@k, MAP@k, NDCG@k ที่คำนึงถึงอันดับด้วย
33. อิทธิพลของ tokenizer
- ไม่ใช่แค่ BPE เท่านั้น แต่ tokenizer ยังส่งผลต่อคุณภาพของ keyword/hybrid search ด้วย
34. Out-of-domain กับ out-of-vocabulary ไม่เหมือนกัน
- OOV อาจแก้ได้ด้วย tokenizer ที่ฉลาด แต่ out-of-domain หมายถึง embedding นั้นแทบไม่มีความหมายในโดเมนนั้นเลย
35. ความจำเป็นของการปรับแต่ง query
- เช่นเดียวกับ keyword search, vector search ก็ต้องอาศัยนิสัยการปรับแต่งข้อความค้นหาให้เหมาะสม
36. กระบวนทัศน์ถัดจาก vector search
- วิวัฒนาการกำลังเดินจาก keyword search → vector search → retrieval ที่อิงกับการให้เหตุผลของ LLM
37. Information retrieval คือหนึ่งในสาขาที่ ‘ร้อนแรง’ ที่สุดในตอนนี้
- เมื่อทำงานร่วมกับ LLM ภารกิจที่สำคัญที่สุดอย่างหนึ่งคือการค้นหา ‘ข้อมูลที่เหมาะสมที่สุด’ เพื่อส่งให้ LLM
1 ความคิดเห็น
ดีจังที่ได้อ่านประเด็นชวนคิดหลายอย่างจากการทำงานกับการค้นหาแบบเวกเตอร์