Search
kura offers three search commands that trade speed for quality. All three run entirely on your machine.
The three modes
Section titled “The three modes”kura search — keyword
Section titled “kura search — keyword”FTS5 full-text search with BM25 ranking. On a fresh install this uses the sqlite-vaporetto morphological tokenizer, so a Japanese query splits into real words rather than character n-grams. It is fast (typically under 100 ms) and needs no LLM provider — this is the mode that always works.
kura search "WAL checkpoint"Reach for it when you know roughly which words appear in the document.
kura vsearch — semantic
Section titled “kura vsearch — semantic”Vector K-nearest-neighbor search over embeddings, using sqlite-vec. Documents are chunked and embedded by a local model, so a query matches on meaning rather than exact words — “how writes stay readable” can surface a note titled “WAL checkpointing” even with no shared terms.
kura vsearch "how writes stay readable"vsearch needs embeddings, which need a provider. See
degradation below.
kura query — hybrid (best quality)
Section titled “kura query — hybrid (best quality)”The full pipeline: run keyword and semantic search, fuse the two ranked lists, then rerank the top candidates with a local LLM. This is the highest-quality mode and the one to use when you’re not sure of the exact wording.
kura query "SQLite concurrency"Which mode to use
Section titled “Which mode to use”| You know… | Use |
|---|---|
| the words that appear | kura search |
| only the idea, not the words | kura vsearch |
| you want the best answer, wording aside | kura query |
Asking questions — kura ask
Section titled “Asking questions — kura ask”When you want an answer rather than a list of documents, kura ask
runs the hybrid search and then has the local LLM answer your question
using only the top hits, citing them as [1], [2], …:
kura ask "WAL モードで reader は writer をブロックする?"The answer is followed by a numbered source list so every claim can be
traced back to a document. Answers come strictly from your knowledge
base — if it holds nothing relevant, kura says so instead of guessing.
Without an LLM provider, kura ask simply shows the search results.
Embeddings
Section titled “Embeddings”Semantic and hybrid search read from a vector index that has to be
populated. Writes only mark new chunks as pending. Before a search, kura
automatically embeds up to 100 pending chunks; use kura embed for a larger
backlog or to resume interrupted work. kura status reports embedding
coverage so you can tell when a backfill is due.
If you change the embedding model, run kura doctor --fix (to detect
the change) and then kura embed to regenerate vectors at the new
model’s dimensions.
Degradation without a provider
Section titled “Degradation without a provider”Keyword and hybrid search work offline; only pure semantic search needs a model:
kura searchworks with or without a provider — always.kura queryfalls back toward keyword results when semantic search or reranking is unavailable, so you still get an answer — just without the model-driven quality boost.kura askfalls back to showing the search results instead of a generated answer.kura vsearchis the exception: it requires an embedding provider and does not fall back. With none reachable it exits with code4(LLM provider unavailable). Usekura querywhen you want a result that degrades to keyword search instead.
This is a core guarantee: the knowledge base stays searchable offline. See Configuration to choose or disable the provider.