Pengambilan Multi-Vektor (ColBERT)
Indekskan banyak vektor untuk setiap dokumen (satu per token atau bagian) demi pencocokan yang lebih terperinci.
Pengambilan Multi-Vektor (ColBERT) adalah pelajaran AI Agents gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar AI Agents, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus AI Agents mencakup 4 pelajaran total.
Bagian dari pelajaran ini belum diterjemahkan dan ditampilkan dalam bahasa Inggris.
Satu Vektor Tidak Cukup
RAG standar menyematkan setiap potongan ke dalam satu vektor. Vektor tersebut merata-ratakan semua hal dalam potongan, sehingga sinyal yang terperinci hilang.
Pengambilan multivektor menyimpan MULTIPLE vektor untuk setiap dokumen dan mencocokkannya dengan lebih tepat.
Gagasan ColBERT
ColBERT (Khattab & Zaharia, 2020) menyematkan setiap TOKEN dokumen dan setiap token query, lalu menghitung kemiripan maksimum:
score(q, d) = sum over q_token in q: max over d_token in d: cos(q_token, d_token)Mengapa ColBERT Mengungguli Vektor Tunggal
- Menangkap berbagai aspek dokumen (satu vektor tidak mampu melakukannya)
- Menangani dokumen panjang dengan lebih baik
- Perolehan lebih tinggi untuk istilah yang jarang
Biaya ColBERT
Menyimpan satu vektor untuk setiap token, bukan untuk setiap potongan:
- Jika sebuah potongan memiliki 500 token, penyimpanannya menjadi 500 kali lebih besar
- Setiap pencarian membandingkan jauh lebih banyak pasangan
Kuantisasi dan pemangkasan menguranginya 10–50 kali, tetapi tetap mahal.
ColBERTv2
ColBERTv2 menambahkan kompresi residual—token dikelompokkan ke dalam sentroid, dan setiap token disimpan sebagai (centroid_id, residual kecil). Penyimpanan berkurang 50 kali.
Menjalankan ColBERT
Pustaka RAGatouille memudahkannya:
# 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)Multivektor dalam Praktik
Selain ColBERT, terdapat pendekatan multivektor lainnya:
- Induk-anak — sematkan potongan kecil, ambil dokumen induk yang besar
- Ringkasan + potongan — sematkan ringkasan dokumen dan potongan individual
- Pertanyaan hipotetis — sematkan pasangan Tanya Jawab yang disintesis dari setiap dokumen
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.Kapan Menggunakan ColBERT
- Pencarian dengan taruhan tinggi (hukum, medis)
- Dokumen panjang
- Saat Anda mampu menanggung biaya penyimpanan
Kapan Melewati ColBERT
- Korpus kecil
- Jalur yang sensitif terhadap waktu tunda
- Proyek dengan keterbatasan biaya
Hibrida dengan BM25
Untuk memperoleh hasil semaksimal mungkin, gabungkan pengambilan multivektor dengan pencarian kata kunci BM25 klasik. Gunakan Penggabungan Peringkat Resiprokal untuk menggabungkannya.
Kompromi ColBERT
Apa kompromi utama saat menggunakan pengambilan multivektor bergaya ColBERT?
Ringkasan
Satu vektor untuk setiap potongan menyebabkan informasi hilang. ColBERT menyimpan vektor untuk setiap token demi presisi yang lebih tinggi. RAGatouille memudahkannya. Gunakan saat perolehan penting dan biayanya memungkinkan.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Pengambilan Multi-Vektor (ColBERT)” gratis?
Ya — teks lengkap “Pengambilan Multi-Vektor (ColBERT)” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus AI Agents, upgrade ke CoddyKit PRO. Kursus AI Agents mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Pengambilan Multi-Vektor (ColBERT)”?
Indekskan banyak vektor untuk setiap dokumen (satu per token atau bagian) demi pencocokan yang lebih terperinci. Kamu berlatih AI Agents dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai AI Agents?
Tidak diperlukan pengalaman sebelumnya. AI Agents di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.
Berapa lama pelajaran “Pengambilan Multi-Vektor (ColBERT)” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran AI Agents ini?
Ya. Setiap pelajaran AI Agents menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Pemeringkatan Ulang dengan Cross-Encoder
- HyDE: Embedding Dokumen Hipotetis
- Pengambilan Multi-Vektor (ColBERT)
- Evaluasi RAG (RAGAS, Recall@K)