Data
November 29, 2023

Vector Database คืออะไร

ถ้าใครกำลังเข้าสู่วงการ Generative AI หรือ LLMs (Large Language Models) ก็จะมาพร้อม Method ใหม่ ๆ และศัพท์ใหม่ ๆ เช่น RAG (Retrieval Augmented Generation), Embedding หรือที่เราจะมาพูดถึงกันในวันนี้อย่าง Vector Database และแน่นอนว่าทุกคนที่กดเข้ามาอ่านคงจะสงสัยแหละว่า Vector Database คืออะไร? มาหาคำตอบได้ในนี้ค่ะ

Vector Database คืออะไร [อัพเดท 2024]

*แนะนำ Open Source Vector Database -> Weaviate*

*แนะนำ บทความประยุกต์ใช้ Vector Database -> สร้าง RAG ภาษาไทยด้วย LlamaIndex, Weaviate และ SeaLLM*

Vector Database คือ ฐานข้อมูลชนิดหนึ่งที่เก็บข้อมูลในรูปแบบของ Vector ก็คือไม่ว่าข้อมูลจะนำเข้ามาเป็นข้อความ รูปภาพ หรือไฟล์เสียง ก็จะถูกแปลงมาเก็บอยู่ในรูปแบบของ Vector นั่นเอง ซึ่งคุณสมบัติหลักของ Vector Database คือการเปรียบเทียบความเหมือนของข้อมูลได้รวดเร็ว จึงถูกเอาไปใช้ในงานหลาย ๆ แบบที่ต้องการค้นหาข้อมูลที่ relevant กัน เช่น recommendation system, search engine หรือในงาน generative AI

เรามาลองดูตัวอย่างกันว่า Vector Database เปรียบเทียบความเหมือนกันได้ยังไง

สมมติว่าเรามีข้อมูลของสายพันธุ์สัตว์ต่าง ๆ ได้แก่ Scottish Fold Cat, British Shorthair Cat, Siamese Cat, Persian Cat, Shiba Dog, African Lion, และ Bengal Tiger

Vector Database อาจจะจัดกลุ่มเป็นแบบนี้

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

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

Step 1 : Preparing Data

ก่อนจะทำการ import ข้อมูลเข้า Vector Database ก็จะต้อง Preparing Data หรือเตรียมข้อมูลก่อน ว่าข้อมูลที่เราต้องการ import เป็นรูปแบบไหน text, image, audio หรือ video เนื่องจากชนิดของข้อมูลก็เป็นส่วนสำคัญในการกำหนด Embedding Model เพราะแต่ละตัวก็ต้องใช้ Model คนละตัวกัน และต้องศึกษาถึงประสิทธิภาพการ Embedded ของแต่ละตัวก่อนเลือกใช้อีกด้วย

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

ตัวอย่าง

จากข้อมูลสายพันธุ์สัตว์ข้างบน เราจะเตรียมข้อมูลของแต่ละสายพันธุ์ไว้ในรูปแบบของ text ดังนี้

Scottish Fold เป็นสายพันธุ์แมว มีจุดเด่นที่หูพับ
British Shorthair เป็นสายพันธุ์แมว ลักษณะใกล้เคียงกับ Scottish แต่จะมีหูตั้งและโครงใหญ่กว่า
Siamese หรือวิเชียรมาศ เป็นสายพันธุ์แมวไทยโบราณ ลักษณะคือมีจุดสีดำแต้ม 9 จุดทั่วร่างกาย
Persian เป็นสายพันธุ์แมว จุดเด่นคือขนยาว ตากลมโต และหน้าแบน
Shiba เป็นสายพันธุ์สุนัขญี่ปุ่น ขนาดกลาง
African Lion สิงโต พบที่แอฟริกา จุดเด่นคือตัวผู้มีแผงคอ
Bengal Tiger หรือเสือโคร่งเบงกอล พบตามแถบอินเดีย ปากีสถาน เป็นหนึ่งในแมวป่าที่ตัวใหญ่ที่สุดที่มีชีวิตอยู่

Step 2 : Embedding Data

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

หมายเหตุ : ต้อง Config การ Embedding Model ด้วย มีผลต่อการแปลง Vector ถ้าตัดคำไม่ดี ก็อาจทำให้คำตอบออกมาเพี้ยนได้

จากตัวอย่างของเราในที่นี้เนื่องจากข้อมูลของเราอยู่ในรูปแบบของ text เราก็สามารถใช้งาน Word2Vec หรือ GPT หรือ Multilingual-e5-base (แนะนำ ๆ มีให้ Demo ในเว็บด้วย) ในการ Embedding ข้อมูลได้

Step 3 : Store Data

เมื่อ Embedding ข้อมูลเรียบร้อยแล้ว เราก็จะนำข้อมูลที่ถูกแปลงเป็น Vector เก็บเข้าไปใน Database ซึ่งถ้าแสดงผลออกมาในรูปแบบกราฟ อาจเห็นเป็นลักษณะนี้

