Logo
Section 1 / 3

Redis 中的向量搜索简介

了解 Redis 如何通过不同的命令、索引、数据类型和查询格式来支持向量搜索。

导入

Redis 中的向量搜索简介

了解 Redis 如何通过不同的命令、索引、数据类型和查询格式来支持向量搜索。

创建 FLAT 索引

1FT.CREATE demo_index 2SCHEMA embedding VECTOR 3FLAT 410 5TYPE FLOAT64 6DIM 128 7DISTANCE_METRIC L2 8INITIAL_CAP 1000000 9BLOCK_SIZE 1000

创建 HNSW 索引

1FT.CREATE test_index 2SCHEMA embedding VECTOR 3HNSW 416 5TYPE FLOAT32 6DIM 256 7DISTANCE_METRIC COSINE 8INITIAL_CAP 1000000 9M 42 10EF_CONSTRUCTION 250 11EF_RUNTIME 20 12EPSILON 0.8

对比表

方面FLATHNSW
搜索方式暴力搜索基于图的搜索
准确性保证找到精确的最近邻找到近似的最近邻
速度较慢,尤其在大数据集上大数据集上快得多
可扩展性大数据集上表现差大数据集上具有良好可扩展性
计算开销高,随数据集大小线性增长较低,随数据集增长更优
适用场景小规模数据集,且需要精确匹配大规模数据集,可接受近似结果

使用 HSET

1HSET product:1 name product_1 vector_field <binary_vector_data>

代码示例

1FT.CREATE demo_index ON JSON SCHEMA $.vector_field as vector VECTOR FLAT 6 TYPE FLOAT64 DIM 5 DISTANCE_METRIC COSINE

使用 JSON.SET

1JSON.SET 42 $ '{"name":"product_1","vector_field":[0.1,0.2,0.3,0.4,0.5]}'

使用 FT.SEARCH 进行 KNN 查询

1FT.SEARCH demo_index "(*)=>[KNN 5 @embedding $query_vector]" PARAMS 2 "query_vector" "<binary data>" SORTBY "__vector_score" ASC RETURN 2 "__vector_score" "description" DIALECT 2

Pinecone 向量数据库

动手实践:电影推荐服务