0Pricing
Learn AI with Python · บทเรียน

บทนำสู่ฐานข้อมูลเวกเตอร์

เหตุผลที่มีฐานข้อมูลเวกเตอร์ 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. SQLite ด้วยโมดูล sqlite3 ของ Python
  2. การผสาน Pandas และ SQL
  3. การจัดเก็บและสืบค้นผลลัพธ์แมชชีนเลิร์นนิง
  4. บทนำสู่ฐานข้อมูลเวกเตอร์
← กลับไปที่ Learn AI with Python