The vector store is grounded's fast path to the evidence. At ingest every document is chunked and embedded, and the chunks land in a Qdrant collection keyed by a 384-dimension vector from a local bge-small-en-v1.5 model. At query time the question is embedded the same way and the store returns the top five chunks by cosine similarity, each one carrying its source, its heading, the text and a score.

Two lanes into one local collection. Ingest fills it, the query reads the five nearest chunks, and each hit carries a score the gate will judge.

Two things make it honest rather than magic. The embedding model runs on the box, so nothing leaves at ingest time and there is no key to hold; and Qdrant runs embedded by default, a local directory rather than a server, so the whole retrieval path works with no Docker and no network. Point QDRANT_URL at a running server only when you outgrow that.

What the store does not do is decide. It finds what is semantically near and reports how near with a cosine score. Whether "near" is near enough to answer from is not its call. That number travels on to the grounding gate, which reads it against a tuned floor and either lets the answer proceed or abstains. The store retrieves; it does not conclude.