向量检索介绍
为了满足更多元化、更复杂的业务场景,开放搜索推出向量检索功能,在特定的业务场景下(特别是教育搜题场景、图片搜索场景),可以结合多路搜索功能,提升搜索结果的准确率。下面将介绍向量索引的语法说明和注意事项。
语法说明
query = vector_index:'向量'
示例:查询64维的向量索引
vector: '0.377796,-0.958450,0.409853,-0.238177,-1.293826,0.356797,-0.295727,0.847301,-1.220337,0.148032,-1.128458,0.903187,0.509352,0.293686,-1.005852,-0.488839,0.888227,-0.555556,-0.658025,0.267552,-0.567601,0.003045,0.591734,-0.515983,-1.316453,-1.462450,0.091946,1.554954,0.384802,0.720498,0.144338,1.217826,0.724039,0.044212,0.571332,-1.425430,0.618965,0.481887,-1.617787,1.505416,-0.683652,1.030900,0.562021,0.162437,0.816546,0.112229,-0.739288,-0.342643,-0.199292,0.508368,-1.384887,-1.842170,0.952622,-1.699499,0.199430,-0.232464,-0.273227,-0.383696,-0.511302,0.005458,1.873572,-0.926169,-0.417587,-0.660156'
使用示例
设定最低分阈值
功能说明:控制向量分值低于或高于某个阈值时,不参与召回。
参数格式:&sf=number
使用示例:
query=index_name:'0.1,0.2,0.98,0.6;0.3,0.4,0.98,0.6&sf=0.8'
指定top n 查询
功能说明:指定向量检索返回的top结果数
参数格式:&n=number
直接拼接在向量之后
使用示例:
query=vector_index:'0.1,0.2,0.98,0.6;0.3,0.4,0.98,0.6&n=10'
获取向量得分排序
功能说明:通过在业务排序表达式中设置proxima_score()
函数获取向量得分进行排序。
配置步骤:
创建业务排序策略:
注:proxima_score函数的参数为向量索引名称。
搜索测试页面引用,创建的业务排序策略进行测试:
说明
系统默认使用欧式距离(l2)
内积距离(ip),向量得分越大,文档相关性越高
欧式距离(l2),向量得分越小,文档相关性越高
注意事项
系统默认在构建索引时的向量距离方式为欧式距离(l2),如需内积距离(ip),需要将内积距离的向量归一化后在传入引擎
向量索引对应的字段必须为DOUBLE_ARRAY类型。
向量分词器目前支持的维度有64维、128维、256、512维,每个维度对应的DOUBLE_ARAARY类型的字段中的元素也必须为64维、128维、256维、512维,必须精准对应。
向量索引的长度限制为编码前4K,一般一个query里面最多支持查询2个向量索引