Node-redis中Redis向量相似度搜索语法错误求助
问题排查与解决
语法错误原因1:查询语句中的空格
你当前的查询语句* => [KNN 10 @embedding $BLOB]中,*与=>之间存在空格,这不符合RedisSearch的语法规范。终端示例中的*=>是连写形式,无空格,这是引发语法报错的核心差异。语法错误原因2:DIALECT参数位置错误
DIALECT属于FT.SEARCH命令的顶层选项,而非PARAMS的子参数,你当前将其放在PARAMS对象中会导致解析异常。修正后的代码
async function searchSimilar(vector: number[]) { // 移除*和=>之间的空格 const query = `*=>[KNN 10 @embedding $BLOB]`; const options = { PARAMS: { BLOB: Buffer.from(new Float32Array(vector).buffer) }, // 将DIALECT作为顶层选项传入 dialect: 2 }; const result = await client.ft.search("idx:answers", query, options); return result; }额外验证点
- 确认Redis索引
idx:answers的向量字段embedding类型配置正确(需为FLOAT32类型,维度与输入向量一致) - 检查向量转换后的Buffer是否符合要求:Float32Array的buffer直接转Buffer是可行的,但需确保向量维度与索引定义匹配
- 确认Redis索引
内容的提问来源于stack exchange,提问作者Denis
相关产品推荐
相关产品推荐

