HyDE: Embedding Dokumen Hipotetis
Hasilkan jawaban 'ideal' palsu dengan LLM, buat embedding-nya, lalu lakukan pencarian menggunakan hasil itu—lebih baik daripada embedding kueri pendek.
HyDE: Embedding Dokumen Hipotetis adalah pelajaran AI Agents gratis di CoddyKit. Ini adalah pelajaran 2 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.
Masalah Embedding Kueri
Kueri pengguna biasanya pendek dan sangat berbeda dari dokumen yang ingin Anda ambil.
- Kueri: "perbaiki papan ketik saya"
- Dokumen: "Jika tombol papan ketik mekanis Anda macet, Anda dapat membersihkan sakelar dengan alkohol isopropil..."
Vektornya berjauhan secara semantik, sehingga proses pengambilan tidak menemukan dokumen tersebut.
Gagasan HyDE
HyDE = Embedding Dokumen Hipotetis (Gao dkk. 2022).
- Minta LLM menulis "jawaban ideal" palsu untuk query
- Sematkan jawaban palsu tersebut (bukan query)
- Gunakan vektor itu untuk mencari di korpus nyata
Mengapa Ini Berhasil
Jawaban hipotetis terlihat seperti dokumen nyata (kosakata dan strukturnya serupa). Embedding-nya berada dekat dengan embedding dokumen nyata, sehingga proses pengambilan menemukannya dengan lebih andal.
Implementation
def hyde_search(query, k=5):
# Step 1: hallucinate an answer
hypo_answer = llm.invoke(f'Please write a passage to answer the question: {query}').content
# Step 2: embed it
vec = embed(hypo_answer)
# Step 3: retrieve
return vector_db.query(vec, k=k)Tidak Masalah Jika Jawabannya Salah (OK)
Jawaban hipotetis HyDE mungkin salah secara faktual—tidak masalah. Kami hanya menggunakan embedding-nya untuk pengambilan. Dokumen REAL yang diambil kemudian digunakan untuk menghasilkan jawaban akhir.
Code Example with LangChain
from langchain.chains import HypotheticalDocumentEmbedder
from langchain_openai import OpenAIEmbeddings, ChatOpenAI
embeddings = HypotheticalDocumentEmbedder.from_llm(
ChatOpenAI(),
OpenAIEmbeddings(),
'web_search' # built-in prompt template
)
vector = embeddings.embed_query('How do I fix a sticky keyboard?')Kompromi Biaya
HyDE memerlukan 1 panggilan LLM tambahan untuk setiap query. Ini sepadan jika:
- Susunan kata query sangat berbeda dari susunan kata dokumen
- Perolehan hasil pengambilan adalah hambatan utama Anda
- Korpus berisi tulisan teknis yang diparafrasekan oleh pengguna
HyDE Multi-Sampel
Hasilkan N jawaban hipotetis, sematkan masing-masing jawaban, ambil K teratas untuk setiap jawaban, lalu gabungkan hasilnya. Cara ini lebih mahal, tetapi meningkatkan perolehan pada kueri yang sulit.
hypos = [llm.invoke(...).content for _ in range(3)]
vecs = [embed(h) for h in hypos]
results = set()
for v in vecs:
results.update(vector_db.query(v, k=5))Menggabungkan HyDE dengan Pemeringkatan Ulang
HyDE untuk perolehan, enkoder silang untuk presisi:
- HyDE mengambil 50 hasil teratas
- Enkoder silang melakukan pemeringkatan ulang hingga tersisa 5 teratas
- LLM menjawab menggunakan 5 teratas
Kapan NOT Menggunakan HyDE
- Kueri sudah menggunakan bahasa yang sama dengan dokumen (FAQ)
- Jalur yang sangat kritis terhadap waktu tunda
- Korpus yang sangat pendek, sehingga pengambilan sederhana sudah memadai
HyDE untuk Kode
Untuk pencarian kode: buat model berhalusinasi tentang fungsi yang dicari pengguna, sematkan fungsi tersebut, lalu ambil fungsi nyata.
code_hypo = llm.invoke(f'Write the Python function that does: {user_request}').content
results = code_index.search(embed(code_hypo))Varian: Pemberian Instruksi Mundur
Teknik terkait: minta model terlebih dahulu menurunkan pertanyaan yang lebih umum ("Bagaimana cara membersihkan papan ketik?" → "Metode pembersihan umum apa yang berlaku untuk papan ketik mekanis?"), sematkan pertanyaan tersebut, lalu lakukan pengambilan.
Mengapa HyDE Berhasil
Apa yang membuat HyDE mengambil hasil lebih baik daripada menyematkan query mentah?
Ringkasan
HyDE: buat jawaban secara halusinatif, sematkan THAT, lalu cari. Cara ini memerlukan satu panggilan LLM tambahan, tetapi meningkatkan pengambilan pada kueri yang sulit, diparafrasekan, atau bersifat teknis.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “HyDE: Embedding Dokumen Hipotetis” gratis?
Ya — teks lengkap “HyDE: Embedding Dokumen Hipotetis” 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 “HyDE: Embedding Dokumen Hipotetis”?
Hasilkan jawaban 'ideal' palsu dengan LLM, buat embedding-nya, lalu lakukan pencarian menggunakan hasil itu—lebih baik daripada embedding kueri pendek. 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 2 dari 4.
Berapa lama pelajaran “HyDE: Embedding Dokumen Hipotetis” 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)