Erstellt: 2025-12-24 | Aktualisiert: 2025-12-24
Embedding-Generierung
Funktion
- Text-Chunks in numerische Vektorrepräsentationen umwandeln
- Semantische Bedeutung in 1536-dimensionalem Vektor kodieren
- Ermöglicht Ähnlichkeitssuche via Cosine-Similarity
Eingabe
- Chunk-Text aus
chunks-Tabelle
- Maximal 800 Zeichen pro Chunk (Modell-Limit)
Ausgabe
- Vektor mit 1536 Float-Werten
- Normalisiert für Cosine-Similarity
Embedding-Modell
| Eigenschaft | Wert |
| Modell | mxbai-embed-large |
| Anbieter | Ollama (lokal) |
| Dimensionen | 1536 |
| Max Context | 512 Token (~800 Zeichen) |
| Sprachen | Multilingual (inkl. Deutsch) |
Beteiligte Komponenten
| Komponente | Pfad | Funktion |
| get_embedding() | pipeline/embed.py:20 | Embedding via Ollama API |
| Ollama API | localhost:11434 | Lokaler Embedding-Service |
| config.py | pipeline/config.py | EMBEDDING_MODEL, EMBEDDING_DIMENSION |
Ablauf
- Chunk-Text laden
- Text bereinigen (Punktfolgen reduzieren)
- Auf 800 Zeichen truncaten falls nötig
- POST an Ollama
/api/embeddings
- Vektor aus Response extrahieren
- Weiter an Vektorspeicherung
Code-Beispiel
# pipeline/embed.py
def get_embedding(text):
response = requests.post(
f"{OLLAMA_HOST}/api/embeddings",
json={"model": EMBEDDING_MODEL, "prompt": text},
timeout=60
)
return response.json().get("embedding")
Fehlerbehandlung
- Leerer Text → None zurückgeben, überspringen
- Timeout → Logging, Retry
- Ollama nicht erreichbar → Fehler loggen, Chunk als pending belassen