HyDE: Varsayımsal Belge Gömüntüleri
LLM ile sahte bir 'ideal' yanıt üretin, bunu gömüntüleyin ve bununla arayın; kısa sorgu gömüntülerinden daha iyi sonuç verir.
HyDE: Varsayımsal Belge Gömüntüleri, CoddyKit'te ücretsiz bir AI Agents dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, AI Agents öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. AI Agents kursu toplamda 4 dersten oluşur.
Bu dersin bazı bölümleri henüz çevrilmemiş olup İngilizce olarak gösterilmektedir.
Sorgu Vektörleştirmesindeki Sorun
Kullanıcı sorguları genellikle kısadır ve getirmek istediğiniz belgelerle hiç benzer görünmez.
- Sorgu: "klavyemi düzelt"
- Belge: "Mekanik klavyenizin tuşları takılıyorsa anahtarları izopropil alkolle temizleyebilirsiniz..."
Vektörler anlamsal olarak uzaktır; getirme işlemi belgeyi bulamaz.
HyDE Fikri
HyDE = Varsayımsal Belge Vektörleştirmeleri (Gao ve diğerleri, 2022).
- LLM'den query için sahte bir "ideal yanıt" yazmasını isteyin
- Query'yi değil, sahte yanıtı vektörleştirin
- Bu vektörü gerçek derlemde arama yapmak için kullanın
Neden İşe Yarar?
Varsayımsal yanıt gerçek bir belgeye benzer (benzer sözcük dağarcığına ve benzer yapıya sahiptir). Vektör gösterimi gerçek belge vektörlerinin yakınına düşer; böylece getirme işlemi bu belgeleri daha güvenilir biçimde bulur.
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)Yanıtın Yanlış Olması Sorun Değildir
HyDE'nin varsayımsal yanıtı olgusal olarak yanlış olabilir; bu sorun değildir. Yalnızca vektörünü getirme için kullanırız. Ardından getirilen REAL belgeler son yanıtı oluşturmak için kullanılır.
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?')Maliyet Dengesi
HyDE, her query için 1 ek LLM çağrısına mal olur. Şu durumlarda buna değer:
- Query ifadesi belge ifadelerinden çok farklıysa
- Getirme hatırlaması darboğazınızsa
- Derlem, kullanıcının yeniden ifade ettiği teknik metinleri içeriyorsa
Çok Örnekli HyDE
N varsayımsal yanıt oluşturun, her birini vektörleştirin, her biri için en iyi K sonucu getirin ve sonuçların birleşimini alın. Daha pahalıdır, ancak zor sorgularda daha yüksek hatırlama sağlar.
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))HyDE'yi Yeniden Sıralamayla Birleştirme
Hatırlama için HyDE, kesinlik için çapraz kodlayıcı:
- HyDE en iyi 50 sonucu getirir
- Çapraz kodlayıcı sonuçları en iyi 5 olacak şekilde yeniden sıralar
- LLM, en iyi 5 sonucu kullanarak yanıt verir
HyDE Ne Zaman Kullanılmamalıdır?
- Sorgular zaten belge diliyle eşleşiyorsa (SSS)
- Gecikmenin kritik olduğu yollarda
- Naif getirmenin işe yaradığı çok küçük derlemlerde
Kod İçin HyDE
Kod arama için kullanıcının aradığı işlevi halüsinasyon yoluyla oluşturun, vektörleştirin ve gerçek işlevleri getirin.
code_hypo = llm.invoke(f'Write the Python function that does: {user_request}').content
results = code_index.search(embed(code_hypo))Çeşitler: Geri Adım İstemleme
İlişkili bir teknik: önce modelden daha genel bir soru çıkarmasını isteyin ("Klavyeleri nasıl temizlerim?" -> "Mekanik klavyeler için hangi genel temizleme yöntemi geçerlidir?"), bunu vektörleştirin ve ardından getirme işlemini yapın.
HyDE Neden İşe Yarar?
HyDE'nin ham query'yi vektörleştirmekten daha iyi getirme yapmasını sağlayan nedir?
Özet
HyDE: bir yanıtı halüsinasyon yoluyla oluşturun, THAT yanıtı vektörleştirin ve arayın. Bir ek LLM çağrısına mal olur, ancak zor, yeniden ifade edilmiş veya teknik sorgularda getirmeyi iyileştirir.
Sıkça Sorulan Sorular
“HyDE: Varsayımsal Belge Gömüntüleri” dersi ücretsiz mi?
Evet — “HyDE: Varsayımsal Belge Gömüntüleri” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve AI Agents kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. AI Agents kursu toplamda 4 dersten oluşur.
“HyDE: Varsayımsal Belge Gömüntüleri” dersinde ne öğreneceğim?
LLM ile sahte bir 'ideal' yanıt üretin, bunu gömüntüleyin ve bununla arayın; kısa sorgu gömüntülerinden daha iyi sonuç verir. AI Agents ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
AI Agents öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te AI Agents, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.
“HyDE: Varsayımsal Belge Gömüntüleri” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu AI Agents dersinde kod yazıp çalıştırabilir miyim?
Evet. Her AI Agents dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Çapraz Kodlayıcılarla Yeniden Sıralama
- HyDE: Varsayımsal Belge Gömüntüleri
- Çoklu Vektör Getirme (ColBERT)
- RAG Değerlendirmesi (RAGAS, Recall@K)