ก็คือ Vector ที่ค่าใกล้เคียงกันก็จะกระจุกอยู่ด้วยกัน ในขณะที่ข้อมูลที่ไม่เกี่ยวข้องกันก็จะอยู่ห่างกันออกไป อย่างแมว กับ กล้วย ก็คืออยู่ห่างกันคนละฟาก

ถ้าจากตัวอย่างของเราก็คือกลุ่มแมวจะอยู่ใกล้กัน สุนัขก็จะอยู่ใกล้กับแมวแต่คนละกลุ่ม ส่วนแมวป่าอย่างเสือและสิงโตจะอยู่ใกล้กับแมวมากกว่าสุนัข

Step 4 : Search Data

หลังจากที่ได้เก็บข้อมูลใน Vector Database ครบ เราก็สามารถค้นหาข้อมูลที่ใกล้เคียงกันได้แล้ว ซึ่ง Vector Database ก็จะมี Similarity Metrics ซึ่งเป็น Algorithm ในการจัดเก็บ Index และเป็นรูปแบบการค้นหาข้อมูล โดยจะมี 3 วิธีหลัก ๆ ดังนี้

  1. Euclidean Distance - ใช้ “ระยะทาง” ระหว่าง Vector
  2. Cosine Similarity - ใช้ “มุม” ระหว่าง Vector
  3. Dot Product - ใช้ “การคูณ metrics” ของ Vector

โดยจะหาค่าที่น้อยที่สุดและนำมาเป็นคำตอบ ซึ่งแต่ละ Vector Database ก็จะรองรับ Similarity Metrics แตกต่างกันไปแต่ส่วนใหญ่ก็จะสามารถค้นหาด้วย 3 วิธีนี้ได้ โดยแต่ละคนก็ต้องไป config อีกทีว่าต้องการให้ค้นหาแบบใดจึงจะเหมาะสมกับข้อมูลของเรามากที่สุด รวมถึงต้องการให้แสดง Top เท่าไหร่

โดยปกติถ้าค้นหาผ่าน Vector Database โดยตรง เราจะต้องถามด้วย Code เหมือนเราต้องเขียน SQL Query ข้อมูลจาก RDBMS แต่ถ้า Query ผ่าน LLMs และ RAG เราก็จะสามารถถามคำถามเป็นภาษามนุษย์และได้รับคำตอบเป็นประโยคภาษามนุษย์ที่ผ่านการเรียบเรียงมาดีกว่า

มาลองดูจากตัวอย่าง โดยกรณีนี้เราจะถามผ่าน ChatGPT ทำให้เราตั้งคำถามเป็นภาษามนุษย์ได้

ขอสายพันธุ์แมวที่เหมือน Scottish Fold มากที่สุด 2 สายพันธุ์

เมื่อ ChatGPT ไปค้นหาข้อมูลจาก Vector Database ก็จะพบว่าสายพันธุ์ British Shorthair และ Persian จะเหมือน Scottish Fold มากที่สุด เนื่องจาก Vector ใกล้เคียงกันมากที่สุด ดังนั้นก็จะคืนค่า Prompt ออกมาเป็นข้อมูลของ British Shorthair และ Persian แล้วหลังจากนั้นก็จะเข้าสู่ LLMs และได้คำตอบออกมาเป็น

นี่ก็เป็นอีกตัวอย่างหนึ่งที่ประยุกต์ใช้ Vector Database กับ Generative AI ซึ่งนอกจากนี้ก็ยังสามารถนำไปใช้ได้ในอีกหลากหลาย Use Case เช่น การทำ Personalize Marketing, การพัฒนายารักษา, หรือการทำ Recommendation System ซึ่งมีประโยชน์มาก ๆ ทำให้ช่วงนี้มี Vector Database กำลังบูมขึ้นมาหลายเจ้าเลยทีเดียว (Pinecone, Weaviate, Chroma หรือถ้าใครถนัดใช้ Postgres ก็มี pgvector ลองไปหาดูได้)

เท่านี้ก็จบการแนะนำให้รู้จัก Vector Database แล้วค่ะ หวังว่าจะเข้าใจกันมากขึ้นนะคะ 😆

สำหรับใครที่สนใจบทความแบบนี้หรือบทความสอนการประยุกต์ใช้งาน LLMs

สามารถติดตาม Facebook Page : Vulture Prime หรือ Facebook Group : Nvidia User Group Thailand ได้ค่ะ ไว้พบกันบทความหน้า 👋

Extra Thanks : Vector Database และสำหรับคนอยากดูวิดีโอ Vector Database 2 (warning : ภาษาอังกฤษทั้งคู่จ้า)

No items found.
Aa

© 2023, All Rights Reserved, VulturePrime co., ltd.