Vergleich
Ratgeber
Kontakt
Termin buchen
KI & Machine Learning

RAG-Architekturen: KI mit Unternehmensdaten verbinden

Sohib Falmz··5 Min. Lesezeit
RAG-Architekturen: KI mit Unternehmensdaten verbinden

Was ist Retrieval Augmented Generation (RAG)?

Large Language Models wie GPT-4 oder Claude verfügen über beeindruckendes Allgemeinwissen, kennen aber Ihre internen Unternehmensdaten nicht. Retrieval Augmented Generation (RAG) löst dieses Problem, indem es LLMs mit Ihren eigenen Dokumenten, Datenbanken und Wissenssystemen verbindet.

Statt das Modell aufwändig neu zu trainieren, reichert RAG jeden Prompt dynamisch mit relevanten Informationen aus Ihrer Datenbasis an. Das Ergebnis: präzise, faktisch korrekte Antworten basierend auf Ihrem Unternehmenswissen – ohne Halluzinationen.

Die Architektur eines RAG-Systems

Ein produktionsreifes RAG-System besteht aus mehreren Komponenten, die nahtlos zusammenarbeiten:

1. Document Processing Pipeline

Bevor Dokumente durchsuchbar werden, müssen sie verarbeitet werden:

  • Ingestion: Dokumente aus verschiedenen Quellen laden (PDFs, Word, Confluence, Notion)
  • Chunking: Texte in semantisch sinnvolle Abschnitte aufteilen
  • Embedding: Textabschnitte in Vektoren umwandeln
  • Indexing: Vektoren in einer Vektordatenbank speichern

2. Vector Database

Die Vektordatenbank ist das Herzstück jedes RAG-Systems. Sie ermöglicht semantische Suche – also das Finden von Inhalten basierend auf Bedeutung, nicht nur Schlüsselwörtern.

Bewährte Optionen für den Enterprise-Einsatz:

  • Pinecone: Vollständig gemanagt, hohe Skalierbarkeit
  • Weaviate: Open Source, GraphQL-API, Hybrid-Suche
  • Qdrant: Rust-basiert, performant, self-hosted möglich
  • pgvector: PostgreSQL-Extension, ideal bei bestehender Postgres-Infrastruktur

3. Retrieval Engine

Die Retrieval Engine orchestriert die Suche und kombiniert verschiedene Strategien:

  • Semantic Search: Ähnlichkeitssuche basierend auf Vektorabständen
  • Keyword Search: Klassische BM25-Suche für exakte Begriffe
  • Hybrid Search: Kombination beider Ansätze für optimale Ergebnisse

Praktische Implementierung mit Python

Ein grundlegendes RAG-System lässt sich mit wenigen Komponenten aufbauen. Hier ein Beispiel mit LangChain und OpenAI:

from langchain.document_loaders import PyPDFLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.embeddings import OpenAIEmbeddings
from langchain.vectorstores import Qdrant
from langchain.chains import RetrievalQA
from langchain.llms import ChatOpenAI

# Dokumente laden und chunken
loader = PyPDFLoader("unternehmensdoku.pdf")
documents = loader.load()

