{
"event": "PreToolUse",
"tool_name": "mcp__mcp-docs__docs_create",
"tool_input": {
"title": "Embedding-Generierung",
"slug": "embedding-generierung",
"parent_id": 100,
"status": "published",
"sort_order": 3,
"content": "<h2>Embedding-Generierung<\/h2>\n\n<h3>Funktion<\/h3>\n<ul>\n<li>Text-Chunks in numerische Vektorrepräsentationen umwandeln<\/li>\n<li>Semantische Bedeutung in 1536-dimensionalem Vektor kodieren<\/li>\n<li>Ermöglicht Ähnlichkeitssuche via Cosine-Similarity<\/li>\n<\/ul>\n\n<h3>Eingabe<\/h3>\n<ul>\n<li>Chunk-Text aus <code>chunks<\/code>-Tabelle<\/li>\n<li>Maximal 800 Zeichen pro Chunk (Modell-Limit)<\/li>\n<\/ul>\n\n<h3>Ausgabe<\/h3>\n<ul>\n<li>Vektor mit 1536 Float-Werten<\/li>\n<li>Normalisiert für Cosine-Similarity<\/li>\n<\/ul>\n\n<h3>Embedding-Modell<\/h3>\n<table>\n<thead><tr><th>Eigenschaft<\/th><th>Wert<\/th><\/tr><\/thead>\n<tbody>\n<tr><td>Modell<\/td><td>mxbai-embed-large<\/td><\/tr>\n<tr><td>Anbieter<\/td><td>Ollama (lokal)<\/td><\/tr>\n<tr><td>Dimensionen<\/td><td>1536<\/td><\/tr>\n<tr><td>Max Context<\/td><td>512 Token (~800 Zeichen)<\/td><\/tr>\n<tr><td>Sprachen<\/td><td>Multilingual (inkl. Deutsch)<\/td><\/tr>\n<\/tbody>\n<\/table>\n\n<h3>Beteiligte Komponenten<\/h3>\n<table>\n<thead><tr><th>Komponente<\/th><th>Pfad<\/th><th>Funktion<\/th><\/tr><\/thead>\n<tbody>\n<tr><td>get_embedding()<\/td><td><code>pipeline\/embed.py:20<\/code><\/td><td>Embedding via Ollama API<\/td><\/tr>\n<tr><td>Ollama API<\/td><td><code>localhost:11434<\/code><\/td><td>Lokaler Embedding-Service<\/td><\/tr>\n<tr><td>config.py<\/td><td><code>pipeline\/config.py<\/code><\/td><td>EMBEDDING_MODEL, EMBEDDING_DIMENSION<\/td><\/tr>\n<\/tbody>\n<\/table>\n\n<h3>Ablauf<\/h3>\n<ol>\n<li>Chunk-Text laden<\/li>\n<li>Text bereinigen (Punktfolgen reduzieren)<\/li>\n<li>Auf 800 Zeichen truncaten falls nötig<\/li>\n<li>POST an Ollama <code>\/api\/embeddings<\/code><\/li>\n<li>Vektor aus Response extrahieren<\/li>\n<li>Weiter an Vektorspeicherung<\/li>\n<\/ol>\n\n<h3>Code-Beispiel<\/h3>\n<pre>\n# pipeline\/embed.py\ndef get_embedding(text):\n response = requests.post(\n f\"{OLLAMA_HOST}\/api\/embeddings\",\n json={\"model\": EMBEDDING_MODEL, \"prompt\": text},\n timeout=60\n )\n return response.json().get(\"embedding\")\n<\/pre>\n\n<h3>Fehlerbehandlung<\/h3>\n<ul>\n<li>Leerer Text → None zurückgeben, überspringen<\/li>\n<li>Timeout → Logging, Retry<\/li>\n<li>Ollama nicht erreichbar → Fehler loggen, Chunk als pending belassen<\/li>\n<\/ul>"
}
}
{
"tool_response": [
{
"type": "text",
"text": "{\n \"success\": true,\n \"doc\": {\n \"id\": 113,\n \"parent_id\": 100,\n \"slug\": \"embedding-generierung\",\n \"path\": \"\/prozesse\/rag-prozess\/embedding-generierung\",\n \"title\": \"Embedding-Generierung\",\n \"description\": null,\n \"content\": \"<h2>Embedding-Generierung<\/h2>\\n\\n<h3>Funktion<\/h3>\\n<ul>\\n<li>Text-Chunks in numerische Vektorrepräsentationen umwandeln<\/li>\\n<li>Semantische Bedeutung in 1536-dimensionalem Vektor kodieren<\/li>\\n<li>Ermöglicht Ähnlichkeitssuche via Cosine-Similarity<\/li>\\n<\/ul>\\n\\n<h3>Eingabe<\/h3>\\n<ul>\\n<li>Chunk-Text aus <code>chunks<\/code>-Tabelle<\/li>\\n<li>Maximal 800 Zeichen pro Chunk (Modell-Limit)<\/li>\\n<\/ul>\\n\\n<h3>Ausgabe<\/h3>\\n<ul>\\n<li>Vektor mit 1536 Float-Werten<\/li>\\n<li>Normalisiert für Cosine-Similarity<\/li>\\n<\/ul>\\n\\n<h3>Embedding-Modell<\/h3>\\n<table>\\n<thead><tr><th>Eigenschaft<\/th><th>Wert<\/th><\/tr><\/thead>\\n<tbody>\\n<tr><td>Modell<\/td><td>mxbai-embed-large<\/td><\/tr>\\n<tr><td>Anbieter<\/td><td>Ollama (lokal)<\/td><\/tr>\\n<tr><td>Dimensionen<\/td><td>1536<\/td><\/tr>\\n<tr><td>Max Context<\/td><td>512 Token (~800 Zeichen)<\/td><\/tr>\\n<tr><td>Sprachen<\/td><td>Multilingual (inkl. Deutsch)<\/td><\/tr>\\n<\/tbody>\\n<\/table>\\n\\n<h3>Beteiligte Komponenten<\/h3>\\n<table>\\n<thead><tr><th>Komponente<\/th><th>Pfad<\/th><th>Funktion<\/th><\/tr><\/thead>\\n<tbody>\\n<tr><td>get_embedding()<\/td><td><code>pipeline\/embed.py:20<\/code><\/td><td>Embedding via Ollama API<\/td><\/tr>\\n<tr><td>Ollama API<\/td><td><code>localhost:11434<\/code><\/td><td>Lokaler Embedding-Service<\/td><\/tr>\\n<tr><td>config.py<\/td><td><code>pipeline\/config.py<\/code><\/td><td>EMBEDDING_MODEL, EMBEDDING_DIMENSION<\/td><\/tr>\\n<\/tbody>\\n<\/table>\\n\\n<h3>Ablauf<\/h3>\\n<ol>\\n<li>Chunk-Text laden<\/li>\\n<li>Text bereinigen (Punktfolgen reduzieren)<\/li>\\n<li>Auf 800 Zeichen truncaten falls nötig<\/li>\\n<li>POST an Ollama <code>\/api\/embeddings<\/code><\/li>\\n<li>Vektor aus Response extrahieren<\/li>\\n<li>Weiter an Vektorspeicherung<\/li>\\n<\/ol>\\n\\n<h3>Code-Beispiel<\/h3>\\n<pre>\\n# pipeline\/embed.py\\ndef get_embedding(text):\\n response = requests.post(\\n f\\\"{OLLAMA_HOST}\/api\/embeddings\\\",\\n json={\\\"model\\\": EMBEDDING_MODEL, \\\"prompt\\\": text},\\n timeout=60\\n )\\n return response.json().get(\\\"embedding\\\")\\n<\/pre>\\n\\n<h3>Fehlerbehandlung<\/h3>\\n<ul>\\n<li>Leerer Text → None zurückgeben, überspringen<\/li>\\n<li>Timeout → Logging, Retry<\/li>\\n<li>Ollama nicht erreichbar → Fehler loggen, Chunk als pending belassen<\/li>\\n<\/ul>\",\n \"status\": \"published\",\n \"sort_order\": 3,\n \"depth\": 2,\n \"created_at\": \"2025-12-24T09:59:21\",\n \"updated_at\": \"2025-12-24T09:59:21\"\n },\n \"message\": \"Dokument 'Embedding-Generierung' erstellt mit ID 113\"\n}"
}
]
}