Search
Get the nearest 5 neighbors to a vector
sql
SET vectors.hnsw_ef_search = 64;
SELECT * FROM items ORDER BY embedding <-> '[3,2,1]' LIMIT 5;
Operators
These operators are used for distance metrics:
Name | Description |
---|---|
<-> | squared Euclidean distance |
<#> | negative dot product |
<=> | cosine distance |
For their definitions, see overview.
Filter
For a given category, get the nearest 10 neighbors to a vector
sql
SELECT 1 FROM items WHERE category_id = 1 ORDER BY embedding <#> '[0.5,0.5,0.5]' limit 10
Query options
Set ivf
scan lists to 1 in session:
sql
SET vectors.ivf_nprobe=1;
Set hnsw
search scope to 40 in transaction:
sql
SET LOCAL vectors.hnsw_ef_search=40;
For all options, refer to search options.
Search modes
There are two search modes: vbase
and basic
.
vbase
As the default search mode, vbase
is suitable for most scenarios.
For how it works, refer to the thesis VBASE: Unifying Online Vector Similarity Search and Relational Queries via Relaxed Monotonicity.
basic
basic
is behaviorally consistent with traditional vector databases. It will be useful if you want to align other vector databases.
Enabling basic
, you must respect these restrictions:
- Search without filter