หลังจากที่ไปแบ่งปันความรู้เรื่องการพัฒนา RAG app (Retrieval-Augmented Generation) มานิดหน่อย
ซึ่งมีกระบวนการพื้นฐานประกอบไปด้วย

  • Chunking
  • Embedding
  • บันทึกลง Vector Database
  • ทำการค้นหาข้อมูลที่ใกล้เคียง
  • ทำการ re-rank ผล

หนึ่งในขั้นตอนที่น่าสนใจคือ Vector Database
เราจะใช้อะไรดี ซึ่งมีให้เลือกมากมาย ตามความเหมาะสม หรือ ความชอบก็ว่าไป
หนึ่งในตัวที่ถามในการแบ่งปันคือ MongoDB
ดังนั้นมาลองใช้งานกันหน่อย

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

ใน Workshop นี้ผมเลือกติดตั้งด้วย Docker

ด้วยการเขียนไฟล์ docker compose ขึ้นมาดังนี้

ทำการติดตั้งแบบง่าย ๆ

จากนั้นทำการเขียน code เพื่อทำการบันทึกข้อมูลลง MonogDB Atlas
ซึ่งก่อนจะบันทึกและค้นหาได้นั้น ต้องทำดังนี้

  • สร้าง database และ collection สำหรับจัดเก็บข้อมูล
  • ทำการ embedding ข้อมูลที่ต้องการบันทึกลอง property ที่เป็น Vector type
  • ทำการสร้าง index ให้เป็น type=vectorSearch ใช้สำหรับค้นหา สามารถกำหนก similarity algorithm ได้ โดยจากตัวอย่างใช้ cosine

ตัวอย่าง code เป็นดังนี้

จากนั้นก็สามารถทำการค้นหาข้อมูลด้วย Vector search ได้แล้ว
เป็นอีกหนึ่งทางเลือกที่น่าสนใจ
จะพบว่า Database model ต่าง ๆ จะสนับสนุน Vector type เข้ามา
ทั้ง MySQL, PostgreSQL, SQLite และ Elasticserch/OpenSearch เป็นต้น

Reference Websites