Applies to VAST Cluster 5.5.
This page lists the limits and rules for vector-indexed tables in VAST Cluster 5.5. Most of them are fixed when you create the table, so check them before you design one. For which table structures can be combined (sorting, partitioning, projections, user-defined row IDs, replication), see the VAST DataBase limits page.
Index rules
| Limit |
Value or rule |
| Indexed vector columns per table |
1 |
| When you can create the index |
Only when you create the table. You can't add an index to an existing table: the VMS REST API's PATCH /tables/add_columns/ accepts a vector_indexes entry on a table without an index and returns HTTP 204, but creates no index (CI/CD and automation). |
| Drop the index |
Not possible. The index lasts as long as the table; drop the table to remove it. |
| Change the metric (distance function) |
Not possible |
| Change the quantization |
Not possible. SQL ALTER TABLE ... ALTER COLUMN on the indexed column fails with This functionality is not implemented yet, and a VMS REST PATCH /tables/ with new quantization values returns HTTP 204 but changes nothing. |
| Distance metrics |
l2sq (Euclidean), cosine, ip (inner product) |
| Quantization |
none, scalar_8bit. scalar_8bit for clustering with none for search isn't allowed; see quantization. |
| Element types for an index |
FLOAT (fp32) and FLOAT16 (fp16, alias HALF). An index on a VECTOR(INTEGER, <d>) column is accepted at CREATE TABLE, but rows can't then be inserted through SQL. |
| Dimension |
Fixed per column. The maximum for an indexed column depends on the cluster quantization: 2,147 with scalar_8bit, 536 with none, for FLOAT and FLOAT16 alike. The search quantization doesn't change it. A larger dimension fails at CREATE TABLE (errors). The limit comes from the memory the CNodes set aside for clustering, so if you need more dimensions, ask your platform team: they can change the CNode configuration to free more memory. A vector column without an index can be larger. |
| Column name |
Don't call the vector column vector: it's a reserved word in the VAST Query Engine. |
Table rules
| Limit |
Value or rule |
| Add or drop columns |
Not supported on a vector-indexed table |
| Rename the indexed vector column |
Not supported |
| Update the vector column |
Not supported. Delete the row and insert it again. |
| Sorted table with a vector index |
Not supported |
| Partitioned table with a vector index |
Not supported |
| Replication |
A vector-indexed table can't be replicated, and you can't create one in a replicated path. See VAST DataBase limits. |
| User-defined row IDs |
Not supported with a vector index. See VAST DataBase limits. A vastdb_rowid column with a vector index fails with failed to enable vector index eres=14, and the table is created anyway, without an index. |
Search rules
| Limit |
Value or rule |
| Query shape |
ORDER BY <distance> LIMIT k, ascending, with one sort key and no OFFSET. Other shapes run, but as a full scan: EXPLAIN shows a VAST_VEC_INDEX_SCAN step only for a search that uses the index. See query design. |
LIMIT |
Required: ORDER BY a distance without LIMIT fails with The operator 'ORDER_BY' type=1 is currently not supported for this usage. There's no default k, and no documented cap: searches with LIMIT up to 1,000,000 return exactly that many rows, and so does vector_search(limit=100000). |
| SQL statement size |
5 MB, as for any Query Engine statement. See VAST DataBase limits. |
| Query plan size |
A statement with many vector literals, such as a multi-row INSERT ... VALUES, can fail with Logical plan is too big: <size> > 4194304 well before it reaches 5 MB. Load embeddings with bulk ingest (ingest). |
| Fresh inserts |
Searchable straight away. Until background clustering takes them into the index, the search reads them directly. |
| Trino, Spark and Dremio |
The VAST connectors for Trino, Spark and Dremio don't support vector index-based search. Trino and Spark have no type for a VECTOR column (see supported data types). Search through the VAST Query Engine. |
See also