Die Qualität Ihres RAG-Systems steht und fällt mit der Qualität Ihrer Embeddings. Das richtige Modell, die richtige Chunking-Strategie und durchdachtes Metadata-Enrichment machen den Unterschied zwischen "findet manchmal etwas" und "findet immer das Richtige".
| Modell | Anbieter | Dimensionen | Stärken |
|---|---|---|---|
| text-embedding-3-large | OpenAI | 3072 | Höchste Qualität, teuer |
| text-embedding-3-small | OpenAI | 1536 | Gutes Preis-Leistungs-Verhältnis |
| embed-v4.0 | Cohere | 1024 | Mehrsprachig, komprimierbar |
| voyage-3 | Voyage AI | 1024 | Spezialisiert auf Code und Legal |
| Modell | Dimensionen | Stärken |
|---|---|---|
| BGE-large-en-v1.5 | 1024 | Top MTEB-Benchmark |
| E5-mistral-7b-instruct | 4096 | Instruction-basiert |
| GTE-large | 1024 | Alibaba, multilingual |
| nomic-embed-text-v1.5 | 768 | Kompakt, effizient |
Kriterien:
1. Sprache → Multilingual-Modell für DE/EN?
2. Domäne → Spezialisiertes Modell (Code, Legal, Medical)?
3. Budget → Kommerziell vs. Open-Source?
4. Latenz → Kleinere Modelle = schneller
5. Qualität → Benchmark-Ergebnisse (MTEB) prüfen
# Einfach, aber nicht optimal
chunks = split_text(text, chunk_size=1000, overlap=200)
# Splittet an semantischen Grenzen
from langchain_experimental.text_splitter import SemanticChunker
chunker = SemanticChunker(
embeddings=OpenAIEmbeddings(),
breakpoint_threshold_type="percentile",
breakpoint_threshold_amount=95
)
chunks = chunker.split_text(document)
| Strategie | Beschreibung | Wann nutzen |
|---|---|---|
| Markdown Header | Splittet an Headern, behält Hierarchie | Dokumentation, Wiki |
| HTML Sections | Splittet an HTML-Elementen | Web-Content |
| Paragraph-based | Splittet an Absätzen | Prosa-Texte |
| Code-aware | Splittet an Funktionen/Klassen | Source Code |
| Sliding Window | Feste Größe mit Overlap | Fallback / Default |
Zu klein (< 200 Token):
✗ Kontextverlust — einzelne Sätze ohne Zusammenhang
✗ Mehr Chunks = höhere Retrieval-Kosten
Zu groß (> 2000 Token):
✗ Rauschen — irrelevante Informationen im Chunk
✗ Geringere Retrieval-Präzision
Optimal (300-800 Token):
✓ Genug Kontext für Verständlichkeit
✓ Fokussiert genug für präzise Retrieval
Chunks ohne Metadata sind wie Bücher ohne Inhaltsverzeichnis. Metadata verbessert Retrieval dramatisch:
chunk = {
"text": "Die neue DSGVO-Änderung betrifft...",
"metadata": {
"source": "compliance/dsgvo-update-2026.pdf",
"page": 12,
"section": "Änderungen 2026",
"category": "compliance",
"date": "2026-01-15",
"author": "Legal Team",
"language": "de",
"keywords": ["DSGVO", "Datenschutz", "Compliance"]
}
}
results = vectorstore.similarity_search(
query="DSGVO-Änderungen",
filter={"category": "compliance", "date": {"$gte": "2026-01-01"}},
k=5
)
Kombiniert Vektor-Suche (semantisch) mit Keyword-Suche (BM25) für bessere Ergebnisse:
Query: "DSGVO Artikel 15 Auskunftsrecht"
Vektor-Suche: Findet semantisch ähnliche Texte
BM25-Suche: Findet exakte Keyword-Matches
Hybrid (RRF): Kombiniert beide Rankings → beste Ergebnisse
Praxis-Tipp: Testen Sie immer mindestens 3 Chunking-Strategien mit Ihren realen Daten. Die "richtige" Strategie hängt stark von Ihrem Dokumententyp ab. Investieren Sie in Metadata-Enrichment — es ist der größte Hebel für Retrieval-Qualität nach der Chunk-Strategie.