บทนำสู่ฐานข้อมูลเวกเตอร์
เหตุผลที่มีฐานข้อมูลเวกเตอร์ FAISS สำหรับการค้นหาความคล้ายคลึงภายในเครื่อง และการจัดเก็บเวกเตอร์ฝังตัวเพื่อการเรียกคืนข้อมูลด้วยปัญญาประดิษฐ์
บทนำสู่ฐานข้อมูลเวกเตอร์ เป็นบทเรียน Learn AI with Python ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Learn AI with Python และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Learn AI with Python มีบทเรียนทั้งหมด 4 บทเรียน
นอกเหนือจากการจับคู่แบบตรงทั้งหมด
ฐานข้อมูลแบบดั้งเดิมค้นหาแถวด้วยค่าที่ตรงกันทุกประการ (WHERE name = "x") แต่ปัญญาประดิษฐ์ทำงานกับเวกเตอร์ฝังความหมาย ซึ่งเป็นเวกเตอร์ที่เก็บความหมายไว้ และบ่อยครั้งคุณต้องการรายการที่คล้ายคลึงกับคำค้นหามากที่สุด ไม่ใช่รายการที่ตรงกันทุกประการ
ฐานข้อมูลเวกเตอร์มีไว้เพื่อทำให้การค้นหาความคล้ายคลึงนี้รวดเร็ว
เวกเตอร์ฝังความหมายคืออะไร
เวกเตอร์ฝังความหมายคือรายการตัวเลข (เวกเตอร์) ที่ใช้แทนข้อความ รูปภาพ หรือเสียง เพื่อให้รายการที่คล้ายกันอยู่ใกล้กันในปริภูมิเวกเตอร์
การค้นหาเชิงความหมาย ระบบแนะนำ และการสร้างที่เสริมด้วยการเรียกคืนข้อมูล (RAG) ล้วนมีเวกเตอร์ฝังความหมายเป็นพื้นฐาน
import numpy as np
# A toy 4-dim embedding for a sentence
vec = np.array([0.12, -0.43, 0.88, 0.05], dtype="float32")
print(vec.shape) # (4,)ทำไมไม่ใช้ฐานข้อมูลทั่วไป
การเปรียบเทียบคำค้นหากับเวกเตอร์นับล้านด้วยการวนตรวจทุกค่าใช้เวลานาน ฐานข้อมูลเวกเตอร์ใช้ดัชนีเฉพาะทางและการคำนวณระยะห่างเพื่อส่งคืนเวกเตอร์ใกล้เคียงที่สุดภายในเวลาไม่กี่มิลลิวินาที
นอกจากนี้ยังรองรับการขยายขนาด การจัดเก็บข้อมูลให้คงอยู่ และการจัดการข้อมูลกำกับควบคู่กับเวกเตอร์
การวัดความคล้ายคลึง
ความใกล้เคียงวัดด้วยเมตริกระยะห่าง:
- แอลทู (ยุคลิด) — ระยะทางเส้นตรง ยิ่งน้อยยิ่งใกล้
- โคไซน์ — มุมระหว่างเวกเตอร์ เหมาะสำหรับข้อความ
FAISS รองรับหลายแบบ เราจะใช้แอลทู
แนะนำ FAISS
FAISS (การค้นหาความคล้ายคลึงด้วยปัญญาประดิษฐ์ของเฟซบุ๊ก) เป็นไลบรารีฟรีที่รวดเร็วสำหรับการค้นหาเวกเตอร์ ไลบรารีนี้ทำงานภายในเครื่องโดยไม่ต้องใช้เซิร์ฟเวอร์ จึงเหมาะอย่างยิ่งสำหรับการเรียนรู้และการสร้างต้นแบบ
import faiss
import numpy as np
# pip install faiss-cpuการสร้างดัชนีด้วย IndexFlatL2
IndexFlatL2(dim) สร้างดัชนีแบบแบน (ตรวจทุกค่าและให้ผลลัพธ์ตรงทั้งหมด) โดยใช้ระยะห่างแบบแอลทู คุณต้องระบุจำนวนมิติของเวกเตอร์
ดัชนีแบบแบนหมายถึงผลลัพธ์ที่ตรงทั้งหมด จึงเหมาะอย่างยิ่งสำหรับชุดข้อมูลขนาดเล็กถึงปานกลาง
import faiss
dim = 4
index = faiss.IndexFlatL2(dim)
print(index.is_trained) # True (flat index needs no training)การเพิ่มเวกเตอร์ด้วย index.add
ป้อนเวกเตอร์ฝังความหมายเป็นอาร์เรย์ NumPy แบบเลขทศนิยม 32 บิตสองมิติที่มีรูปร่าง (n, dim) index.add จะจัดเก็บเวกเตอร์เหล่านั้น ส่วน index.ntotal จะรายงานจำนวนเวกเตอร์
import numpy as np
embeddings = np.random.random((100, dim)).astype("float32")
index.add(embeddings)
print(index.ntotal) # 100การค้นหาด้วย index.search
index.search(query, k) ส่งคืนเวกเตอร์ที่ใกล้เคียงที่สุดจำนวน k รายการ โดยส่งคืนอาร์เรย์สองชุด ได้แก่ ระยะห่าง D และดัชนี I (ตำแหน่งตามลำดับที่คุณเพิ่มข้อมูล)
query = np.random.random((1, dim)).astype("float32")
D, I = index.search(query, k=5)
print("nearest ids:", I[0])
print("distances:", D[0])จากดัชนีกลับไปยังรายการ
FAISS ส่งคืนตำแหน่ง ไม่ใช่ข้อมูลต้นฉบับของคุณ ให้เก็บรายการคู่ขนาน (หรือฐานข้อมูล) ที่จับคู่ตำแหน่งในดัชนีกับรายการจริง เพื่อให้คุณค้นหาข้อมูลจากผลลัพธ์ได้
docs = ["doc about cats", "doc about dogs", "doc about cars"]
# after search:
for pos in I[0]:
print(docs[pos]) # map id -> original documentกระบวนการทำงานค้นหาเชิงความหมายขนาดเล็ก
รูปแบบทั้งหมดมีดังนี้: สร้างเวกเตอร์ฝังความหมายให้เอกสาร เพิ่มเอกสารลงในดัชนี สร้างเวกเตอร์ฝังความหมายให้คำค้นหา ค้นหา แล้วส่งคืนเอกสารที่ตรงกัน (แบบจำลองฝังความหมาย เช่น แบบจำลองแปลงประโยคเป็นเวกเตอร์ จะสร้างเวกเตอร์เหล่านี้)
import faiss, numpy as np
# doc_vectors: (n, dim) from an embedding model
index = faiss.IndexFlatL2(doc_vectors.shape[1])
index.add(doc_vectors)
# query_vec: (1, dim) embedding of the user query
D, I = index.search(query_vec, k=3)
results = [docs[i] for i in I[0]]
print(results)เมื่อใดควรเลือกใช้ฐานข้อมูลเวกเตอร์
ใช้ฐานข้อมูลเวกเตอร์เมื่อคุณต้องการ:
- การค้นหาเชิงความหมายในข้อความหรือรูปภาพ
- คำแนะนำตามความคล้ายคลึง
- RAG: การเรียกคืนบริบทที่เกี่ยวข้องสำหรับ LLM
FAISS เหมาะอย่างยิ่งสำหรับการใช้งานภายในเครื่อง ส่วนตัวเลือกที่มีผู้ให้บริการจัดการ (ไพน์โคน วีเวียต และพีจีเวกเตอร์) จะเพิ่มความสามารถในการจัดเก็บข้อมูลให้คงอยู่และการรองรับขนาดที่ใหญ่ขึ้น
ตรวจสอบอย่างรวดเร็ว: การค้นหา FAISS
คุณเรียกใช้ index.search(query, k=5) บนดัชนี FAISS
สรุปทบทวน: ฐานข้อมูลเวกเตอร์
คุณได้เรียนรู้พื้นฐานของการค้นหาความคล้ายคลึงดังนี้:
- เวกเตอร์ฝังความหมายทำให้รายการที่คล้ายกันอยู่ใกล้กันในปริภูมิเวกเตอร์
- ฐานข้อมูลเวกเตอร์ทำให้การค้นหาเวกเตอร์ใกล้เคียงที่สุดรวดเร็วแม้มีข้อมูลจำนวนมาก
- FAISS
IndexFlatL2(dim)สร้างดัชนีแอลทูที่ให้ผลลัพธ์ตรงทั้งหมด index.add(embeddings)จัดเก็บเวกเตอร์ ส่วนindex.search(query, k)ส่งคืนระยะห่างและดัชนี- จับคู่ดัชนีที่ส่งคืนกลับไปยังรายการต้นฉบับของคุณ
เนื้อหาฐานข้อมูลจบลงเพียงเท่านี้ ต่อไป: การจัดโครงสร้างโครงการปัญญาประดิษฐ์ด้วยกิต
คำถามที่พบบ่อย
บทเรียน “บทนำสู่ฐานข้อมูลเวกเตอร์” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “บทนำสู่ฐานข้อมูลเวกเตอร์” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Learn AI with Python ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Learn AI with Python มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “บทนำสู่ฐานข้อมูลเวกเตอร์”
เหตุผลที่มีฐานข้อมูลเวกเตอร์ FAISS สำหรับการค้นหาความคล้ายคลึงภายในเครื่อง และการจัดเก็บเวกเตอร์ฝังตัวเพื่อการเรียกคืนข้อมูลด้วยปัญญาประดิษฐ์ คุณปฏิบัติ Learn AI with Python ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Learn AI with Python หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Learn AI with Python บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “บทนำสู่ฐานข้อมูลเวกเตอร์” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Learn AI with Python นี้ได้ไหม
ได้ บทเรียน Learn AI with Python ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- SQLite ด้วยโมดูล sqlite3 ของ Python
- การผสาน Pandas และ SQL
- การจัดเก็บและสืบค้นผลลัพธ์แมชชีนเลิร์นนิง
- บทนำสู่ฐานข้อมูลเวกเตอร์