Most teams copy their rows into a vector store, then spend the next year keeping the copy honest. In K3 the embedding sits in the same row as the data it describes, so there is nothing to sync and nothing to drift.
CREATE TABLE contracts ( id BIGINT PRIMARY KEY, title VARCHAR, tier VARCHAR, embedding VECTOR(1024) ); CREATE INDEX ON contracts USING hnsw (embedding vector_cosine_ops); BEGIN; INSERT INTO contracts VALUES (42, 'acme-msa-2026', 'enterprise', :emb); UPDATE accounts SET contract_id = 42 WHERE id = :acct; COMMIT; -- the row, its vector and the link land together
Graph indexes quietly lose accuracy as a collection grows. K3’s quantized HNSW holds its recall from twenty thousand to two hundred thousand vectors at 768 dimensions, where a plain graph over the same rows drops below half.
An index only picks candidates. Every result is re-ranked at full precision, so the distance you see is the true one, quantized index or not.
Every build proves every stored vector reachable, or it fails and tells you. A quietly lossy index can’t exist.
Search sees your latest writes. If an index is catching up, K3 answers exactly instead of serving stale results.
WHERE plus nearest-neighbour never comes back short: K3 widens the search, or scans exactly, until the page is full.
Pick per column with plain pgvector syntax. Build in the background with WITH (async) and watch it with SHOW VECTOR INDEXES.
hnswThe default. Under ~20k vectors it builds fastest and measures ≥ 0.99.hnsw_sq_f16Large collections at embedding dimensions. Holds ≥ 0.987 to 200k.hnsw_sq_i8Smallest graph. Refused on inner-product columns, with f16 named instead.ivfflatWell-clustered data; tune recall with ivfflat.probes.ivf_sq8About a quarter of ivfflat’s size, with the same measured recall.Every door reaches the same column and returns the same ranking. Moving off a hosted vector database is a change of address, not a rewrite.
pg.uk-lon-1.dodil.io:5432qdrant.uk-lon-1.dodil.iopinecone.uk-lon-1.dodil.iogql.uk-lon-1.dodil.io/graphqlRetrieve the paragraphs that answer the question, filtered to the customer asking, and hand them to your model with the row ids as citations.
Meaning plus WHERE: only this region, only signed contracts, only what this user may see. One query, no post-filtering in app code.
Store what an agent learned as rows with embeddings, recall the closest memories by meaning, and join them to the facts they refer to.
Attach an embedding template to a bucket and every file that lands is chunked and embedded into a vector table for you.
Keyword and meaning ranked together in one query.
LangChain and LlamaIndex vector stores for K3, one pip install away.
Same bucket, same SQL, same bill as the rest of your data. Free to start, no card.