Laravel中创建Redis HNSW向量索引报错:Bad arguments for algorithm HNSW:768
问题原因与解决方法
你遇到的错误是因为创建HNSW向量字段时,算法配置参数的格式不正确。Redis的FT.CREATE命令要求HNSW的参数按参数名+参数值的顺序传递,而你使用了关联数组,导致客户端生成了Redis无法解析的命令格式。
修正后的代码
将VectorField的第三个参数从关联数组改为扁平化的索引数组:
$schema = [ new NumericField('doc_id'), new NumericField('entity_id'), new VectorField('embedding', 'HNSW', ['DIM', 768, 'DISTANCE_METRIC', 'COSINE']), new TagField('users'), new TagField('url'), ]; return Redis::ftCreate('testVector', $schema, []);
补充说明
- Redis的RediSearch模块要求HNSW算法的参数以
DIM <维度值> DISTANCE_METRIC <度量方式>的格式传入,Laravel的Redis客户端会直接将你传入的数组展开为命令参数,因此必须使用索引数组严格匹配参数顺序。 - 确保你的Redis服务器已安装Redis Stack(包含RediSearch模块),且版本不低于2.0,因为HNSW是该版本后才支持的向量索引算法。
内容的提问来源于stack exchange,提问作者Danilo Toro
相关产品推荐
相关产品推荐

