This commit is contained in:
parent
e5db7011f3
commit
f6f3213b84
|
|
@ -11,9 +11,9 @@ context: "Detaillierte technische Beschreibung der Import-Pipeline, Mistral-safe
|
||||||
|
|
||||||
**Quellen:** `pipeline_playbook.md`, `ingestion.py`, `edge_registry.py`, `01_edge_vocabulary.md`, `llm_service.py`
|
**Quellen:** `pipeline_playbook.md`, `ingestion.py`, `edge_registry.py`, `01_edge_vocabulary.md`, `llm_service.py`
|
||||||
|
|
||||||
Die Ingestion transformiert Markdown in den Graphen. Entrypoint: `scripts/import_markdown.py` (CLI) oder `routers/ingest.py` (API). Seit v2.8 integriert dieser Prozess eine **intelligente Quoten-Steuerung** und ein **robustes JSON-Parsing** für Cloud-Modelle (Mistral/Gemini).
|
Die Ingestion transformiert Markdown in den Graphen. Entrypoint: `scripts/import_markdown.py` (CLI) oder `routers/ingest.py` (API). Seit v2.8 integriert dieser Prozess eine **intelligente Quoten-Steuerung** (WP-20) und ein **robustes JSON-Parsing** für Cloud-Modelle (Mistral/Gemini).
|
||||||
|
|
||||||
## 1. Der Import-Prozess (15-Schritte-Workflow)
|
## 1. Der Import-Prozess (16-Schritte-Workflow)
|
||||||
|
|
||||||
Der Prozess ist **asynchron** und **idempotent**.
|
Der Prozess ist **asynchron** und **idempotent**.
|
||||||
|
|
||||||
|
|
@ -23,7 +23,7 @@ Der Prozess ist **asynchron** und **idempotent**.
|
||||||
2. **Markdown lesen:** Rekursives Scannen des Vaults.
|
2. **Markdown lesen:** Rekursives Scannen des Vaults.
|
||||||
3. **Frontmatter Check & Hard Skip (WP-22):**
|
3. **Frontmatter Check & Hard Skip (WP-22):**
|
||||||
* Extraktion von `status` und `type`.
|
* Extraktion von `status` und `type`.
|
||||||
* **Hard Skip Rule:** Wenn `status` in `['system', 'template']` ist, wird die Datei **sofort übersprungen**. Sie wird weder vektorisiert noch in den Graphen aufgenommen.
|
* **Hard Skip Rule:** Wenn `status` in `['system', 'template', 'archive', 'hidden']` ist, wird die Datei **sofort übersprungen**. Sie wird weder vektorisiert noch in den Graphen aufgenommen.
|
||||||
* Validierung der Pflichtfelder (`id`, `title`) für alle anderen Dateien.
|
* Validierung der Pflichtfelder (`id`, `title`) für alle anderen Dateien.
|
||||||
4. **Edge Registry Initialisierung (WP-22):**
|
4. **Edge Registry Initialisierung (WP-22):**
|
||||||
* Laden der Singleton-Instanz der `EdgeRegistry`.
|
* Laden der Singleton-Instanz der `EdgeRegistry`.
|
||||||
|
|
@ -42,7 +42,7 @@ Der Prozess ist **asynchron** und **idempotent**.
|
||||||
* Wenn `enable_smart_edge_allocation: true`: Der `SemanticAnalyzer` sendet Chunks an das LLM.
|
* Wenn `enable_smart_edge_allocation: true`: Der `SemanticAnalyzer` sendet Chunks an das LLM.
|
||||||
* **Traffic Control:** Request nutzt `priority="background"`. Semaphore drosselt die Last.
|
* **Traffic Control:** Request nutzt `priority="background"`. Semaphore drosselt die Last.
|
||||||
* **Resilienz (Quota Handling):** Erkennt HTTP 429 (Rate-Limit) und pausiert kontrolliert (via `LLM_RATE_LIMIT_WAIT`), bevor ein Cloud-Retry erfolgt.
|
* **Resilienz (Quota Handling):** Erkennt HTTP 429 (Rate-Limit) und pausiert kontrolliert (via `LLM_RATE_LIMIT_WAIT`), bevor ein Cloud-Retry erfolgt.
|
||||||
* **Mistral-safe Parsing:** Automatisierte Bereinigung von BOS-Tokens (`<s>`) und Framework-Tags (`[OUT]`) sowie Recovery-Logik für Dictionaries.
|
* **Mistral-safe Parsing:** Automatisierte Bereinigung von BOS-Tokens (`<s>`) und Framework-Tags (`[OUT]`) sowie Recovery-Logik für Dictionaries (Suche nach `edges`, `links`, `results`, `kanten`).
|
||||||
* **Deep Fallback (v2.11.14):** Erkennt "Silent Refusals" (Data Policy Violations). Liefert die Cloud trotz erfolgreicher Verbindung keine verwertbaren Kanten, wird ein lokaler Fallback via Ollama erzwungen, um Kantenverlust zu vermeiden.
|
* **Deep Fallback (v2.11.14):** Erkennt "Silent Refusals" (Data Policy Violations). Liefert die Cloud trotz erfolgreicher Verbindung keine verwertbaren Kanten, wird ein lokaler Fallback via Ollama erzwungen, um Kantenverlust zu vermeiden.
|
||||||
10. **Inline-Kanten finden:** Parsing von `[[rel:...]]`.
|
10. **Inline-Kanten finden:** Parsing von `[[rel:...]]`.
|
||||||
11. **Alias-Auflösung & Kanonisierung (WP-22):**
|
11. **Alias-Auflösung & Kanonisierung (WP-22):**
|
||||||
|
|
@ -55,8 +55,6 @@ Der Prozess ist **asynchron** und **idempotent**.
|
||||||
15. **Embedding (Async):** Generierung via `nomic-embed-text` (768 Dim).
|
15. **Embedding (Async):** Generierung via `nomic-embed-text` (768 Dim).
|
||||||
16. **Diagnose:** Integritäts-Check nach dem Lauf.
|
16. **Diagnose:** Integritäts-Check nach dem Lauf.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 2. Betrieb & CLI Befehle
|
## 2. Betrieb & CLI Befehle
|
||||||
|
|
@ -121,11 +119,11 @@ Die Strategie `by_heading` zerlegt Texte anhand ihrer Struktur (Überschriften).
|
||||||
* **Split Level:** Definiert die Tiefe (z.B. `2` = H1 & H2 triggern Split).
|
* **Split Level:** Definiert die Tiefe (z.B. `2` = H1 & H2 triggern Split).
|
||||||
* **Modus "Strict" (`strict_heading_split: true`):**
|
* **Modus "Strict" (`strict_heading_split: true`):**
|
||||||
* Jede Überschrift (`<= split_level`) erzwingt einen neuen Chunk.
|
* Jede Überschrift (`<= split_level`) erzwingt einen neuen Chunk.
|
||||||
* *Merge-Check:* Wenn der vorherige Chunk leer war (nur Überschriften), wird gemergt (verhindert verwaiste Überschriften).
|
* *Merge-Check:* Wenn der vorherige Chunk leer war (nur Überschriften), wird gemergt.
|
||||||
* *Safety Net:* Wird ein Abschnitt zu lang (> `max` Token), wird auch ohne Überschrift getrennt.
|
* *Safety Net:* Wird ein Abschnitt zu lang (> `max` Token), wird auch ohne Überschrift getrennt.
|
||||||
* **Modus "Soft" (`strict_heading_split: false`):**
|
* **Modus "Soft" (`strict_heading_split: false`):**
|
||||||
* **Hierarchie-Check:** Überschriften *oberhalb* des Split-Levels erzwingen **immer** einen Split.
|
* **Hierarchie-Check:** Überschriften *oberhalb* des Split-Levels erzwingen **immer** einen Split.
|
||||||
* **Füll-Logik:** Überschriften *auf* dem Split-Level (z.B. H2) lösen nur dann einen neuen Chunk aus, wenn der aktuelle Chunk die `target`-Größe erreicht hat.
|
* **Füll-Logik:** Überschriften *auf* dem Split-Level lösen nur dann einen neuen Chunk aus, wenn der aktuelle Chunk die `target`-Größe erreicht hat.
|
||||||
* *Safety Net:* Auch hier greift das `max` Token Limit.
|
* *Safety Net:* Auch hier greift das `max` Token Limit.
|
||||||
|
|
||||||
### 3.3 Payload-Felder (Qdrant)
|
### 3.3 Payload-Felder (Qdrant)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user