Konzept

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):

  1. Dokumente in Chunks zerlegen (z.B. 500 Tokens pro Chunk)
  2. Jeden Chunk durch ein Embedding-Modell schicken (z.B. OpenAI text-embedding-3-small)
  3. Embedding-Vektoren in einer Vector-DB speichern (z.B. Qdrant, Chroma, Weaviate, pgvector)

2. Retrieval (bei jeder Anfrage):

  1. User-Frage durch dasselbe Embedding-Modell schicken
  2. Top-K nächste Chunks per Cosinus-Ähnlichkeit suchen
  3. Diese Chunks dem LLM als Kontext mitgeben
  4. 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

  1. Schlechtes Chunking: Wenn Chunks Sätze mittendrin abschneiden, leiden die Embeddings. Nutze rekursive oder semantische Chunker.
  2. Falsches Embedding-Modell: Stelle sicher, dass Index und Query mit dem gleichen Modell embedded werden. Mismatched Modelle = unbrauchbare Suche.
  3. Top-K zu hoch: Zu viele Treffer dilutieren den Prompt. Meist reichen 3-5 Chunks.
  4. Kein Re-Ranking: Embedding-Suche findet ähnlich, nicht zwingend relevant. Ein Cohere- oder Voyage-Reranker sortiert die Top-K nach echter Relevanz.
  5. 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.

Tipp: OpenClaw braucht einen Server, auf dem es 24/7 läuft. Hostinger KVM 2 in Frankfurt reicht für den Anfang und kostet nur wenige Euro im Monat. Hostinger ansehenAffiliate-Link — wir erhalten eine Provision, wenn du über diesen Link bestellst. Für dich ändert sich am Preis nichts.

Weitere Begriffe

Soul.md

Die Persönlichkeits-Datei deines OpenClaw-Agenten.

Heartbeat

Das System, das deinen OpenClaw-Agenten proaktiv arbeiten lässt.

Model Context Protocol (MCP)

Ein Standard-Protokoll für die Kommunikation zwischen KI-Agenten und externen Tools.

Identity File

Die Grundkonfiguration, die festlegt, wer dein Agent ist und wie er sich verhält.

OpenClaw Skills

Vorgefertigte Fähigkeiten, die deinem Agent beibringen, externe Tools zu nutzen.

OpenClaw Gateway

Der laufende Prozess, der deinen Agenten mit Messengern verbindet.

Anthropic API

Pay-per-Use API für Claude — die direkte Schnittstelle zu Anthropics LLMs.

Claude Token

Authentifizierungs-Token für Claude Pro und Max — günstiger als API-Pay-per-Use.

Tool Use

Mechanismus, mit dem LLMs externe Funktionen aufrufen — die Grundlage agentischer Systeme.

Cron / Crontab

Linux-Standard für zeitgesteuerte Aufgaben — die Grundlage proaktiver KI-Agenten.

systemd

Linux Service-Manager — startet OpenClaw automatisch und überwacht den Prozess.

fail2ban

Brute-Force-Schutz für SSH und andere Dienste — sperrt verdächtige IPs automatisch.

UFW (Uncomplicated Firewall)

Einfache Firewall-Konfiguration unter Ubuntu — Default-Deny mit selektiven Allows.

Tailscale

Mesh-VPN — sicherer Remote-Zugriff auf den eigenen KI-Server ohne offene Ports.

Webhook

HTTP-Callback für ereignisbasierte Integrationen — wie Telegram OpenClaw kontaktiert.

Prompt Injection

Angriffstechnik gegen LLM-Systeme — OWASP-LLM-Top-1-Risiko.

User.md

Datei mit Nutzer-Infos für Personalisierung deines OpenClaw-Agenten.