全部产品
Search
文档中心

智能开放搜索 OpenSearch:教育行业模板-多路搜索

更新时间:Nov 30, 2023

介绍

OpenSearch的多路搜索功能结合了文本搜索和向量搜索,做到了搜索延迟和计算消耗低于OR逻辑情况下更高的准确性,并在搜题场景已经得到有效验证。多路召回架构还可以使用到:图片向量召回、公式召回、个性化召回等场景中。image

纯文本查询与多路搜索在搜题场景下的对比

为什么搜题要做多路召回?教育拍照搜题场景相比网页/电商的文本搜索有显著差异:

  • 搜索Query特别长:常规检索term数上限30,搜题可能需要100

  • 搜索Query可能是由拍照OCR识别之后得到的文本,关键term的识别错误会严重影响召回排序

纯文本查询方案

1.OR逻辑查询:

  • 为了降低无结果率,搜题客户常见的系统是基于ES默认的OR逻辑,搜索延迟高,计算消耗大

  • OpenSearch也支持OR逻辑,针对搜索延迟高可以通过并行搜索的方式优化,但整体计算消耗仍然高​

2.AND逻辑查询

  • 采用通用的Query分析模块,无结果率高,整体准确性不如OR逻辑

  • 针对教育领域优化定制的Query分析模块,大幅提高效果,准确性接近OR逻辑

文本向量检索

目标:通过文本向量检索扩召回,结合AND逻辑查询,做到搜索延迟和计算消耗低于OR逻辑的情况下准确性更高向量召回采用BERT模型,其中针对教育搜题做的特别优化有:

  • BERT模型采用达摩院自研的StructBERT,并针对教育行业定制模型

  • 向量检索引擎采用达摩院自研的proxima引擎,准确性和运行速度远超开源系统

  • 训练数据可以基于客户的搜索日志不断积累,效果持续提

效果:

  1. 召回率达到OR逻辑

  2. 准确性超出OR逻辑3%-5%

  3. 整体召回doc数量减少40倍,搜索延迟降低10倍以上

教育行业模板的多路搜索配置

1.配置教育行业模板,行业模板配置完成后检查是否配置了对应的向量索引(这里用的是“向量-教育向量k12”):image2.创建查询分析,增加一个“文本向量化”功能,并配置上1中设置的向量索引:image3.设置排序策略,教育行业模板默认会创建两个CAVA脚本的业务排序(sys_text_rank-针对文本索引、sys_vector_rank- 针对向量索引):image

4.创建多路召回策略,步骤为:设置策略名称 --> 多路搜索配置(向量索引,文本索引) --> 配置综合排序(排序逻辑,参与排序的文档数量) :image

5.控制台测试

假设查询query为:搜索测试,多路搜索查询策略为sys_strategy,查询分析规则为sys_defaultimage:图中的三个参数,缺一不可(查询分析如果设置为默认,这里可以省略)。查询请求格式:

query=default:'搜索测试'&search_strategy=sys_strategy&raw_query=搜索测试&qp=sys_default

SDK参数配置:(以Java为例)

...
   
//定义Config对象,用于设定config子句参数,用于分页或设置数据返回格式
Config config = new Config(Lists.<String>newArrayList(appName));
config.setStart(0);
config.setHits(10);
​
//设置返回格式为json
config.setSearchFormat(SearchFormat.FULLJSON);
​
​
// 创建参数对象
SearchParams searchParams = new SearchParams(config);
​
//设置查询需要传入的参数
HashMap<String,String> paraMap=new HashMap<String,String>();
//设置raw_query
paraMap.put("raw_query","搜索测试");
//设置多路搜索
paraMap.put("search_strategy","sys_strategy");
searchParams.setCustomParam(paraMap);
​
//设置查询分析
List<String> qpName = new ArrayList<String>();
qpName.add("sys_default");  //设置查询分析名称
searchParams.setQueryProcessorNames(qpName);
​
...

注意事项

  • 多路召回功能目前只针对独享型应用进行开放;

  • 多路召回功能暂不支持aggregate、distinct子句;

  • 每个应用最多创建10个多路召回的查询策略;

  • 多路搜索配置中,文本搜索向量搜索是必选项,并且二者的召回结果占比和需为100%;

  • 多路搜索配置中,文本搜索向量搜索的基础排序从排序配置-基础排序中选择,业务排序从排序配置-业务排序中选择;

  • 综合排序配置中,归并排序从业务排式中选择,必选,也可以选择“无”,默认选择“无”,排序文档数量为必填,最多为5000,需填写大于0的值;

  • 非系统自动生成的向量索引,无法在查询分析文本向量化功能中选择。

  • 如需使用自建向量索引的多路搜索功能,请联系我们。