RAG erklärt — Retrieval-Augmented Generation für KI-Agenten
Direkte Antwort: RAG (Retrieval-Augmented Generation) kombiniert eine Vektor-Datenbank mit einem LLM: Vor jeder Antwort werden relevante Dokumente per Embedding-Suche gefunden und dem Modell als Kontext mitgegeben. So kann dein OpenClaw-Agent auf eigene Wissensbasen zugreifen, ohne dass das Modell sie auswendig lernen muss.
Was ist RAG?
RAG (Retrieval-Augmented Generation) ist ein Architektur-Muster, bei dem ein LLM seine Antwort nicht nur aus dem Trainingswissen generiert, sondern zusätzlich aus einer durchsuchbaren Wissensbasis. Vor jeder LLM-Anfrage werden die relevantesten Dokumente gesucht und als Kontext mitgeschickt.
Das Modell halluziniert dadurch deutlich weniger, kann aktuelle Inhalte zitieren (die nach dem Knowledge Cutoff entstanden sind) und hat Zugriff auf interne Daten, die niemals in einem öffentlichen Trainingsset auftauchen würden.
Kontext
RAG hat sich seit etwa 2023 zum Standardmuster für "LLM trifft eigene Daten" entwickelt. Vor RAG gab es zwei Optionen: Modell auf eigene Daten finetunen (teuer, statisch) oder das ganze Dokument in den Prompt packen (limitiert durch Kontextfenster). RAG umgeht beides: Embedding-Suche extrahiert die relevanten Textstellen, das Modell sieht nur die nötigen Auszüge.
In OpenClaw kommt RAG typischerweise dann zum Einsatz, wenn dein Agent über firmeninternes Wissen (Handbücher, Wikis, Dokumentationen) Auskunft geben soll. Per Skill oder eigenem MCP-Server lässt sich eine RAG-Pipeline anschließen.
Funktionsweise
Eine RAG-Pipeline besteht aus zwei Phasen:
1. Indexierung (einmalig oder periodisch):
- Dokumente in Chunks zerlegen (z.B. 500 Tokens pro Chunk)
- Jeden Chunk durch ein Embedding-Modell schicken (z.B. OpenAI text-embedding-3-small)
- Embedding-Vektoren in einer Vector-DB speichern (z.B. Qdrant, Chroma, Weaviate, pgvector)
2. Retrieval (bei jeder Anfrage):
- User-Frage durch dasselbe Embedding-Modell schicken
- Top-K nächste Chunks per Cosinus-Ähnlichkeit suchen
- Diese Chunks dem LLM als Kontext mitgeben
- LLM antwortet basierend auf Frage + abgerufenem Kontext
User: "Wie funktioniert unser Onboarding-Prozess?"
v
Embedding-Vektor erzeugen
v
Vector-DB durchsuchen -> top 5 Chunks
v
Prompt zusammenstellen:
"Beantworte basierend auf folgenden Auszuegen:
[Auszug 1] [Auszug 2] [Auszug 3]
Frage: Wie funktioniert unser Onboarding?"
v
LLM antwortet praezise
Praxis-Beispiel
Eine minimale RAG-Pipeline mit Qdrant und Anthropic-Embeddings:
from qdrant_client import QdrantClient
from anthropic import Anthropic
import voyageai
vo = voyageai.Client()
qdrant = QdrantClient("localhost", port=6333)
claude = Anthropic()
# Indexierung
docs = ["Onboarding startet am Tag 1...", "...", "..."]
embeddings = vo.embed(docs, model="voyage-2").embeddings
qdrant.upsert(
collection_name="docs",
points=[{"id": i, "vector": e, "payload": {"text": d}}
for i, (e, d) in enumerate(zip(embeddings, docs))]
)
# Retrieval
query = "Wie funktioniert unser Onboarding?"
qvec = vo.embed([query], model="voyage-2").embeddings[0]
hits = qdrant.search(collection_name="docs", query_vector=qvec, limit=3)
context = "\n\n".join([h.payload["text"] for h in hits])
response = claude.messages.create(
model="claude-sonnet-4-5",
max_tokens=512,
messages=[{"role": "user", "content":
f"Kontext:\n{context}\n\nFrage: {query}"}]
)
print(response.content[0].text)
In OpenClaw würde diese Logik als Skill verpackt — der Agent ruft den RAG-Skill via Tool Use auf, wenn er Wissen aus der Knowledge Base braucht.
Vector-DBs für OpenClaw
| Tool | Pro | Contra | | --- | --- | --- | | Qdrant | Performant, Rust, lokal hostbar | Eigener Service nötig | | Chroma | Sehr einfach, Python-First | Skaliert begrenzt | | Weaviate | Hybrid-Search, Module-System | Komplexer Setup | | pgvector | Schon Postgres? Plug-In reicht | Langsamer bei >1M Vektoren | | lance-db | File-basiert, kein Server | Jung, weniger Tooling |
Für die meisten OpenClaw-Setups (ein paar tausend Dokumente, single-user) reicht Chroma oder pgvector dicke aus.
RAG vs. Long-Context
Moderne Modelle (Claude Sonnet 4 mit 200k Tokens) verlocken dazu, einfach das ganze Dokument in den Prompt zu packen — kein RAG nötig. Aber:
- Tokens kosten Geld pro Anfrage
- Antwortqualität sinkt bei vollem Kontext (Lost in the Middle)
- Updates am Dokument: ohne Index kein granular Update
Faustregel: Unter 10k Tokens? Direkt in Prompt. Drüber? RAG.
Häufige Fehler / Stolperfallen
- Schlechtes Chunking: Wenn Chunks Sätze mittendrin abschneiden, leiden die Embeddings. Nutze rekursive oder semantische Chunker.
- Falsches Embedding-Modell: Stelle sicher, dass Index und Query mit dem gleichen Modell embedded werden. Mismatched Modelle = unbrauchbare Suche.
- Top-K zu hoch: Zu viele Treffer dilutieren den Prompt. Meist reichen 3-5 Chunks.
- Kein Re-Ranking: Embedding-Suche findet ähnlich, nicht zwingend relevant. Ein Cohere- oder Voyage-Reranker sortiert die Top-K nach echter Relevanz.
- Daten-Aktualität: RAG ist nur so frisch wie dein letzter Index-Build. Plane regelmäßige Re-Indexierung als Cron-Job.
OpenClaw-Integration
OpenClaw selbst hat keine eingebaute Vector-DB, aber du kannst RAG via Custom Skill oder MCP-Server anbinden. Der Agent ruft via Tool Use deine RAG-Pipeline auf, bekommt die Top-Treffer zurück und antwortet damit.
RAG-Sicherheit
Wenn du RAG mit externen Quellen aufbaust, denk an Prompt Injection: Ein Dokument in deinem Index könnte malicious Anweisungen enthalten, die der Agent dann ausführt. Schutzmaßnahmen:
- Quell-Whitelisting (nur trusted Dokumente indexieren)
- Tagging: jeder Chunk bekommt Source-Tag, Agent weiß "das ist external content"
- Sanitization: Hidden-Text aus HTML/PDF rausstrippen vor dem Embedding
Hybrid-Search: Dense + Sparse
Pure Embedding-Suche ("dense") findet semantisch ähnliche Texte, verfehlt aber manchmal exact-match Begriffe (z.B. Produkt-IDs). Hybrid-Search kombiniert Embeddings mit BM25 (sparse, keyword-basiert). Tools wie Weaviate und Qdrant unterstützen das nativ. Bei spezifischen Domänen (Code-Suche, juristische Texte) ist Hybrid-Search oft deutlich besser.
Verwandte Begriffe
RAG-Anbindung in der Praxis: Modul 5 der Masterclass.