Knowledge ingestion
Knowledge ingestion writes text into a vector namespace so agents with memory_type: "vector" can retrieve it at run time. Ingestion chunks source text, embeds chunks, and upserts into Qdrant. Operators using the static product ingest via the admin API; developers can ingest through SDK examples or direct pipeline scripts.
Retrieval behavior: Vector RAG pipeline. Memory model: Memory types.
Ingest pipeline
Chunking config on the agent or ingest request:
Embedding string example: openai/text-embedding-3-small with OPENAI_API_KEY and ARCFLOW_EMBEDDING_PROVIDER set on the server.
Admin API (static product)
Bearer ARCFLOW_ADMIN_API_KEY. After site creation (POST /v1/admin/sites), each site receives a kb_namespace used for knowledge storage.
Ingest text
Body:
| Field | Role |
|---|---|
text | Raw content to chunk and embed |
key | Logical document id for updates and eviction |
Repeat for each FAQ section or document. Keys help replace content without duplicating chunks.
Site creation context
Response includes kb_namespace (use in published agent memory config):
Publish chat workflow
After ingest, publish so browser clients resolve the workflow:
Published agents should reference the site namespace:
Browser: runPublished("chat", "^1.0.0", userMessage) via Relay. See Workflow registry and Server API quickstart.
Developer ingest (examples)
Example directories:
| Path | Pattern |
|---|---|
examples/rag/ | SDK vector store ingest |
examples/static/chat-rag/ | Admin + Relay + static SDK end-to-end |
examples/online-application-chatbot/ | Full static product |
Typical SDK pattern (conceptual):
Exact API names follow sdk-python examples; align namespace with agent memory_config.namespace.
Prerequisites
| Component | Variable / service |
|---|---|
| Qdrant | ARCFLOW_QDRANT_URL |
| Embeddings | ARCFLOW_EMBEDDING_PROVIDER, provider API key |
| Server (admin path) | ARCFLOW_POSTGRESQL_URL, ARCFLOW_ADMIN_API_KEY |
| Hybrid search | ARCFLOW_QDRANT_HYBRID=true optional |
Production: do not use stub embedding provider. See Hybrid retrieval and reranking.
Verify ingest
- Run a workflow with vector agent pointing at the namespace
- Query with text that appears only in ingested docs
- Trace shows
MemoryRetrievedwithchunk_count > 0:
- Answer should reflect ingested facts (manual review; traces do not contain chunk text per trace data policy)
Operational scripts
Reference CI smoke implementations:
scripts/static-provision.shscripts/static-smoke.sh
Updating and deleting content
Re-ingest with the same key to replace logical documents per admin API semantics. Monitor MemoryEvicted traces if TTL or capacity policies apply on persistent stores (vector collections follow Qdrant collection management).