Agentic RAG: Wie KI-Agenten die Retrieval-Augmented Generation transformieren
Updated on
Standard-RAG (Retrieval-Augmented Generation) hat eine grundlegende Einschränkung: Es ruft einmal ab und generiert einmal. Das System durchsucht eine Vektordatenbank, nimmt die Top-K-Chunks, packt sie in einen Prompt und hofft, dass die Antwort in diesen Chunks enthalten ist. Wenn die relevanten Informationen über mehrere Dokumente verteilt sind, mehrstufiges Reasoning erfordern oder vor dem Abruf eine Klärung benötigen, versagt einfaches RAG stillschweigend -- es liefert überzeugend klingende Antworten auf Basis unvollständigen Kontexts.
Agentic RAG löst dieses Problem, indem es die statische Retrieve-then-Generate-Pipeline durch einen autonomen KI-Agenten ersetzt, der planen, iterativ abrufen, Ergebnisse bewerten und entscheiden kann, wann er genügend Informationen für eine Antwort hat. Der Agent ruft nicht nur Dokumente ab -- er überlegt, wonach gesucht werden soll, beurteilt, ob der abgerufene Inhalt ausreichend ist, und ergreift zusätzliche Maßnahmen, wenn dies nicht der Fall ist.
Einfaches RAG vs Agentic RAG
Einfache RAG-Pipeline
Benutzeranfrage → Anfrage einbetten → Vektorsuche → Top-K-Chunks → LLM → AntwortProbleme bei diesem Ansatz:
- Einmaliger Abruf: Wenn die erste Suche relevante Dokumente verfehlt, gibt es keine Korrektur
- Kein Reasoning über den Abruf: Die Anfrage wird unverändert eingebettet, ohne Zerlegung
- Keine Bewertung: Das System kann nicht beurteilen, ob die abgerufenen Chunks die Frage tatsächlich beantworten
- Kein mehrstufiger Abruf: Kann keine Suchen verketten, bei denen das erste Ergebnis die nächste Anfrage bestimmt
Agentic RAG-Pipeline
Benutzeranfrage → Agent plant → Suchwerkzeug → Ergebnisse bewerten →
→ Mehr Infos nötig? → Anfrage verfeinern → Erneut suchen →
→ Genug Kontext? → Synthese → AntwortDer Agent fungiert als intelligenter Orchestrator, der:
- Komplexe Anfragen in Teilfragen zerlegen kann
- Werkzeuge wählen kann: Vektorsuche, Websuche, SQL-Abfrage, API-Aufruf
- Bewerten kann, ob der abgerufene Kontext ausreichend ist
- Mit verfeinerten Anfragen iterieren kann, bis er sicher ist
- Informationen aus mehreren Abrufrunden synthetisieren kann
Wie Agentic RAG funktioniert
Kernarchitektur
| Komponente | Einfaches RAG | Agentic RAG |
|---|---|---|
| Anfrageverarbeitung | Direktes Einbetten | Anfragenzerlegung und Planung |
| Abruf | Einzelne Vektorsuche | Mehrere Werkzeuge, iterativer Abruf |
| Bewertung | Keine | Selbstbewertung des abgerufenen Kontexts |
| Reasoning | Einzelner LLM-Aufruf | Mehrstufiges Reasoning mit Werkzeugnutzung |
| Fehlerbehebung | Keine | Erneuter Versuch mit verfeinerten Anfragen |
| Datenquellen | Meist eine Vektor-DB | Mehrere Quellen (DB, Web, APIs) |
Entscheidungsfluss des Agenten
Ein Agentic-RAG-System folgt typischerweise diesem Entscheidungsmuster:
- Frage analysieren: Ist sie einfach (einzelner Abruf) oder komplex (erfordert Zerlegung)?
- Abrufstrategie planen: Welche Quellen abfragen? In welcher Reihenfolge?
- Abruf ausführen: Die erste Quelle durchsuchen
- Ergebnisse bewerten: Enthalten diese Chunks die Antwort?
- Nächste Aktion entscheiden: Antworten, Anfrage verfeinern oder andere Quelle durchsuchen
- Synthese: Informationen aus allen Abrufschritten kombinieren
# Konzeptueller Agentic-RAG-Loop (Pseudocode)
def agentic_rag(query, tools, max_iterations=5):
context = []
plan = agent.plan(query) # In Teilfragen zerlegen
for step in plan:
# Agent entscheidet, welches Werkzeug verwendet wird
tool = agent.select_tool(step, tools)
results = tool.execute(step.query)
context.extend(results)
# Agent bewertet, ob genügend Informationen vorhanden sind
if agent.has_sufficient_context(query, context):
break
# Agent verfeinert die Anfrage basierend auf dem Gelernten
step.query = agent.refine_query(step, results)
return agent.synthesize(query, context)Schlüsselmuster im Agentic RAG
1. Anfragenzerlegung
Komplexe Fragen in einfachere Teilanfragen aufteilen:
Original: "Vergleichen Sie das Umsatzwachstum von Apple und Microsoft in Q3 2025
und erklären Sie, welches Unternehmen bessere Betriebsmargen hatte"
Zerlegt:
1. "Apple Q3 2025 Umsatzwachstum"
2. "Microsoft Q3 2025 Umsatzwachstum"
3. "Apple Q3 2025 Betriebsmarge"
4. "Microsoft Q3 2025 Betriebsmarge"Jede Teilanfrage ruft fokussierte, relevante Dokumente ab, anstatt zu hoffen, dass eine einzelne breite Suche alle benötigten Informationen liefert.
2. Adaptiver Abruf
Der Agent entscheidet basierend auf dem Anfragetyp, wie abgerufen wird:
| Anfragetyp | Abrufstrategie |
|---|---|
| Faktenabfrage | Einzelne Vektorsuche |
| Vergleich | Parallele Suchen für jede Entität |
| Mehrstufiges Reasoning | Sequenzielle Suchen, jeweils durch vorherige informiert |
| Zeitbezogen | Nach Datum filtern, dann semantische Suche |
| Aggregation | SQL-Abfrage + Dokumentensuche |
3. Selbstbewertung
Nach jedem Abrufschritt bewertet der Agent:
- Relevanz: Handeln die abgerufenen Chunks vom richtigen Thema?
- Vollständigkeit: Enthalten sie genügend Informationen für eine Antwort?
- Konsistenz: Stimmen mehrere Quellen überein?
- Aktualität: Sind die Informationen aktuell genug?
4. Werkzeugauswahl
Agentic RAG ist nicht auf Vektorsuche beschränkt:
| Werkzeug | Wann verwenden |
|---|---|
| Vektorsuche | Semantische Ähnlichkeitsabfragen |
| Schlüsselwortsuche (BM25) | Exakte Begriffsuche, technische Anfragen |
| Websuche | Aktuelle Ereignisse, neueste Informationen |
| SQL-Abfrage | Strukturierte Daten, Aggregationen |
| API-Aufruf | Echtzeitdaten (Preise, Wetter) |
| Code-Ausführung | Berechnungen, Datentransformationen |
Implementierungsansätze
LangChain Agent
from langchain.agents import create_react_agent
from langchain_openai import ChatOpenAI
from langchain.tools import Tool
from langchain_community.vectorstores import FAISS
from langchain_openai import OpenAIEmbeddings
# Abrufwerkzeug erstellen
vectorstore = FAISS.from_texts(documents, OpenAIEmbeddings())
retriever = vectorstore.as_retriever(search_kwargs={"k": 5})
def search_docs(query: str) -> str:
results = retriever.invoke(query)
return "\n".join([doc.page_content for doc in results])
tools = [
Tool(
name="SearchDocuments",
func=search_docs,
description="Search the knowledge base for relevant information"
),
]
llm = ChatOpenAI(model="gpt-4o", temperature=0)
agent = create_react_agent(llm, tools, prompt_template)LlamaIndex Agent
from llama_index.core.agent import ReActAgent
from llama_index.core.tools import QueryEngineTool
from llama_index.core import VectorStoreIndex
# Abfrage-Engine-Werkzeuge erstellen
index = VectorStoreIndex.from_documents(documents)
query_engine = index.as_query_engine(similarity_top_k=5)
tools = [
QueryEngineTool.from_defaults(
query_engine=query_engine,
name="knowledge_base",
description="Search the company knowledge base"
),
]
agent = ReActAgent.from_tools(tools, llm=llm, verbose=True)
response = agent.chat("What were our Q3 results?")Wann Agentic RAG einsetzen
| Szenario | Einfaches RAG | Agentic RAG |
|---|---|---|
| Einfache Q&A aus einer Quelle | Beste Wahl | Überdimensioniert |
| Multi-Dokument-Reasoning | Hat Schwierigkeiten | Glänzt |
| Fragen mit Berechnungen | Nicht möglich | Nutzt Code-Werkzeuge |
| Dynamische Daten (APIs, Datenbanken) | Begrenzt | Natürliche Passung |
| Mehrdeutige Anfragen | Schlechte Ergebnisse | Kann klären und iterieren |
| Kostensensitivität | Günstiger (1 LLM-Aufruf) | Teurer (mehrere Aufrufe) |
| Latenzanforderungen | Schneller | Langsamer (iterativ) |
Kompromisse
| Vorteil | Nachteil |
|---|---|
| Höhere Antwortqualität | Höhere Latenz (mehrere LLM-Aufrufe) |
| Bewältigt komplexe Anfragen | Höhere Kosten pro Anfrage |
| Selbstkorrigierender Abruf | Komplexer zu bauen und debuggen |
| Multi-Quellen-Integration | Agent kann in Schleifen steckenbleiben |
| Besser für mehrdeutige Anfragen | Schwerer vorhersagbares Verhalten |
Datenpipelines für Agentic RAG aufbauen
Die Datenpipeline für Agentic RAG einzurichten -- Dokumente zu chunken, Embeddings zu erstellen, Vektorindizes aufzubauen -- ist iterative experimentelle Arbeit. RunCell (opens in a new tab) bietet eine KI-gestützte Jupyter-Umgebung, in der Sie RAG-Pipelines mit KI-Unterstützung prototypisieren, die Abrufqualität interaktiv debuggen und Chunking-Strategien iterativ verbessern können.
Zur Visualisierung von Retrieval-Evaluierungsmetriken (Relevanzwerte, Latenzverteilungen, Antwortqualität) ermöglicht PyGWalker (opens in a new tab) die interaktive Exploration Ihrer RAG-Evaluierungsdatensätze in Jupyter.
FAQ
Was ist Agentic RAG?
Agentic RAG kombiniert Retrieval-Augmented Generation mit autonomen KI-Agenten. Anstelle einer statischen Retrieve-then-Generate-Pipeline plant ein KI-Agent Abrufstrategien, führt mehrere Suchen durch, bewertet Ergebnisse und iteriert, bis er genügend Kontext hat, um präzise zu antworten.
Wie unterscheidet sich Agentic RAG von einfachem RAG?
Einfaches RAG führt einen einzelnen Abruf durch und generiert eine Antwort. Agentic RAG verwendet einen KI-Agenten, der Anfragen zerlegen, verschiedene Werkzeuge auswählen (Vektorsuche, Websuche, SQL), bewerten kann, ob der abgerufene Kontext ausreichend ist, und mit verfeinerten Anfragen iterieren kann. Es bewältigt komplexe, mehrstufige Fragen, die einfaches RAG nicht kann.
Ist Agentic RAG teurer als einfaches RAG?
Ja, Agentic RAG kostet typischerweise mehr pro Anfrage, da es mehrere LLM-Aufrufe (Planung, Bewertung, Synthese) und mehrere Abrufoperationen durchführt. Der Kompromiss ist eine deutlich höhere Antwortqualität bei komplexen Anfragen. Für einfache Faktenabfragen ist einfaches RAG kosteneffektiver.
Welche Frameworks unterstützen Agentic RAG?
LangChain, LlamaIndex und Haystack unterstützen alle Agentic-RAG-Muster. LangChain bietet ReAct-Agenten mit Werkzeugnutzung, LlamaIndex bietet Query-Planning-Agenten, und Haystack hat Pipeline-basierte Agentenarchitekturen. Sie können auch benutzerdefinierte Agenten direkt mit den OpenAI- oder Anthropic-Function-Calling-APIs erstellen.
Wann sollte ich Agentic RAG vs einfaches RAG verwenden?
Verwenden Sie einfaches RAG für einfache Fakten-Q&A aus einer einzelnen Wissensbasis. Verwenden Sie Agentic RAG, wenn Anfragen Reasoning über mehrere Dokumente erfordern, Vergleiche beinhalten, Echtzeitdaten benötigen oder wenn einfaches RAG konsistent unvollständige Antworten liefert.
Fazit
Agentic RAG adressiert die Kernlimitierungen von einfachem RAG, indem es statische Pipelines durch intelligente Agenten ersetzt, die planen, iterativ abrufen und ihre eigenen Ergebnisse bewerten. Es bewältigt komplexe Anfragen, die mehrere Dokumente umfassen, Reasoning erfordern oder Daten aus mehreren Quellen benötigen. Der Kompromiss sind höhere Kosten und Latenz pro Anfrage. Für die meisten Anwendungen ist der beste Ansatz, mit einfachem RAG für einfache Anfragen zu beginnen und komplexe Fragen an Agentic RAG weiterzuleiten -- den Agenten nur dann einzusetzen, wenn das einfachere System an seine Grenzen stößt.