
หลังจากที่ไปแบ่งปันความรู้เรื่องการพัฒนา RAG app (Retrieval-Augmented Generation) มานิดหน่อย
ซึ่งมีกระบวนการพื้นฐานประกอบไปด้วย
- Chunking
- Embedding
- บันทึกลง Vector Database
- ทำการค้นหาข้อมูลที่ใกล้เคียง
- ทำการ re-rank ผล
หนึ่งในขั้นตอนที่น่าสนใจคือ Vector Database
เราจะใช้อะไรดี ซึ่งมีให้เลือกมากมาย ตามความเหมาะสม หรือ ความชอบก็ว่าไป
หนึ่งในตัวที่ถามในการแบ่งปันคือ MongoDB
ดังนั้นมาลองใช้งานกันหน่อย
โดยการเก็บข้อมูลชนิด Vector ใน MongoDB นั้น
จะเป็นความสามารถของ MongoDB Atlas
และเราสามารถทำการติดตั้งบน local เพื่อทดลองใช้งานได้เช่นเดียวกัน
ซึ่งทาง MongoDB ได้เตรียมการติดตั้งไว้ให้ทั้ง
- CLI
- Docker
ใน 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