Applies to VAST Cluster 5.5.
Short answers to common questions about VAST Vector Search, each with a link to the page that has the detail.
Basics
Is this a separate vector database, like Pinecone?
No. A vector is a column type on VAST DataBase: you create tables with SQL through the VAST Query Engine or with the Python SDK, and search them with SQL. See the overview.
Must I use ADBC?
For searches that use the vector index, yes: they run in the VAST Query Engine, which you reach with the ADBC driver, and the Python SDK's vector_search() uses the same driver. See ADBC.
Can Trino or Spark read a vector column?
Trino and Spark have no type for VECTOR (see supported data types), and their connectors don't use the vector index. Search through the VAST Query Engine. See limits.
The index
Can I index two embedding columns in one table?
Not in 5.5: only one vector column per table can be indexed. Use one table per embedding model; see design a vector table.
Can I add an index to an existing table later?
No. You define the index when you create the table, and you can't remove it afterwards. To index existing data, copy the rows into a new table that has one (move vectors into an indexed table).
Do tables created before VAST Cluster 5.5 get an index when the cluster is upgraded?
No. An index can't be added to an existing table, including one created before 5.5. Copy the rows into a new indexed table (move vectors into an indexed table).
What quantization do I get if I don't choose one?
scalar_8bit for both clustering and search, through SQL and the Python SDK. See quantization.
Can I store vectors as 16-bit floats?
Yes: indexed tables accept VECTOR(FLOAT16, <d>). Values outside the FLOAT16 range are rejected on insert (errors).
Searching
Why ORDER BY dist ASC for inner product, where bigger is more similar?
The inner-product function is array_negative_inner_product, which flips the sign, so smaller is more similar for every metric. See query design.
Can I use the Python SDK's vector_search() on an inner-product (ip) table?
Not in 5.5: on an ip table it returns the least similar rows first. Search ip tables with SQL; see Python SDK.
I copied a search from a webinar that uses cosine_similarity and ORDER BY ... DESC. Why does it fail, or run slowly?
The Query Engine has no cosine_similarity function, so the query as written fails with Catalog Error: Scalar Function with name cosine_similarity does not exist!. If you rewrite it with array_cosine_similarity(...) and ORDER BY ... DESC, it runs, but as a full scan of the table: the descending order doesn't match the shape the index needs. It returns the exact nearest rows, so its results can differ from an index search, and on a large table it's much slower (about twice as long on a test table of 1.2 million rows). Use array_cosine_distance(...) with ORDER BY ... ASC LIMIT k; see query design.
Can I tell from EXPLAIN whether a query used the index?
Yes. On a vector-indexed table, the plan of a search that uses the index contains a VAST_VEC_INDEX_SCAN step; a search that doesn't shows only a plain VAST_SCAN of the table. See query design. The cluster's TopN metrics show it too (performance).
Data protection
Can I search a table through a snapshot?
Yes. Through a snapshot, SQL searches, the SDK's select() and vector_search() return the rows as they were when the snapshot was taken (setup).
Can vector-indexed tables be replicated?
No. See limits.
See also
- Troubleshooting and the error index.
- VAST DataBase FAQ.