Knowledge ingestion

---
title: Knowledge ingestion
---
flowchart TD
    Ingest[POST /knowledge/sources] --> Q[(sources: status=pending)]
    Q --> W[dispatch-ingest-worker]
    W --> Chunk[chunk source]
    Chunk --> Embed[embed chunks<br/>voyage-3]
    Embed --> Store[(knowledge_chunks<br/>vector 1024, HNSW)]
    Store --> Done[status=embedded]
    Embed -- provider error --> Fail[status=failed]
    Fail -.retry with backoff.-> W