我有一个 redisjson 数据库(带有 redisearch 模块),其中包含向量列和时间戳列。我想查询找到具有时间条件的最相似的项目。
queries = [
"Some text to search",
]
query = (
Query('*=>[KNN 10 @vector $query_vector AS vector_score] @DateTime:[1696672140005 1696958220000]')
.sort_by('vector_score')
.return_fields('vector_score', 'title', 'DateTime')
.dialect(2)
)
for i in range(len(queries)):
encoded_query = embedder.encode(queries[i])
print(client.ft('idx:myindex').search(
query,
{
'query_vector': np.array(encoded_query, dtype=np.float32).tobytes()
}
).docs)
我想找到最相似的项目,但出现此错误
ResponseError: Syntax error at offset 50 near DateTime
您正在尝试执行混合搜索,但数字过滤器的位置错误。必须添加过滤器来代替“*”。
来自docs的示例:
FT.SEARCH movies "(@title:Dune @year:[2020 2022])=>[KNN 10 @movie_embedding $BLOB AS movie_distance]" PARAMS 2 BLOB "\x12\xa9\xf5\x6c" SORTBY movie_distance DIALECT 4
我建议您运行 Redis Stack 或测试 Redis 8 M02。 Redis 8 将提供查询引擎、JSON 支持和其余功能(时间序列和概率数据结构)