子向量索引,即对向量的部分或子集进行索引,可有效处理大规模的高维数据。
子向量索引
- 创建一个具有3个维度的向量表。 - CREATE TABLE items (id bigserial PRIMARY KEY, embedding vector(3));
- 使用表达式索引进行子向量索引。 - CREATE INDEX ON items USING hnsw ((subvector(embedding, 1, 3)::vector(3)) vector_cosine_ops);
- 查询。 - 使用余弦距离获取最近邻。 - SELECT * FROM items ORDER BY subvector(embedding, 1, 3)::vector(3) <=> subvector('[1,2,3,4,5]'::vector, 1, 3) LIMIT 5;
- 通过完整向量重新排序以提高召回率。 - SELECT * FROM ( SELECT * FROM items ORDER BY subvector(embedding, 1, 3)::vector(3) <=> subvector('[1,2,3,4,5]'::vector, 1, 3) LIMIT 20 ) ORDER BY embedding <=> '[1,2,3,4,5]' LIMIT 5;
 
该文章对您有帮助吗?