Configuration
Supported File Types
For structured data (CSV, JSON, XML), use database destinations (PostgreSQL, MongoDB) instead.
Vault Secrets
Chroma connection
Chroma does not require authentication by default. For Chroma Cloud or authenticated instances, add token-based auth to the loader as needed.
Embedding API
The embedding secret is server-level (ai.embedding.secretName, default oss/embedding) and is seeded automatically by docker/vault-init.sh. You only need to write it manually if you want to point at a different embedding provider. See AI Configuration for the full picture.
bge-m3 (1024-dim) 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 entry in the Chroma 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 on every chunk in the Chroma collection:where clause.
Every entry automatically includes:
text— the chunk text (stored as Chroma document)chunk_index— position of the chunk in the documentfilename— original uploaded filenamesource_pipeline— pipeline name
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 upserted into the Chroma collection via REST API with metadata
- Notify — a pipeline notification is published on completion
Running Chroma
Chroma ships as a bundled opt-in Compose service. Enable it with one line in.env:
COMPOSE_PROFILES=chroma,kafka). The install.sh installer can also enable Chroma at install time — it writes the profile and seeds the oss/chroma secret for you. For the bundled container, use the compose service name as the host in the secret (host="chroma", port 8000).
To use an existing external instance instead, skip the profile and point the oss/chroma secret’s host/port at it — the secret fields are the same either way. You can also run Chroma standalone:
