Providers and Processing¶
Use this page when you need to choose an embedding provider, install the right server extra, set the right credential, or understand where conversion, VLM, summary, embedding, and search failures appear.
For Milvus, database, cache, auth, and config-file precedence, use Configuration. For source, Docker, Compose, and Helm topologies, use Deployment.
Fast Choice¶
| Need | Use | Setup path | Credential or service |
|---|---|---|---|
| Local default with no API key | onnx embeddings |
uv tool install mfs-server, then mfs-server setup --section embedding or built-in defaults |
None |
| Hosted OpenAI embeddings | openai embeddings |
uv tool install mfs-server, then mfs-server setup --section embedding |
OPENAI_API_KEY |
| Google Gemini embeddings | gemini embeddings |
uv tool install "mfs-server[gemini]", then mfs-server setup --section embedding |
GOOGLE_API_KEY, or Vertex AI auth for the embedding SDK |
| Voyage embeddings | voyage embeddings |
uv tool install "mfs-server[voyage]", then mfs-server setup --section embedding |
VOYAGE_API_KEY |
| Local Ollama embeddings | ollama embeddings |
uv tool install "mfs-server[ollama]", then mfs-server setup --section embedding |
Running Ollama server; OLLAMA_HOST is optional |
| Local sentence-transformers embeddings | local embeddings |
uv tool install "mfs-server[local]", then mfs-server setup --section embedding |
None; this extra pulls the sentence-transformers stack |
| Image-description and summary setup | openai, anthropic, or gemini LLM/VLM |
mfs-server setup --section vlm |
Provider key for the selected LLM/VLM provider |
Provider names are exact. The supported embedding names are openai, onnx,
gemini, voyage, ollama, and local.
Install Paths¶
The base install includes the OpenAI SDK and the default ONNX embedding stack:
Alternate provider extras are separate:
uv tool install "mfs-server[gemini]"
uv tool install "mfs-server[voyage]"
uv tool install "mfs-server[ollama]"
uv tool install "mfs-server[local]"
uv tool install "mfs-server[anthropic]"
uv tool install "mfs-server[all-providers]"
all-providers installs Gemini, Voyage, Ollama, and Anthropic provider
dependencies. It does not include local, because local pulls the larger
sentence-transformers dependency stack.
Embedding Providers¶
The embedding registry is the source of truth for provider names and default models.
| Provider | Default model | Default or detected dimension | Dependency | Runtime requirement | First-run behavior |
|---|---|---|---|---|---|
onnx |
gpahal/bge-m3-onnx-int8 |
1024 in the default config; probed from the model by setup | Core | No API key | mfs-server run and mfs-server worker preload the model at startup; if files are not cached under $MFS_HOME/onnx-cache/, startup downloads them. |
openai |
text-embedding-3-small |
1536 for the default model | Core | OPENAI_API_KEY; OPENAI_BASE_URL is optional |
No local model download. Unknown model dimensions may require a trial embedding call. |
gemini |
gemini-embedding-001 |
768 for the default model | uv tool install "mfs-server[gemini]" or all-providers |
GOOGLE_API_KEY, or Vertex AI auth with GOOGLE_GENAI_USE_VERTEXAI=true |
Known model dimensions use a local table; unknown models require a trial embedding call. |
voyage |
voyage-3-lite |
512 for the default model | uv tool install "mfs-server[voyage]" or all-providers |
VOYAGE_API_KEY |
Known model dimensions use a local table; unknown models require a trial embedding call. |
ollama |
nomic-embed-text |
Detected by a trial embed against the selected Ollama model | uv tool install "mfs-server[ollama]" or all-providers |
Running Ollama server; OLLAMA_HOST can point at a non-default host |
The selected model must be available to the Ollama server before dimension probing and embedding can succeed. |
local |
all-MiniLM-L6-v2 |
Detected from sentence-transformers model metadata | uv tool install "mfs-server[local]" |
No API key | mfs-server run and mfs-server worker preload the sentence-transformers model on the detected device: CUDA, MPS, then CPU. |
Prefer the setup wizard when switching providers:
The wizard writes:
It probes the selected provider for the actual dimension. If the probe fails
because credentials, dependencies, or a local service are not ready, the wizard
lets you enter the dimension manually. Only hand-edit dim when you know the
provider model's output size.
After changing the embedding provider or model, re-index sources you depend on so query vectors and indexed vectors come from the same embedding space:
Summary and VLM Providers¶
Text summary and image-description clients use the LLM provider registry.
| Provider | Default text and vision model | Dependency | Runtime requirement |
|---|---|---|---|
openai |
gpt-4o-mini |
Core | OPENAI_API_KEY; OPENAI_BASE_URL is optional |
anthropic |
claude-sonnet-4-5-20250929 |
uv tool install "mfs-server[anthropic]" or all-providers |
ANTHROPIC_API_KEY |
gemini |
gemini-2.0-flash |
uv tool install "mfs-server[gemini]" or all-providers |
GOOGLE_API_KEY; the Gemini provider module also documents Vertex AI auth |
Image descriptions and directory/file summaries are both off by default. They are two independent subsystems — each has its own enable switch and its own wizard section:
[description] # vision LLM — one call per image
enabled = false
provider = "openai"
model = "gpt-4o-mini"
[summary] # text LLM — one call per directory (and optionally per file)
enabled = false
provider = "openai"
model = "gpt-4o-mini"
dir = true # summarize directories (recursive, bottom-up)
file = false # also summarize each individual file (~2x cost)
include_image_description = false # fold image-description text into directory summaries
Configure them with their own wizard sections:
mfs-server setup --section description # images
mfs-server setup --section summary # directories / files
The description section writes only [description]; the summary section
writes only [summary]. You can also set MFS_SUMMARY_ENABLED in the server
environment to turn directory summaries on; truthy values are 1, true,
yes, and on.
Note
Image indexing is gated by [description].enabled: indexable image objects
use the configured provider to produce vlm_description chunks when the call
succeeds. summary.include_image_description only controls whether cached
image-description text is folded into directory-summary input.
Conversion and Processing¶
Framework conversion uses MarkItDown by default:
The framework converter path is used for these file-form document extensions:
.pdf, .docx, .doc, .pptx, .ppt, .xlsx, .xls, .html, and
.htm. Web crawler HTML-to-markdown conversion is connector-specific and does
not use this framework converter path.
flowchart LR
source["Object bytes or records"]
classify["Connector object kind"]
convert["MarkItDown conversion<br/>for configured document extensions"]
text["Text, code, rows, records,<br/>or message threads"]
vlm["Image description<br/>through VLM provider"]
chunks["Search chunks<br/>body / row_text / thread_aggregate<br/>directory_summary / schema_summary / vlm_description"]
embed["Embedding provider"]
index["Milvus dense vectors<br/>plus BM25 content"]
artifacts["Artifact cache<br/>converted_md / head_cache"]
txcache["Transformation cache<br/>embedding / vlm / summary"]
source --> classify
classify --> convert --> chunks
classify --> text --> chunks
classify --> vlm --> chunks
convert --> artifacts
chunks --> embed
embed --> index
convert --> txcache
vlm --> txcache
embed --> txcache
| Input kind | Processing path | Search chunk kind | Cache or artifact |
|---|---|---|---|
| Text, code, markdown, plain documents | Read text, split into chunks, embed | body |
Embedding results in the transformation cache |
| Documents with converter extensions | Convert to markdown, split, embed | body |
converted_md artifact plus convert and embedding cache entries |
| Structured rows or record collections | Render configured text fields, embed each record | row_text |
head_cache artifact for fast head; embedding cache entries |
| Message streams | Aggregate messages by thread, split long threads, embed | thread_aggregate |
Embedding cache entries |
| Table schemas, when summary is enabled | Summarize schema, embed summary | schema_summary |
Summary and embedding cache entries |
| Directories, when summary is enabled | Build bottom-up directory summaries, embed summaries | directory_summary |
Summary and embedding cache entries |
| Images | Generate an image description through the configured VLM provider, then embed it | vlm_description |
vlm_text artifact plus VLM and embedding cache entries |
The transformation cache is content-addressed by input hash, kind, provider,
model, and version. Losing it causes recomputation. The artifact cache stores
derived per-object blobs such as converted markdown and image-description text.
For how these chunks appear as source, locator, metadata.chunk_kind, and
metadata.fields, see Search and browse.
Where Provider Errors Show Up¶
Hosted provider SDKs and credentials are loaded lazily. Local downloadable
embedding providers (onnx and local) are preloaded by mfs-server run and
mfs-server worker, so missing dependencies or failed downloads stop startup
before the service begins accepting work.
| Operation | Provider used | Failure surface |
|---|---|---|
mfs-server setup --section embedding |
Selected embedding provider | Dimension probe can fail; install the extra, export credentials, start local services, or enter a verified dimension manually. |
mfs-server run / mfs-server worker |
onnx or local embedding provider |
Startup blocks while the model is loaded or downloaded; failure stops the process. |
mfs add ... indexing |
Embedding provider, and summary/VLM provider when those features are enabled | mfs job show JOB_ID, mfs connector inspect TARGET, and the provider-related codes in Troubleshooting. |
mfs search QUERY PATH --mode semantic |
Embedding provider for the query vector | Search can fail if the selected embedding provider is unavailable. |
mfs search QUERY PATH --mode hybrid |
Embedding provider for the dense half plus Milvus BM25 for the keyword half | Hybrid search can fail before querying Milvus if query embedding fails. |
mfs search QUERY PATH --mode keyword |
No embedding provider for the query | Useful when the embedding provider is unavailable but indexed BM25 content exists. |
For provider auth, quota, repeated retry, and circuit-breaker recovery, see Troubleshooting.