Wichtigste Erkenntnisse
- RAG = Dokumente hochladen + das Modell Fragen beantworten lassen und Quellen zitieren.
- Open WebUI hat das einfachste integrierte RAG. PDF hochladen, Fragen stellen. 5-Minuten-Setup.
- LlamaIndex ist das flexibelste Framework zum Aufbau von RAG-Pipelines.
- LangChain ist das am weitesten verbreitete professionelle Framework mit massivem Ökosystem.
- Chroma und Qdrant sind die führenden Vektordatenbanken zum Speichern von Dokumentchunks.
- Ab April 2026 ist lokales RAG reif und produktionsbereit.
Was ist RAG (Retrieval-Augmented Generation)?
RAG ist eine Technik, die Ihrem LLM ermöglicht, Fragen zu Ihren eigenen Dokumenten zu beantworten, ohne das Modell feinabstimmen zu müssen.
Der Prozess: (1) Ihre Dokumente hochladen (PDFs, Textdateien), (2) in Chunks aufteilen, (3) Chunks in Embeddings (numerische Vektoren) konvertieren, (4) Embeddings in einer Vektordatenbank speichern, (5) bei einer Frage relevante Chunks aus der Datenbank abrufen, (6) Chunks + Frage an das LLM übergeben, (7) das LLM antwortet auf Basis der Chunks.
RAG ist gegenüber der Feinabstimmung vorzuziehen, wenn sich Ihre Dokumente häufig ändern (Feinabstimmung ist einmalig), und Sie Quellenangaben benötigen (RAG zeigt, welche Dokumente verwendet wurden).
Beste 8 lokale RAG-Tools im 2026
| Werkzeug | Typ | Am besten für | Vektor DB | Lernkurve |
|---|---|---|---|---|
| Open WebUI | Web-App (Docker) | Anfänger, einfachstes Setup | Integriert | Keine |
| LlamaIndex | Python-Framework | Flexible Pipelines | Beliebig (Chroma, Qdrant, Pinecone) | Mittel |
| LangChain | Python-Framework | Produktionssysteme | Beliebig | Mittel |
| Chroma | Vektordatenbank | Einfache RAG | Chroma (eingebettet) | Niedrig |
| Qdrant | Vektordatenbank | Skalierbare RAG | Qdrant (verteilt) | Mittel |
| Weaviate | Vektordatenbank | GraphQL-Abfragen | Weaviate | Mittel |
| Milvus | Vektordatenbank | Großflächig | Milvus | Hoch |
| Text-Generation-WebUI RAG | Erweiterung | Integriert mit Modell | Integriert | Niedrig |
Wie verwendet man Open WebUI RAG (am einfachsten)?
Open WebUI hat integriertes RAG. Kein Setup außer Docker. Dokumente hochladen und Fragen stellen.
# 1. Open WebUI mit Docker ausführen
docker run -d -p 3000:8080 \
-e OLLAMA_BASE_URL=http://host.docker.internal:11434 \
ghcr.io/open-webui/open-webui:latest
# 2. Öffnen Sie http://localhost:3000
# 3. Klicken Sie auf "+" neben Eingabefeld → "Dateien hochladen"
# 4. Wählen Sie PDFs oder Textdateien
# 5. Stellen Sie Fragen -- Open WebUI ruft relevante Chunks ab
# 6. Modell antwortet basierend auf Dokumenten mit ZitatenWie baut man RAG mit LlamaIndex auf?
LlamaIndex ist ein Framework, das Dokumentenladen, Chunking, Embedding und Abruf handhabt. Flexibel, unterstützt jede Vektordatenbank.
# 1. Installieren
pip install llama-index
pip install llama-index-embeddings-ollama # verwenden Sie lokale Ollama-Embeddings
pip install llama-index-vector-stores-chroma # verwenden Sie Chroma zum Speichern
# 2. Einfache RAG-Pipeline
from llama_index.core import SimpleDirectoryReader, VectorStoreIndex
from llama_index.embeddings.ollama import OllamaEmbedding
# Dokumente laden
documents = SimpleDirectoryReader("./documents").load_data()
# Index mit lokalen Embeddings erstellen
embedding_model = OllamaEmbedding(model_name="nomic-embed-text")
index = VectorStoreIndex.from_documents(
documents,
embed_model=embedding_model
)
# Abfrage
query_engine = index.as_query_engine()
response = query_engine.query("Was sagt das Dokument über X?")
print(response)Wie baut man RAG mit LangChain auf?
LangChain ist das am weitesten verbreitete Framework für produktive RAG-Systeme. Unterstützt alle Vektordatenbanken und LLM-Anbieter.
# pip install langchain langchain-community langchain-chroma
from langchain.document_loaders import DirectoryLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.embeddings import OllamaEmbeddings
from langchain.vectorstores import Chroma
from langchain.chat_models import ChatOllama
from langchain.chains import RetrievalQA
# Dokumente laden
loader = DirectoryLoader("./documents")
docs = loader.load()
# In Chunks aufteilen
splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=100)
chunks = splitter.split_documents(docs)
# Embeddings und Vektorstore erstellen
embeddings = OllamaEmbeddings(model="nomic-embed-text")
vectorstore = Chroma.from_documents(chunks, embeddings)
# QA-Kette erstellen
llm = ChatOllama(model="llama3.2:8b")
qa = RetrievalQA.from_chain_type(
llm=llm,
chain_type="stuff",
retriever=vectorstore.as_retriever()
)
# Fragen beantworten
result = qa.run("Was sagt das Dokument über X?")
print(result)Welche Vektordatenbanken sind am besten für lokale RAG?
Chroma (am einfachsten): In-Process-Vektordatenbank. Kein Serversetup. Perfekt für kleine RAG-Projekte (< 1M Dokumente).
Qdrant (skalierbar): Selbstgehostet oder Cloud. Besser für großflächige RAG. Mehr Funktionen als Chroma.
Weaviate: GraphQL-basiert. Gut für komplexe Abfragen über Embeddings.
Milvus: Enterprise-Klasse. Für massive RAG-Skalierung (100M+ Dokumente).
Für die meisten lokalen Bereitstellungen ist Chroma ausreichend und am einfachsten.
Sollten Sie RAG oder Feinabstimmung verwenden?
Verwenden Sie dieses Framework:
- Verwenden Sie RAG wenn: Ihre Dokumente sich häufig ändern, Sie Quellenangaben benötigen, Sie kein Modelltraining wollen, oder Sie weniger als 100K Dokumente haben.
- Verwenden Sie Feinabstimmung wenn: Ihre Wissensdatenbank fest ist, Sie möchten, dass das Modell die Domäne wirklich "versteht", oder Sie benötigen Inferenzgeschwindigkeit (feinabgestimmte Modelle sind schneller).
- Kombinieren Sie beide: Passen Sie ein Modell an Ihre Domäne an, dann fügen Sie RAG für sehr hochwertige Q&A hinzu.
Häufige Fehler bei lokaler RAG
- Falsche Chunk-Größe verwenden. Zu klein (100 Token) = zu viele kleine Stücke. Zu groß (2000 Token) = nicht spezifisch. Optimal sind 500-1000 Token.
- Vergessen, Embeddings zu verwenden. Sie können ohne Embeddings keine RAG durchführen. Verwenden Sie `nomic-embed-text` (beste für Englisch) oder `bge-m3` (mehrsprachig).
- Abrufqualität nicht evaluieren. Nur weil RAG läuft, bedeutet das nicht, dass es die richtigen Dokumente abruft. Testen Sie mit bekannten Fragen und überprüfen Sie, dass die abgerufenen Chunks relevant sind.
- RAG als Ersatz für Feinabstimmung behandeln. RAG ist Abruf + In-Context-Learning. Feinabstimmung ist echte Modellanpassung. Unterschiedliche Werkzeuge für unterschiedliche Aufgaben.
Häufig gestellte Fragen zu lokaler RAG
Wie viele Dokumente kann lokale RAG verarbeiten?
Abhängig von der Vektordatenbank. Chroma verarbeitet 100K-1M Dokumente mühelos auf Consumer-Hardware. Über 1M verwenden Sie Qdrant oder Milvus.
Kann RAG mit Bildern funktionieren?
Nur wenn Sie zuerst Text extrahieren (OCR). Für echtes Bildverständnis verwenden Sie multimodale Modelle wie Llama 3.2 Vision mit RAG.
Ist RAG langsamer als Feinabstimmung?
RAG benötigt Abruf (Millisekunden) + Kontextübergabe (Token zum Prompt hinzugefügt). Typischerweise langsamer als feinabgestimmte Inferenz, aber viel schneller einzurichten.
Kann ich Cloud-Embeddings mit lokalen LLMs verwenden?
Ja. Verwenden Sie Cloud-Embeddings (OpenAI, Cohere) zum Abruf und lokale LLMs zur Beantwortung. Hybrid-Ansatz ist üblich.
Muss ich DSGVO-Konformität für lokale RAG beachten?
Ja, wenn Sie personenbezogene Daten verarbeiten. Lokale RAG hilft mit DSGVO-Artikel 28 (Auftragsverarbeitung), da alle Daten lokal bleiben. Stellen Sie sicher, dass die Vektordatenbank local gespeichert ist und nicht an externe APIs sendet.
Ist lokale RAG für den deutschen Mittelstand geeignet?
Ja, besonders mit Open WebUI oder LangChain auf lokaler Hardware. Erfüllt BSI-Grundschutz-Anforderungen für kleine/mittlere Unternehmen. Keine externen APIs = Datenkontrolle bleibt im Unternehmen. Empfohlen für Firmen mit >10 Dokumenten zu verwalten.
Quellen
- LlamaIndex-Dokumentation -- docs.llamaindex.ai
- LangChain-Dokumentation -- python.langchain.com
- Chroma-Dokumentation -- docs.trychroma.com
- Qdrant-Dokumentation -- qdrant.tech/documentation
- RAG-Papier -- arxiv.org/abs/2005.11401