Configuration
Supported File Types
For structured data (CSV, JSON, XML), use database destinations (PostgreSQL, MongoDB) instead.
Vault Secrets
Milvus connection
Embedding API
The embedding secret is server-level (ai.embedding.secretName, default oss/embedding) and is seeded automatically by docker/vault-init.sh. See AI Configuration and the Qdrant docs for the full picture.
bge-m3 and vault-init.sh seeds the embedding secret to point at it — no OpenAI key required.
Chunking Strategies
Documents are split into chunks before embedding. Each chunk becomes a separate entity in the Milvus collection with the document’s metadata pluschunk_index, filename, and source_pipeline fields.
chunkSize(default 500): maximum characters per chunkchunkOverlap(default 50): characters of overlap between consecutive chunks
Metadata
Static metadata is stored as dynamic fields on every chunk in the Milvus collection:id— deterministic UUID (idempotent upserts)text— the chunk textchunk_index— position of the chunk in the documentfilename— original uploaded filenamesource_pipeline— pipeline nameembedding— float vector for similarity search
How It Works
- Upload — an unstructured file is uploaded via
POST /api/v1/pipeline/upload - Extract — text is extracted from the document
- Chunk — text is split into chunks using the configured strategy
- Embed — each chunk is sent to the embedding API to generate a vector
- Upsert — vectors are inserted into the Milvus collection with metadata
- Notify — a pipeline notification is published on completion
Running Milvus
Milvus runs outside the pipeline’s Docker Compose (unlike Qdrant, Weaviate, and Chroma, which ship as opt-in Compose profiles). Unlike simpler vector databases, Milvus requires etcd and MinIO as internal dependencies, so a simpledocker run won’t work.
Option 1 — Milvus standalone script (recommended):
bash standalone_embed.sh stop
Option 2 — Milvus docker-compose:
