Applies to VAST Cluster 5.5.
VAST Vector Search is nearest-neighbour search over embeddings stored in VAST DataBase tables. A vector is a column type on VAST DataBase: you add a fixed-length vector column to an ordinary table, and you can give that column a vector index when you create the table. You search with SQL through the VAST Query Engine: compute a distance, sort by it, and keep the first k rows.
These docs are for people who build on Vector Search. Enabling the Query Engine and granting access are tasks for your platform team; see setup for what to ask for.
What you get
- The index lives in the table. A vector index arranges the table's data by distance on one vector column, so a search opens the most promising parts of the table and skips the rest (Vector database index). See architecture.
- Search is SQL. A search is a
SELECTthat computes a distance, sorts by it ascending and keeps the first k rows. OrdinaryWHEREfilters work alongside it (Vector search). See query design. - New rows are searchable straight away. Adding rows to the index takes some time, but newly inserted vectors can be found by search as soon as the insert commits.
- Your security rules still apply. Identity policies gate who can create, load and search, and rows a user isn't allowed to see don't appear in their results (Vector search). See security.
- It's an ordinary VAST DataBase table. Metadata and the embedding sit in the same row, in the same transactions, on the same cluster storage as your other tables.
How you access it
A vector-indexed table is a VAST DataBase table: load it with the Python SDK or SQL, and search through the Query Engine.
| Client | Use it for | Start here |
|---|---|---|
| VAST Query Engine (ADBC driver) | SQL that creates indexed tables, loads rows (SQL INSERT or ADBC bulk ingest) and searches them. Search through the Query Engine is the path that uses the vector index. |
Quickstart, ADBC |
Python SDK (vastdb) |
Creating indexed tables (VectorIndexSpec), loading Arrow data and Parquet files, and vector_search(), which runs its search through the Query Engine (Supported query engines) |
Python SDK |
| Trino, Spark and Dremio connectors | Not for search: they don't support vector index-based search | Limits |
Your client reaches the Query Engine through a virtual IP pool with the Query Engine role (VAST Query Engine). Setup lists the endpoints and permissions you need.
A vector-indexed table is a VAST DataBase table, so the VAST DataBase docs on schemas, transactions and permissions apply to it, and these pages link to them rather than repeat them. The table side, such as what a vector index can be combined with, is covered in table structures: vector-indexed tables and limits: combining table structures.
Use cases and considerations
Example use cases:
- Retrieval for RAG. Store document chunks, their metadata and their embeddings in one row, and retrieve the top k rows with SQL filters such as language, tenant or date. See RAG retrieval.
- Semantic search over documents, images, or embeddings derived from video.
- Near-duplicate detection with Euclidean or cosine distance.
- Filtered nearest-neighbour search, where metadata filters and vector similarity work together in one query.
Important to note:
- Some decisions are made once, when you create the table. The index, its distance metric and its quantization are set at creation: you can't add the index later, remove it or change the metric, and there's no way to change the quantization afterwards. A vector index also rules out sorting and partitioning (5.5.0 release notes), and the table can't be replicated. Read design a vector table and limits before you create one.
- Search runs through the VAST Query Engine. The VAST connectors for Trino, Spark and Dremio don't support vector index-based search. See limits.
- It has its own SQL and client surface. It isn't API-compatible with pgvector or Pinecone; see migrate to VAST Vector Search.
- For exact matches or primary-key lookups, you don't need a vector index: use ordinary SQL filters, such as
WHERE id = ….
Related products and features
| You want to… | Go to |
|---|---|
| Understand the table underneath: schemas, transactions, permissions | VAST DataBase overview and concepts |
| Compute embeddings on the cluster as files and objects arrive | VAST DataEngine, and its VAST DataBase and Vector Search patterns |
| Stream events into VAST DataBase tables | VAST Event Broker |
| Create indexed tables from CI with the REST API, vastpy or Terraform | CI/CD and automation |
| Find white papers, webinars and other vector database material | VAST DataBase & Vector Database Resources on the KB |
What's in this section
- Overview and quickstart: this overview, the quickstart (create an indexed table, insert rows and search them) and the release notes.
- Concepts: the vector index (objects, lifecycle and search rules) and architecture (how the index is built and searched on the cluster).
- Guides: design a vector table, create an index, ingest, query design, filters, quantization, measure recall and latency, RAG retrieval and migrate to VAST Vector Search.
- Integrations: ADBC, the main client for search, and the Python SDK. The SDK's vector calls are in the VAST DataBase Python SDK reference.
- Reference: SQL, search session settings, limits and a cheat sheet.
- Operations: setup, security, performance and sizing and CI/CD and automation.
- Troubleshooting: symptom to fix, error index and FAQ.
Where to go next
- Quickstart: create an indexed table, insert rows and search them.
- The vector index: what you choose when you create one, and how search uses it.
- Setup: what to ask your platform team for before you start.