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

คลังเวกเตอร์: Chroma และ FAISS

การสร้างและบันทึกคลังเวกเตอร์ การค้นหาความคล้ายคลึง การดึงข้อมูลด้วย MMR และการค้นหาแบบผสม

คลังเวกเตอร์: Chroma และ FAISS เป็นบทเรียน Learn AI with Python ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Learn AI with Python และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Learn AI with Python มีบทเรียนทั้งหมด 4 บทเรียน

ที่จัดเก็บเวกเตอร์คืออะไร

ที่จัดเก็บเวกเตอร์จะเก็บส่วนย่อยที่ฝังเวกเตอร์แล้ว และค้นหาส่วนย่อยที่มีความคล้ายคลึงกับเวกเตอร์คำค้นมากที่สุด นี่คือเครื่องมือค้นหาที่เป็นหัวใจของ RAG ตัวเลือกยอดนิยมสองแบบคือ โครมาและ FAISS

pip install langchain-chroma faiss-cpu

การสร้างที่จัดเก็บโครมา

Chroma.from_documents จะฝังเวกเตอร์ส่วนย่อยและสร้างดัชนีในคำสั่งเดียว ส่งเอกสารและออบเจ็กต์เวกเตอร์ฝังตัวเข้าไป แล้วโครมาจะส่งคืนที่จัดเก็บซึ่งคุณค้นหาได้ทันที

from langchain_chroma import Chroma
from langchain_openai import OpenAIEmbeddings

embeddings = OpenAIEmbeddings(model="text-embedding-3-small")
db = Chroma.from_documents(chunks, embeddings)

การบันทึกโครมาลงดิสก์

ส่งค่า persist_directory เพื่อบันทึกดัชนีลงดิสก์และเก็บไว้ได้แม้เริ่มระบบใหม่ ภายหลังให้โหลดกลับมาโดยสร้าง Chroma ด้วยไดเรกทอรีและออบเจ็กต์เวกเตอร์ฝังตัวเดิม ซึ่งช่วยหลีกเลี่ยงค่าใช้จ่ายในการฝังเวกเตอร์ซ้ำ

db = Chroma.from_documents(
    chunks, embeddings,
    persist_directory="./chroma_db"
)

# Reload later
db = Chroma(persist_directory="./chroma_db", embedding_function=embeddings)

การค้นหาความคล้ายคลึง

ค้นหาด้วย similarity_search(query, k=4) ระบบจะฝังเวกเตอร์คำค้น ค้นหาส่วนย่อยที่ใกล้ที่สุดจำนวน k รายการ และส่งคืนเป็นเอกสาร k ใช้ควบคุมจำนวนข้อความที่ดึงมา

results = db.similarity_search("How do I reset my password?", k=4)
for doc in results:
    print(doc.page_content[:80])

คะแนนจากการค้นหา

ใช้ similarity_search_with_score เพื่อรับคะแนนระยะห่างของผลลัพธ์แต่ละรายการด้วย ระยะห่างที่ต่ำกว่าหมายถึงมีความคล้ายคลึงมากกว่า คะแนนช่วยให้คุณกรองผลลัพธ์ที่ตรงกันอย่างอ่อนออกก่อนส่งต่อให้ LLM

pairs = db.similarity_search_with_score("password reset", k=4)
for doc, score in pairs:
    print(round(score, 3), doc.page_content[:60])

ทำความรู้จัก FAISS

FAISS (การค้นหาความคล้ายคลึงด้วยปัญญาประดิษฐ์ของ Facebook) คือไลบรารีประสิทธิภาพสูงสำหรับการค้นหาเวกเตอร์ มีความรวดเร็วและใช้หน่วยความจำอย่างมีประสิทธิภาพเป็นอย่างมาก เหมาะสำหรับดัชนีขนาดใหญ่ภายในเครื่องที่ไม่ต้องใช้เซิร์ฟเวอร์แยกต่างหาก

การสร้างที่จัดเก็บ FAISS

