Configuration
Supported File Types
For structured data (CSV, JSON, XML), use database destinations (PostgreSQL, MongoDB) instead.
Vault Secrets
Chroma connection
The loader reads only
host and port from the secret and sends no authentication header, so Chroma auth tokens are not currently supported: the Chroma endpoint must be reachable without authentication (Chroma’s default). Chroma Cloud and token-protected instances are not supported.
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:
Searching from Datris
The Assistant (and any MCP client) can search this store semantically without leaving Datris: the server embeds the query with the configured embedding provider and returns the closest chunks with scores.
The REST endpoint is
POST /api/v1/search/chroma (Search API); a key needs the search:vector capability (included in the read-only, reporting and rag-builder templates). The CLI equivalent is datris search "question" --store chroma --collection financial_documents --top-k 5.
