Skip to content

Commit

Permalink
Add more details for ranking model
Browse files Browse the repository at this point in the history
  • Loading branch information
w5688414 committed Sep 23, 2022
1 parent a6ad85a commit c5f17d7
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 3 deletions.
6 changes: 4 additions & 2 deletions applications/neural_search/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@
<img src="https://user-images.githubusercontent.com/12107462/191469309-42a54a67-a3a3-4e43-b6b1-b12be81ddf3d.png" width="800px">
</div>

以上是nerual_search的系统流程图,其中左侧为召回环节,核心是语义向量抽取模块;右侧是排序环节,核心是排序模型。召回环节需要用户通过自己的语料构建向量索引库,用户发起query了之后,就可以检索出相似度最近的向量,然后找出该向量对应的文本;排序环节主要是对召回的文本进行重新排序。下面我们分别介绍召回中的语义向量抽取模块,以及排序模型。
以上是nerual_search的系统流程图,其中左侧为召回环节,核心是语义向量抽取模块;右侧是排序环节,核心是排序模型。召回环节需要用户通过自己的语料构建向量索引库,用户发起query了之后,就可以检索出相似度最高的向量,然后找出该向量对应的文本;排序环节主要是对召回的文本进行重新排序。下面我们分别介绍召回中的语义向量抽取模块,以及排序模型。


#### 2.2.2 召回模块
Expand All @@ -74,7 +74,9 @@

#### 2.2.3 排序模块

排序模块有2种选择,第一种基于前沿的预训练模型 ERNIE-Gram,训练 Pair-wise 语义匹配模型;第二种是基于RocketQA模型训练的Cross Encoder模型,用户可以根据自身数据情况进行实验选择最优的方式。召回模型负责从海量(千万级)候选文本中快速(毫秒级)筛选出与 Query 相关性较高的 TopK Doc,排序模型会在召回模型筛选出的 TopK Doc 结果基础之上针对每一个 (Query, Doc) Pair 对进行两两匹配计算相关性,排序效果更精准。
召回模型负责从海量(千万级)候选文本中快速(毫秒级)筛选出与 Query 相关性较高的 TopK Doc,排序模型会在召回模型筛选出的 TopK Doc 结果基础之上针对每一个 (Query, Doc) Pair 对进行两两匹配计算相关性,排序效果更精准。

排序模块有2种选择,第一种基于前沿的预训练模型 ERNIE,训练 Pair-wise 语义匹配模型;第二种是基于RocketQA模型训练的Cross Encoder模形。第一种是Pair-wise的排序算法,基本思路是对样本构建偏序文档对,两两比较,从比较中学习顺序,第二种是Poinet-Wise的算法,只考虑当前Query和每个文档的绝对相关度,并没有考虑其他文档与Query的相关度,但是建模方式比较简单。第一种Pair-wise模型可以说是第二种point-wise模型的改进版本,但对于噪声数据更为敏感,即一个错误的标注会导致多个pair对的错误,用户可以先使用基于Point-wise的Cross Encoder构建一个基础模型,需要进一步优化可以使用Pair-wise的方法优化。

## 3. 文献检索实践

Expand Down
2 changes: 1 addition & 1 deletion pipelines/examples/FAQ/Install_windows.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ python setup.py install
```bash
# 我们建议在 GPU 环境下运行本示例,运行速度较快
python examples/frequently-asked-question/dense_faq_example.py --device gpu
# 如果只有 CPU 机器,安装CPU版本的paddle后,可以通过 --device 参数指定 cpu 即可, 运行耗时较长
# 如果只有 CPU 机器,安装CPU版本的Paddle后,可以通过 --device 参数指定 cpu 即可, 运行耗时较长
python examples/frequently-asked-question/dense_faq_example.py --device cpu
```

Expand Down

0 comments on commit c5f17d7

Please sign in to comment.