Embeddings & search
The model, the vector store, and how a query is answered.
Model
Chunks and queries are embedded with BAAI/bge-small-en-v1.5 via
fastembed, which runs locally on CPU — no
API calls, no key. Override the model in
config.toml; changing it requires re-indexing
every bookmark.
Vector store
Each bookmark collection maps to one Chroma collection (col_<id>) using cosine
distance. Search embeds the query, runs a nearest-neighbour lookup capped at
top_k, and returns each hit as {text, url, title, score} where
score = 1 − distance (higher is closer).
An empty or missing collection returns no results rather than an error.
search vs ask
Both tools run the identical retrieval. search_collection is framed for a
keyword query and returns a bare chunk list; ask_collection takes a
natural-language question and wraps the chunks with the question so the client
can synthesise an answer. Neither does any generation itself — that’s the
client’s job.
Last updated Sep 9, 2026