Vector
The Vector data engine is DataK³’s vector data plane: a vector collection is a table with a vector<n> column on the tables-gateway, written and read with the protocol your client already speaks. There is no separate vector service and no engine to provision — a vector<n> column is just another column type on the tabled plane.
Speak SQL, Postgres, Qdrant or Pinecone to it. KNN is
ORDER BY "col" <=> '[…]' LIMIT kover the pg wire (pg.uk-lon-1.dodil.io:5432,sslmode=require), or a stock Qdrant / Pinecone client atqdrant.uk-lon-1.dodil.io/pinecone.uk-lon-1.dodil.io— theapi-keyheader carries the db id (the bucket name), not a credential. See Connect & wire adapters.
What lives here
- The SQL data model — the
vector<n>/halfvec<n>/bit<n>types, distance metrics and their operator / opclass mapping, and the HNSW / IVFFlat ANN index. See Core Concepts. - KNN over the wire — pgvector operators in SQL (
<->L2,<#>inner product,<=>cosine), the Qdrant / Pinecone adapters, ordodil data vsearchover the typedTablesVector.QueryVectorsfacet. - The managed search route —
POST /:bucket/search/vector, the control-plane dispatcher that embeds a text/file query server-side and searches pipeline-created collections. See API Reference → Search.
What does NOT live here — auto-embed-on-ingest
Creating a collection that chunks + embeds + indexes uploaded objects for you is a control-plane / ingest concern, not a data-engine one. That whole surface — CreateVectorPipeline, VectorConfig, dodil data vector collection add, the *_embedding_index templates, and the ingest rules that feed them — lives in Pipelines:
- Pipelines → Vector Collections (API) —
CreateVectorPipelineand the pipeline CRUD that reads/deletes a collection - Pipelines →
dodil data vector collection(CLI) - Pipelines → Pipeline Collection recipe — the canonical RAG-ingest flow
- Pipelines → External Collection recipe — BYO embeddings over the wire adapters
- Pipelines → Templates — the embedding template catalog
A pipeline-created collection is still a vector<n> table underneath — once it exists, you query it with the same SQL/KNN paths documented here.
Two ways vectors arrive in a table
| Where vectors come from | How you set it up | Read them with |
|---|---|---|
| You write them (BYO embeddings) | CREATE TABLE … (id VARCHAR PRIMARY KEY, embedding vector(N)), then upsert with a stock Qdrant / Pinecone client or SQL INSERT | SQL KNN · dodil data vsearch · Qdrant / Pinecone search |
| A pipeline writes them (auto-embed) | CreateVectorPipeline with a *_embedding_index template + an ingest rule | the managed search route · or SQL KNN on the physical k3_<uuid> table |
In this section
- Quickstart — create a
vector<n>table, insert, and run SQL KNN in 5 minutes - Core Concepts — the SQL data model: types, metrics, operators, opclasses, the ANN index
- API Reference — the managed search route + the tabled data path (
TablesVector) - CLI Guide —
dodil data vsearch - Recipes — multi-collection search, hybrid + rerank, multimodal search
See also
- Connect & wire adapters — Qdrant / Pinecone / Postgres endpoints, credentials, per-language snippets
- Pipelines — auto-embed-on-ingest collections (the vector pipeline)
- Tables (SQL) — the same tabled plane, full DDL / DML
- Conventions — auth, headers, error envelope
- CLI Basics — install + common flags