0Pricing
AI Agents · บทเรียน

การค้นคืนหลายเวกเตอร์ (ColBERT)

สร้างดัชนีเวกเตอร์หลายตัวต่อเอกสาร เช่น หนึ่งตัวต่อโทเค็นหรือส่วนข้อมูล เพื่อการจับคู่ที่ละเอียด

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

บางส่วนของบทเรียนนี้ยังไม่ได้รับการแปล และแสดงเป็นภาษาอังกฤษ

เวกเตอร์เดียวไม่เพียงพอ

RAG มาตรฐานสร้างเอ็มเบดดิงของแต่ละส่วนข้อความเป็นเวกเตอร์เดียว เวกเตอร์นั้นจะเฉลี่ยข้อมูลทุกอย่างในส่วนข้อความ ทำให้สัญญาณที่ละเอียดสูญหาย

การเรียกคืนแบบหลายเวกเตอร์จัดเก็บเวกเตอร์ MULTIPLE รายการต่อเอกสาร และจับคู่ได้อย่างแม่นยำยิ่งขึ้น

แนวคิด ColBERT

ColBERT (Khattab และ Zaharia, 2020) สร้างเอ็มเบดดิงของ TOKEN แต่ละตัวในเอกสารและแต่ละโทเคนของคำค้น จากนั้นคำนวณความคล้ายคลึงสูงสุด:

score(q, d) = sum over q_token in q: max over d_token in d: cos(q_token, d_token)

เหตุใด ColBERT จึงเหนือกว่าเวกเตอร์เดียว

  • จับประเด็นหลายด้านของเอกสารได้ (เวกเตอร์เดียวทำไม่ได้)
  • รองรับเอกสารยาวได้ดีกว่า
  • มีรีคอลสูงกว่าสำหรับคำที่พบได้น้อย

ต้นทุนของ ColBERT

การจัดเก็บเวกเตอร์หนึ่งรายการต่อโทเคนแทนที่จะเป็นหนึ่งรายการต่อส่วนข้อความ:

  • หากส่วนข้อความมี 500 โทเคน จะใช้พื้นที่จัดเก็บมากขึ้น 500 เท่า
  • การค้นหาแต่ละครั้งต้องเปรียบเทียบคู่ข้อมูลมากขึ้นหลายเท่า

การทำควอนไทซ์และการตัดทอนช่วยลดต้นทุนลงได้ 10-50 เท่า แต่ก็ยังมีต้นทุนสูงอยู่

ColBERTv2

ColBERTv2 เพิ่มการบีบอัดส่วนตกค้าง โดยจัดกลุ่มโทเคนเข้าหาเซนทรอยด์ และจัดเก็บแต่ละโทเคนเป็น (รหัสเซนทรอยด์, ค่าส่วนตกค้างขนาดเล็ก) พื้นที่จัดเก็บลดลง 50 เท่า

การเรียกใช้ ColBERT

ไลบรารี RAGatouille ช่วยให้ทำได้ง่าย:

# pip install ragatouille
from ragatouille import RAGPretrainedModel

rag = RAGPretrainedModel.from_pretrained('colbert-ir/colbertv2.0')
rag.index(collection=documents, index_name='my_corpus')

results = rag.search(query='What is the refund policy?', k=5)

หลายเวกเตอร์ในทางปฏิบัติ

นอกเหนือจาก ColBERT ยังมีแนวทางแบบหลายเวกเตอร์อื่น ๆ:

  • ส่วนหลัก-ส่วนย่อย — สร้างเอ็มเบดดิงของส่วนย่อยขนาดเล็ก แล้วเรียกคืนส่วนหลักขนาดใหญ่
  • สรุป + ส่วนข้อความ — สร้างเอ็มเบดดิงทั้งสรุปเอกสารและส่วนข้อความแต่ละส่วน
  • คำถามสมมติ — สร้างเอ็มเบดดิงของคู่คำถามและคำตอบที่สังเคราะห์จากเอกสารแต่ละฉบับ

Hypothetical Questions Pattern

def index_with_hypos(doc):
    # Generate 5 plausible questions this doc could answer
    questions = llm.invoke(f'Write 5 questions answered by this doc:\n{doc}').content.split('\n')
    for q in questions:
        vector_db.add(embed(q), payload={'doc': doc, 'question': q})
# Now queries that match a stored hypothetical question retrieve the doc.

Parent-Child with LangChain

from langchain.retrievers import ParentDocumentRetriever
from langchain.storage import InMemoryStore

store = InMemoryStore()
retriever = ParentDocumentRetriever(
    vectorstore=child_vectorstore,
    docstore=store,
    child_splitter=child_splitter,    # small
    parent_splitter=parent_splitter   # large
)
retriever.add_documents(documents)
# Indexes small chunks, returns large parents.

เมื่อใดที่ควรใช้ ColBERT

  • การค้นหาที่มีความสำคัญสูง (กฎหมาย การแพทย์)
  • เอกสารยาว
  • เมื่อคุณรองรับต้นทุนด้านพื้นที่จัดเก็บได้

เมื่อใดที่ควรข้าม

  • คลังข้อมูลขนาดเล็ก
  • เส้นทางที่ไวต่อเวลาแฝง
  • โครงการที่มีข้อจำกัดด้านต้นทุน

การผสานกับ BM25

เพื่อให้ได้รีคอลสูงสุด ให้ผสานการเรียกคืนแบบหลายเวกเตอร์เข้ากับการค้นหาคำสำคัญแบบ BM25 ดั้งเดิม แล้วใช้การรวมอันดับแบบผกผันเพื่อรวมผลลัพธ์

การแลกเปลี่ยนของ ColBERT

การแลกเปลี่ยนหลักของการใช้การเรียกคืนแบบหลายเวกเตอร์สไตล์ ColBERT คืออะไร

สรุปทบทวน

เวกเตอร์หนึ่งรายการต่อส่วนข้อความทำให้ข้อมูลสูญหาย ColBERT จัดเก็บเวกเตอร์ต่อโทเคนเพื่อความแม่นยำที่สูงขึ้น RAGatouille ช่วยให้ใช้งานได้ง่าย ควรใช้เมื่อรีคอลมีความสำคัญและต้นทุนเอื้ออำนวย

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

บทเรียน “การค้นคืนหลายเวกเตอร์ (ColBERT)” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “การค้นคืนหลายเวกเตอร์ (ColBERT)”

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

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

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

บทเรียน “การค้นคืนหลายเวกเตอร์ (ColBERT)” ใช้เวลานานแค่ไหน

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

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

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

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

  1. การจัดอันดับใหม่ด้วยตัวเข้ารหัสไขว้
  2. HyDE: Embedding ของเอกสารสมมติ
  3. การค้นคืนหลายเวกเตอร์ (ColBERT)
  4. การประเมิน RAG (RAGAS, Recall@K)
← กลับไปที่ AI Agents