Semantische Suche
Eine Suchmethode, die die Bedeutung einer Anfrage versteht statt nur nach exakten Keywords zu suchen – ermöglicht durch Embeddings und Vektordatenbanken.
Query Expansion erweitert oder reformuliert eine Suchanfrage automatisch – mit Synonymen, Umformulierungen oder LLM-generiertem Kontext – um mehr relevante Treffer zu finden.
Wenn ein Nutzer in einem KI-System nach etwas sucht, ist die ursprüngliche Anfrage oft zu kurz, zu vage oder nutzt andere Begriffe als die gespeicherten Dokumente. Query Expansion löst genau dieses Problem: Die Anfrage wird automatisch erweitert oder umformuliert, bevor die eigentliche Suche startet.
Ein einfaches Beispiel: Die Anfrage „Kosten senken” wird zu „Kosten senken, Ausgaben reduzieren, Budget optimieren, Effizienz steigern” – all das beschreibt dasselbe Ziel, aber mit unterschiedlichen Wörtern. Das System findet damit deutlich mehr relevante Dokumente.
Die vier wichtigsten Techniken:
| Technik | Wie es funktioniert | Bestes für |
|---|---|---|
| Synonym Expansion | Klassische Thesaurus-Suche | Einfache Keyword-Systeme |
| Query Rewriting | LLM formuliert Anfrage um | Vage Nutzerfragen |
| Multi-Query | LLM erzeugt 3–5 Varianten | RAG mit hohem Recall-Bedarf |
| HyDE | LLM generiert hypothetisches Dokument | Technische Wissensbasen |
Das LLM erzeugt mehrere Varianten der ursprünglichen Anfrage, jede wird separat ausgeführt, die Ergebnisse werden dedupliziert und zusammengeführt:
from langchain.retrievers.multi_query import MultiQueryRetriever
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(model="gpt-4o-mini", temperature=0)
retriever = MultiQueryRetriever.from_llm(
retriever=vectorstore.as_retriever(),
llm=llm
)
# Intern generiert das LLM z.B.:
# 1. "Wie funktioniert Gradient Descent?"
# 2. "Erklärung Optimierungsalgorithmus neuronale Netze"
# 3. "Backpropagation Gewichtsanpassung Schritt für Schritt"
docs = retriever.get_relevant_documents("Gradient Descent erklären")
Statt der kurzen Nutzeranfrage wird ein hypothetisches Antwortdokument generiert und als Suchvektor verwendet:
from langchain.chains import HypotheticalDocumentEmbedder
from langchain_openai import OpenAIEmbeddings, ChatOpenAI
base_embeddings = OpenAIEmbeddings()
llm = ChatOpenAI(model="gpt-4o-mini")
# HyDE-Embedder generiert erst ein hypothetisches Dokument,
# dann wird dessen Embedding für die Vektorsuche genutzt
hyde_embeddings = HypotheticalDocumentEmbedder.from_llm(
llm=llm,
base_embeddings=base_embeddings,
custom_prompt="Schreibe einen kurzen Fachtext, der folgende Frage beantwortet: {question}"
)
# Die Suchanfrage wird intern zu einem ~200-Wort-Text expandiert
results = vectorstore.similarity_search_by_vector(
hyde_embeddings.embed_query("Was ist Overfitting?")
)
Eine weniger bekannte, aber effektive Variante: Die Anfrage wird auf eine abstraktere Ebene gehoben, bevor gesucht wird.
step_back_prompt = """
Du bist ein hilfreicher Assistent. Formuliere eine allgemeinere Frage,
die hilft, die folgende spezifische Frage zu beantworten.
Spezifische Frage: {question}
Allgemeinere Frage:"""
# "Welche Lernrate soll ich für GPT-2 Fine-Tuning nehmen?"
# → "Wie wählt man Hyperparameter beim Fine-Tuning von Sprachmodellen?"
Query Expansion ist wie ein guter Assistent beim Bibliotheksbesuch: Du fragst nach 'Bücher über Autofahren', er sucht zusätzlich unter 'Führerschein', 'Straßenverkehr' und 'Fahrtechnik' – und findet so deutlich mehr Relevantes.
Erweitert Suchanfragen mit Synonymen, verwandten Begriffen oder Umformulierungen
LLM-basiertes Query Rewriting erzeugt mehrere Varianten einer Anfrage
HyDE generiert ein hypothetisches Dokument als Suchvektor statt der Anfrage selbst
Multi-Query Retrieval führt mehrere Anfragevarianten parallel aus und kombiniert die Ergebnisse
Verbessert Recall in RAG-Systemen signifikant bei geringem Mehraufwand
RAG-Systeme
Mehr relevante Chunks finden, auch wenn der Nutzer ungenaue Begriffe verwendet
Enterprise-Suche
Interne Dokumente besser auffindbar machen trotz unterschiedlicher Fachbegriffe
Chatbots
Vage Nutzerfragen in präzise Suchanfragen für die Wissensbasis übersetzen
E-Commerce
Produktsuche verbessern durch Synonyme und verwandte Begriffe
Query Expansion fügt der ursprünglichen Anfrage weitere Terme hinzu (Synonyme, verwandte Begriffe). Query Rewriting ersetzt die gesamte Anfrage durch eine oder mehrere neue Formulierungen. In der Praxis werden beide Begriffe oft synonym verwendet – LLM-basierte Ansätze nutzen meist Rewriting.
Immer wenn Nutzer kurze, vage oder umgangssprachliche Anfragen stellen. Wenn die Wissensbasis viele Fachbegriffe enthält, die sich von der Nutzersprache unterscheiden, kann Query Expansion den Recall deutlich verbessern – oft mit nur einem zusätzlichen LLM-Aufruf.
HyDE (Hypothetical Document Embeddings) ist ein spezieller Query-Expansion-Ansatz: Statt der Nutzeranfrage wird ein LLM gebeten, ein hypothetisches Antwortdokument zu generieren. Dieses wird dann als Suchvektor verwendet. Oft trifft es die relevanten Chunks besser als die ursprüngliche kurze Anfrage.