我已经开始探索 redis 向量搜索模块,我正在按照本教程进行 redis 向量搜索:
https://github.com/RediSearch/RediSearch/blob/master/docs/docs/vecsim-range_queries_examples.ipynb
但是在加载向量后,我得到的索引大小为 0,尽管键存在于 redis 中。
我正在为 POC 使用词向量。
我正在使用此代码创建索引。
redis_conn = Redis(host = host, port = port)
schema = (VectorField("vector", "HNSW", {"TYPE": "FLOAT32", "DIM": dim, "DISTANCE_METRIC": "COSINE"}))
redis_conn.ft('w2v').create_index(schema, definition=IndexDefinition(prefix=["X:"], index_type=IndexType.HASH))
redis_conn.ft('w2v').config_set("default_dialect", 2)
并使用此代码将向量加载到 redis 中:
for key in V.keys():
np_vector = np.array(V[key])
key = "X:" + key
client.hset(key, mapping = {"vector": np_vector.tobytes()})
其中 V 是键和向量的字典。
完成后,我正在通过
检查索引的大小print("Index size: ", redis_conn.ft('w2v').info()['num_docs'])
但是结果是 0.
我检查了 redis 中的键,它们存在,但我无法执行任何查询。
当前代码有什么问题还是我遗漏了什么?