ส่วนติดต่อการใช้งานมีรูปแบบคล้ายกับโครมา: FAISS.from_documents ใช้สร้างดัชนี FAISS จะเก็บดัชนีไว้ในหน่วยความจำ จึงเหมาะอย่างยิ่งกับการค้นหาภายในกระบวนการที่เน้นการอ่าน

from langchain_community.vectorstores import FAISS

db = FAISS.from_documents(chunks, embeddings)
results = db.similarity_search("refund policy", k=3)

การบันทึกและโหลด FAISS

บันทึกดัชนี FAISS ถาวรด้วย save_local และโหลดกลับมาด้วย load_local การโหลดกลับมาต้องใช้ allow_dangerous_deserialization=True เนื่องจากดัชนีใช้รูปแบบพิกเคิล

db.save_local("faiss_index")

db = FAISS.load_local(
    "faiss_index", embeddings,
    allow_dangerous_deserialization=True
)

ความเกี่ยวข้องกับความหลากหลาย

การค้นหาด้วยความคล้ายคลึงแบบธรรมดาอาจส่งคืนส่วนย่อยสี่ส่วนที่แทบเหมือนกันทุกประการ บางครั้งคุณต้องการผลลัพธ์ที่ หลากหลาย และครอบคลุมแง่มุมต่าง ๆ ของคำตอบ นี่คือจุดที่ MMR เข้ามาช่วย

การดึงข้อมูลด้วย MMR

ความเกี่ยวข้องส่วนเพิ่มสูงสุด (MMR) สร้างสมดุลระหว่างความเกี่ยวข้องกับความหลากหลาย โดยเลือกส่วนย่อยที่เกี่ยวข้องแต่ไม่ซ้ำซ้อน ใช้ search_type="mmr" ผ่านส่วนติดต่อของตัวดึงข้อมูล

retriever = db.as_retriever(
    search_type="mmr",
    search_kwargs={"k": 4, "fetch_k": 20}
)
docs = retriever.invoke("password reset")

การเลือกโครมาหรือ FAISS

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

ตรวจสอบความเข้าใจ

ทดสอบความรู้เกี่ยวกับที่จัดเก็บเวกเตอร์ของคุณ

ทบทวน: โครมาและ FAISS

คุณสร้างที่จัดเก็บเวกเตอร์ด้วย Chroma.from_documents (โดยใช้ persist_directory) และ FAISS.from_documents ค้นหาด้วย similarity_search(query, k=4) และบันทึกหรือโหลดที่จัดเก็บทั้งสองแบบ คุณใช้ as_retriever ร่วมกับ MMR เพื่อรับผลลัพธ์ที่หลากหลาย และเรียนรู้ว่าเมื่อใดควรเลือกใช้ที่จัดเก็บแต่ละแบบ

คำถามที่พบบ่อย

บทเรียน “คลังเวกเตอร์: Chroma และ FAISS” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “คลังเวกเตอร์: Chroma และ FAISS” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Learn AI with Python ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Learn AI with Python มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “คลังเวกเตอร์: Chroma และ FAISS”

การสร้างและบันทึกคลังเวกเตอร์ การค้นหาความคล้ายคลึง การดึงข้อมูลด้วย MMR และการค้นหาแบบผสม คุณปฏิบัติ Learn AI with Python ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Learn AI with Python หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Learn AI with Python บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน

บทเรียน “คลังเวกเตอร์: Chroma และ FAISS” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Learn AI with Python นี้ได้ไหม

ได้ บทเรียน Learn AI with Python ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

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

  1. สถาปัตยกรรม LangChain และ LCEL
  2. การโหลด แบ่ง และสร้างเวกเตอร์ฝังสำหรับเอกสาร
  3. คลังเวกเตอร์: Chroma และ FAISS
  4. การสร้างระบบถาม–ตอบ RAG ตั้งแต่ต้นจนจบ
← กลับไปที่ Learn AI with Python