Almost every setting below ships with a working default tuned for the bundled
docker compose stack. A fresh deployment typically overrides only a handful — usually nothing at all if you run the bundled ollama and clip-service containers. Override a variable only when you’re moving a service off its default host or turning on an opt-in lane.The local planner (Ollama)
AI search translates natural language into the metadata DSL using a local model — the unrestricted-tier provider is pinned toollama_planner in code, not via an environment variable, so a plain docker restart applies it. You point it at a model with these:
These defaults assume the bundled
ollama service. To run AI search against a model on hardware you control without editing operator env, use agent configuration from the web UI instead — it overrides the resolved endpoint per organization or per user.The CLIP embedding service
The optionalsemantic_match lane ranks figures by visual similarity. It embeds query text and figure images into a shared CLIP space.
External provider tiers
These are only consulted when an organization has allowed external AI and a stricter tier serves its requests. Each tier resolves a provider by name; an unconfigured provider safely degrades to the disabled provider rather than leaking to a default.Connection-probe guard
The Test connection button in agent configuration makes the Dataerai server probe the URL an admin entered. To prevent it from being used to reach internal infrastructure (SSRF), public destinations are rejected unless explicitly allowlisted.Saved CLIP service tokens are encrypted at rest using the same secret store as other repository secrets. The token is write-only over the API — it is never returned once saved.
Vocabulary discovery
Grounded OR-tree search
The lane that designs multi-branch queries from per-scope metadata statistics (Grounded OR-tree search). Both feature flags ship off; the profile worker and statistics build in the background regardless, so flipping the read flag on is graceful.Profiles are keyed on the collections/grants the access-control layer
actually grants, and merged at request time from live permission
rows — so revoking a share drops that data from a user’s evidence on
their very next search, with no rebuild. No statistic or value from
data a user can’t see ever enters their prompt, counts, or suggestions.
profileWorker in the Helm values) with a nightly
self-heal job; it is a no-op for the value lane until
LLM_VALUE_EMBED_ENABLED is on.
AI-search (Ask AI) visibility
There are no build-time frontend flags for LLM-search — the feature ships compiled into every build. Visibility of the Ask AI button is controlled at runtime by two policy gates that Dataerai combines inacl.llm_search_allowed_for_user:
Both must be true for the Ask AI affordance to render. The user
opt-in is checked first — an opted-out user is hidden from the feature
even if their org permits external AI.
Search log retention
Each AI-search request is recorded in an internal search log used for observability and usage reporting. The log grows with traffic, so prune it on a schedule with the management command:--days, default 90) in bounded batches, leaving recent ones for reporting. Run it from a nightly cron job to keep the table bounded; pass --dry-run to preview how many rows would be removed.
The minimal set
If you run the bundleddocker compose stack with the built-in ollama and clip-service containers, the defaults already work. In practice a real deployment touches only:
CLIP_SERVICE_TOKEN— replace the dev token.OLLAMA_PLANNER_MODEL— pin the model you’ve pulled (if notqwen2.5:7b).SEMANTIC_MATCH_ENABLED— flip totrueonce you’ve backfilled embeddings.- Provider-tier and Bedrock vars — only if you offer external AI tiers.
- An org admin flips
Organization.allow_external_ai = trueon each org that should see the feature.
Next steps
Agent configuration
The web-UI way to redirect inference, no operator env required.
AI policy & access
The org-level opt-in that gates external providers.