text_splitter = RecursiveCharacterTextSplitter(
    chunk_size=1000,
    chunk_overlap=200,
    separators=["

", "
", ". ", " "]
)
chunks = text_splitter.split_documents(documents)

# Embeddings erstellen und in Qdrant speichern
embeddings = OpenAIEmbeddings(model="text-embedding-3-small")
vectorstore = Qdrant.from_documents(
    chunks,
    embeddings,
    location=":memory:",  # Für Produktion: URL zur Qdrant-Instanz
    collection_name="unternehmenswissen"
)

# RAG-Chain aufbauen
llm = ChatOpenAI(model="gpt-4-turbo", temperature=0)
qa_chain = RetrievalQA.from_chain_type(
    llm=llm,
    chain_type="stuff",
    retriever=vectorstore.as_retriever(search_kwargs={"k": 5})
)

# Anfrage stellen
antwort = qa_chain.run("Wie funktioniert unser Rückgabeprozess?")

Chunking-Strategien für optimale Ergebnisse

Die Art, wie Sie Dokumente in Chunks aufteilen, beeinflusst die Qualität Ihrer RAG-Antworten erheblich:

Fixed-Size Chunking

Einfachste Methode: Texte in gleich große Abschnitte teilen. Schnell, aber semantisch oft suboptimal.

Semantic Chunking

Intelligentere Aufteilung basierend auf Bedeutungseinheiten. Verwendet Embedding-Ähnlichkeit, um natürliche Grenzen zu finden:

from langchain_experimental.text_splitter import SemanticChunker

semantic_splitter = SemanticChunker(
    embeddings=OpenAIEmbeddings(),
    breakpoint_threshold_type="percentile",
    breakpoint_threshold_amount=95
)
chunks = semantic_splitter.split_documents(documents)

Document-Structure Chunking

Nutzt die natürliche Dokumentstruktur (Überschriften, Absätze, Listen) für die Aufteilung. Ideal für strukturierte Dokumente wie technische Dokumentation.

Hybrid Search: Das Beste aus beiden Welten

Reine Vektorsuche funktioniert hervorragend für semantische Ähnlichkeit, versagt aber bei exakten Begriffen wie Produktnummern oder Fachbegriffen. Hybrid Search kombiniert semantische und Keyword-Suche:

from qdrant_client import QdrantClient
from qdrant_client.models import SparseVector, NamedSparseVector

client = QdrantClient(url="http://localhost:6333")

# Hybrid-Suche mit Qdrant
results = client.query_points(
    collection_name="unternehmenswissen",
    query=dense_vector,  # Semantische Suche
    using="dense",
    query_filter=None,
    with_payload=True,
    limit=10,
    search_params={
        "exact": False,
        "hnsw_ef": 128
    }
).points

# Sparse-Vektor für Keyword-Matching
sparse_results = client.query_points(
    collection_name="unternehmenswissen",
    query=NamedSparseVector(
        name="sparse",
        vector=SparseVector(indices=[1, 7, 9], values=[0.5, 0.8, 0.2])
    ),
    using="sparse",
    limit=10
).points

Reranking für präzisere Ergebnisse

Die initiale Retrieval-Phase liefert oft 20-50 potenziell relevante Dokumente. Ein Reranker bewertet diese neu und wählt die wirklich relevanten aus:

from sentence_transformers import CrossEncoder

reranker = CrossEncoder('cross-encoder/ms-marco-MiniLM-L-6-v2')

# Ergebnisse neu bewerten
pairs = [(query, doc.page_content) for doc in initial_results]
scores = reranker.predict(pairs)

# Nach Score sortieren
reranked = sorted(
    zip(initial_results, scores),
    key=lambda x: x[1],
    reverse=True
)[:5]

Kontextfenster-Management

Moderne LLMs haben große Kontextfenster (128k+ Tokens), aber mehr Kontext bedeutet nicht automatisch bessere Antworten. Strategien für optimales Kontext-Management:

  • Relevanz-Filterung: Nur Chunks mit Mindest-Ähnlichkeit einbeziehen
  • Diversity Sampling: Verschiedene Perspektiven statt redundanter Information
  • Hierarchische Kompression: Zusammenfassungen für umfangreiche Kontexte
  • Metadata-Anreicherung: Quelle, Datum und Konfidenzscore mitliefern

DSGVO-konforme RAG-Systeme

Bei der Verarbeitung von Unternehmensdaten in Deutschland gelten strenge Datenschutzanforderungen:

Datenhoheit sicherstellen

  • Self-Hosted Embeddings: Modelle wie BGE oder E5 lokal betreiben
  • Europäische Cloud-Anbieter: Vektordatenbanken in EU-Rechenzentren
  • On-Premise Option: Für sensible Daten komplette Infrastruktur intern

Zugriffskontrollen implementieren

# Beispiel: Dokument-Level Berechtigungen
metadata = {
    "source": "vertraulich/strategie-2026.pdf",
    "access_level": "management",
    "department": "vorstand",
    "created_at": "2026-01-15"
}

# Bei Retrieval filtern
retriever = vectorstore.as_retriever(
    search_kwargs={
        "k": 5,
        "filter": {
            "access_level": {"$in": user.access_levels},
            "department": {"$in": user.departments}
        }
    }
)

Audit-Trail führen

Dokumentieren Sie, welche Daten wann von wem abgefragt wurden. Dies ist für Compliance-Audits essentiell.

Performance-Optimierung

RAG-Systeme in Produktion müssen schnell und zuverlässig arbeiten:

Caching-Strategien

  • Query Cache: Häufige Anfragen zwischenspeichern
  • Embedding Cache: Berechnete Vektoren wiederverwenden
  • Result Cache: Vollständige Antworten für identische Queries

Asynchrone Verarbeitung

import asyncio
from typing import List

async def parallel_retrieval(queries: List[str]) -> List[List[Document]]:
    tasks = [
        asyncio.create_task(vectorstore.asimilarity_search(q, k=5))
        for q in queries
    ]
    return await asyncio.gather(*tasks)

Batch-Processing für Ingestion

Bei großen Dokumentmengen ist Batch-Verarbeitung essentiell:

# Embeddings in Batches erstellen
BATCH_SIZE = 100

for i in range(0, len(chunks), BATCH_SIZE):
    batch = chunks[i:i + BATCH_SIZE]
    embeddings = embedding_model.embed_documents(
        [chunk.page_content for chunk in batch]
    )
    vectorstore.add_embeddings(
        texts=[chunk.page_content for chunk in batch],
        embeddings=embeddings,
        metadatas=[chunk.metadata for chunk in batch]
    )

Evaluation und Monitoring

Ein RAG-System ohne Metriken ist ein Blindflug. Wichtige KPIs:

Retrieval-Qualität

  • Precision@K: Anteil relevanter Dokumente in Top-K Ergebnissen
  • Recall: Werden alle relevanten Dokumente gefunden?
  • MRR (Mean Reciprocal Rank): Position des ersten relevanten Ergebnisses

Antwort-Qualität

  • Faithfulness: Basiert die Antwort auf den abgerufenen Dokumenten?
  • Relevance: Beantwortet die Antwort die Frage?
  • Hallucination Rate: Wie oft werden Fakten erfunden?
from ragas import evaluate
from ragas.metrics import faithfulness, answer_relevancy, context_precision

result = evaluate(
    dataset,
    metrics=[faithfulness, answer_relevancy, context_precision]
)
print(result)

Typische Anwendungsfälle

RAG-Architekturen eignen sich besonders für:

  • Interne Wissensdatenbanken: Mitarbeiter fragen Unternehmens-Know-how ab
  • Kundenservice-Bots: Automatische Antworten basierend auf Produktdokumentation
  • Vertragsanalyse: Juristische Dokumente durchsuchen und zusammenfassen
  • Technische Dokumentation: Entwickler finden schnell relevante API-Infos
  • Compliance-Prüfung: Regelwerke und Richtlinien durchsuchbar machen

Fazit: RAG als Brücke zwischen LLMs und Unternehmenswissen

RAG-Architekturen ermöglichen es, die Stärken großer Sprachmodelle mit Ihren spezifischen Unternehmensdaten zu verbinden. Der Schlüssel zum Erfolg liegt in der sorgfältigen Abstimmung aller Komponenten: vom Chunking über die Vektordatenbank bis zum Reranking.

Beginnen Sie mit einem fokussierten Use Case, messen Sie die Qualität kontinuierlich und iterieren Sie basierend auf echtem Nutzer-Feedback. So bauen Sie Schritt für Schritt ein RAG-System, das echten Mehrwert für Ihr Unternehmen schafft.

Sie planen ein RAG-Projekt? Als spezialisierter Softwareentwickler unterstützen wir Sie von der Architektur bis zur Produktion. Kontaktieren Sie uns für eine unverbindliche Beratung.

Unsere Partner & Technologie

Meta

Meta

Official Partner

Twilio

Official Partner

WhatsApp

WhatsApp Business

API Integration

OpenAI

OpenAI

KI-Technologie

Vercel

Vercel

Hosting Platform

Next.js

Next.js

Web-Framework

AWS Frankfurt

eu-central-1

Hetzner

Hetzner

Cloud Infrastructure

DSGVO-konform

Made in Germany

Entwickelt & gehostet in DE

Claude

Claude

KI-Assistent

EU-Server

Hosting in der EU

Meta

Meta

Official Partner

Twilio

Official Partner

WhatsApp

WhatsApp Business

API Integration

OpenAI

OpenAI

KI-Technologie

Vercel

Vercel

Hosting Platform

Next.js

Next.js

Web-Framework

AWS Frankfurt

eu-central-1

Hetzner

Hetzner

Cloud Infrastructure

DSGVO-konform

Made in Germany

Entwickelt & gehostet in DE

Claude

Claude

KI-Assistent

EU-Server

Hosting in der EU

1

Chat mit uns

Unser Team antwortet in der Regel innerhalb weniger Minuten.

WhatsApp öffnen

Kostenlose Workflow-Tools