Skip to main content
Use this setup when you want semantic search without an external embedding API. It is useful on small CPU-only VPS instances where Ollama can be slower than the default vector indexing settings. KiwiFS supports two tuning knobs for this case:
  • [search.vector].worker_count lowers concurrent embed and upsert workers.
  • [search.vector.embedder].timeout raises the Ollama HTTP request timeout.
The defaults stay optimized for normal machines: worker_count defaults to 5, and the Ollama timeout defaults to 30s.

Prerequisites

  • KiwiFS with the vector tuning options from kiwifs/kiwifs#20.
  • An Ollama server reachable from the KiwiFS process.
  • An embedding model pulled into Ollama.

Configure KiwiFS

Create or update .kiwi/config.toml in your knowledge root.
This keeps the full stack local:
  • Ollama generates embeddings on the same machine.
  • sqlite-vec stores vectors inside the KiwiFS search database.
  • No embedding API key is required.
Use Go duration strings for timeout, such as 60s, 120s, or 3m.

Choose the Ollama URL

The correct base_url depends on where KiwiFS runs.
Use the local Ollama URL.
On Linux, add a host gateway entry to the KiwiFS container and use host.docker.internal.
Then configure KiwiFS:
Use the Ollama service name as the hostname.

Index existing files

After enabling vector search, rebuild the search indexes once.
For a large vault on a small VPS, keep worker_count = 1 for the first reindex. Raise it later only if CPU, memory, and Ollama latency remain stable.

When to tune the values

Troubleshooting

Check Ollama from the KiwiFS machine

If KiwiFS runs in Docker, run the check from inside the container and use the same hostname as base_url.

Confirm the model exists

If nomic-embed-text is missing, pull it:

Recover from a failed first reindex

Keep the same config, raise timeout, and run reindex again. The vector index is derivative data, so KiwiFS can rebuild it from the markdown files.
Last modified on May 15, 2026