redisearch 矢量搜索“ResponseError:在 DateTime 附近偏移 50 处存在语法错误”

问题描述 投票:0回答:1

我有一个 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

python redis redisearch
1个回答
0
投票

您正在尝试执行混合搜索,但数字过滤器的位置错误。必须添加过滤器来代替“*”。

来自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 支持和其余功能(时间序列和概率数据结构)

© www.soinside.com 2019 - 2024. All rights reserved.