Welcome to the new DOCS.vastdata.com. We've added new menus and a version selector, plus new persona and resource pages to help customers get started. Looking for a previous article? Use the docs search.

Overview

Prev Next

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 SELECT that computes a distance, sorts by it ascending and keeps the first k rows. Ordinary WHERE filters 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 is a column type on a VAST DataBase table: the table holds an ID, metadata and a fixed-length embedding column, and can have a vector index, a hierarchy of clusters defined when the table is created; the small tree drawn in the index box is schematic. Embeddings come from your pipeline. They are loaded with the Python SDK (insert or import_files), or through the Query Engine with SQL INSERT or ADBC bulk ingest. Your application searches through the VAST Query Engine with its ADBC driver, using a distance function in ORDER BY with a LIMIT; the SDK's vector_search also runs through the Query Engine. Identity policies gate DDL, DML and search, and row and column security applies to results. The Trino and Spark connectors don't support vector index-based search.

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

Where to go next

  1. Quickstart: create an indexed table, insert rows and search them.
  2. The vector index: what you choose when you create one, and how search uses it.
  3. Setup: what to ask your platform team for before you start.