Retrieval
Endlich der Moment, auf den wir hingearbeitet haben - wir suchen mit Bedeutung. Plus: warum eine reine Vektorsuche allein nicht reicht und was Hybrid-Retrieval, Rerank und HyDE uns einkaufen.
Wir haben Embeddings für jeden Chunk, sortiert in einer pgvector-Tabelle. Jetzt kommt der zentrale Move: bei einer Frage embedden wir die Frage selbst, und suchen die K Chunks, deren Vektor dem Frage-Vektor am ähnlichsten ist.
Cosinus-Distanz, kurz erklärt
Zwei Vektoren sind „ähnlich", wenn der Winkel zwischen ihnen klein ist. Gemessen wird das mit der Cosinus-Ähnlichkeit (Wert nahe 1 = sehr ähnlich, 0 = orthogonal, -1 = entgegengesetzt). pgvector schreibt das mit dem Operator <=> als Distanz, also 1 - Cosinus-Ähnlichkeit.
Eine typische Top-K-Abfrage sieht so aus:
SELECT chunk_id, content,
1 - (vector_768 <=> :query_vec) AS score
FROM rag_embeddings JOIN rag_chunks USING (chunk_id)
ORDER BY vector_768 <=> :query_vec
LIMIT 5;
Der HNSW-Index sorgt dafür, dass auch bei zehntausenden Vektoren die Antwort in unter 50 ms steht.
Vektor allein reicht nicht - Hybrid mit BM25
Vektorsuche ist stark bei Paraphrasen. Sie ist schwach bei seltenen, exakten Begriffen - Eigennamen, Codes, technischen IDs. Da glänzt klassisches BM25.
Hybrid-Retrieval kombiniert beides. Wir holen Top-K aus dem Vektor-Index und Top-K aus dem BM25-Index, und mergen die Ergebnisse mit Reciprocal Rank Fusion (RRF):
RRF-Score(Chunk) = Σ über alle Listen (1 / (60 + Rang in dieser Liste))
RRF ist verblüffend simpel und in der Praxis erstaunlich robust - auch ohne fein justierte Gewichte.
Rerank - der Cross-Encoder hat noch ein Wort
Vektor-Embeddings sind „bi-encoded": Frage und Chunk werden separat encodiert, dann die Distanz gemessen. Schnell, aber grob. Ein Cross-Encoder wie der BGE-Reranker bekommt Frage und Chunk gemeinsam zu sehen und kann viel feiner urteilen - nur eben langsamer.
Daher der Trick: holen wir uns ~20 Kandidaten aus dem Hybrid-Retrieval, und lassen den Reranker daraus die Top-5 sortieren. Beste-aus-zwei-Welten: Geschwindigkeit der Vektorsuche, Präzision des Cross-Encoders.
HyDE - wenn die Frage zu kurz ist
Manche Fragen sind nur ein paar Wörter lang. Der Embedding-Vektor wird entsprechend „dünn" und trifft nicht gut. Idee von HyDE (Hypothetical Document Embeddings): lass das LLM eine plausibel klingende Antwort erfinden, embedde diese, und such damit. Selbst wenn die Antwort halluziniert ist - sie ist semantisch näher an den echten Treffern als die kurze Original-Frage.
Lab: Retrieval-Vergleich
In Lab 4 stellst du dieselbe Frage in vier Modi nebeneinander: Vektor, BM25, Hybrid, Hybrid+Rerank. Du siehst:
- Wie sich die Reihenfolge der Top-5-Chunks ändert.
- Welche Modi welche Frage-Typen bevorzugen.
- Was HyDE mit der Treffer-Liste anstellt.
- Mit dem „Sprachübergreifend"-Toggle: wie multilinguale Embeddings DE-Fragen auf EN-Dokumenten beantworten - und wo BM25 dabei einbricht.
Und am Ende kannst du die Top-K direkt an das LLM schicken und die generierte Antwort live sehen.
Diskussion· noch keine Beiträge
Unser Kommentar-Agent liest jeden neuen Beitrag, bedankt sich oder empfiehlt passende Inhalte.
Sei die erste Stimme - was denkst du dazu?
Melde dich an, um mitzudiskutieren.
Anmelden