改进 Elastic Stack 中的信息检索:提高搜索相关性的步骤

作者:Grégoire CorbièreQuentin HerrerosThomas Veasey 

自 8.0 和用于文本嵌入的第三方自然语言处理 (NLP) 模型发布以来,Elastic Stack 的用户可以访问各种模型来嵌入其文本文档并使用矢量搜索执行基于查询的信息检索。

考虑到所有这些组件及其参数,并根据你要搜索的文本语料库,选择哪些设置将提供最佳搜索相关性可能会让人不知所措。

在本系列博客文章中,我们将介绍使用 Elastic Stack 中提供的各种公开数据集和信息检索技术运行的一些测试。 然后,我们将根据设置提供最佳使用技术的建议。

为了开始这一系列博客,我们希望通过描述我们正在解决的问题以及描述我们将在后续博客中进一步深入研究的一些方法来奠定基础。

背景和术语

BM25:用于词法搜索的稀疏、无监督模型

Elasticsearch 根据文本查询对文档进行相关性排名的经典方式是使用 Okapi BM25 模型的 Lucene 实现。 尽管该模型的一些超参数经过微调以优化大多数情况下的结果,但该技术被认为是无监督的,因为标记查询和文档不需要使用它:该模型很可能在任何语料库上都表现得相当好文本,而不依赖于带注释的数据。 众所周知,BM25 是零样本检索设置中的强大基线。

在底层,这种模型构建了一个术语频率(term frequencies)矩阵(一个术语在每个文档中出现的次数)和逆文档频率(inverse document frequenccies,与包含每个术语的文档数量相反)。 然后,它根据这些频率对每个索引的文档的每个查询词进行评分。 由于每个文档通常包含语料库中使用的所有单词的一小部分,因此矩阵包含很多零。 这就是为什么这种类型的表示被称为稀疏的。

此外,该模型还总结了文档查询中每个单独术语的相关性得分,而不考虑任何语义知识(同义词、上下文等)。 这称为词法搜索(与语义搜索相对)。 它的缺点是所谓的词汇不匹配问题,即查询词汇与文档词汇略有不同。 这促使其他评分模型试图结合语义知识来避免这个问题。

密集模型:用于语义搜索的密集、监督模型

最近,基于 Transformer 的模型允许对文本进行密集的、上下文感知的表示,解决了上述主要缺点。

要构建此类模型,需要执行以下步骤:

1. 预训练 - pre-training

我们首先需要训练一个神经网络来理解自然语言的基本语法。

该模型使用庞大的文本语料库,通过无监督任务(如掩码词预测或下一句预测)的训练来学习语义知识。
BERT 可能是这些模型中最著名的例子 —— 它使用 Masked Word Prediction 在 Wikipedia(2.5B 单词)和 BookCorpus(800M 单词)上进行训练。

这称为预训练。 该模型学习语言标记的向量表示,可以通过更少的训练来适应其他任务。

请注意,在此步骤中,模型在下游 NLP 任务上表现不佳。

此步骤非常昂贵,但存在许多可以现成使用的此类基础模型。

2. 针对特定任务的训练

现在该模型已经构建了自然语言的表示,它将更有效地训练特定任务,例如允许问答的密集段落检索 (Dense Passage Retrival - DPR)。

为此,我们必须稍微调整模型的架构,然后在大量任务实例上对其进行训练,对于 DPR 来说,这包括匹配从相关文档中获取的相关段落。

所以这需要一个标记数据集,即三元组的集合:

  • 一个问题:“What is gold formed in ?”
  • 文档或摘自文档的段落:“The core of large stars, especially during a nova”
  • 可选项,该(查询,文档)对的相关度分数(如果没有给出分数,我们假设分数是二进制的,并且所有其他文档都可以被认为与给定查询不相关。)

MS MARCO 数据集是用于执行 DPR 训练的一个非常流行且公开的数据集。

该数据集是使用 Microsoft Bing 搜索引擎的查询和热门结果创建的。 因此,它包含的查询和文档属于一般知识语言领域,而不是特定的语言领域(想想研究论文或法律中使用的语言)。

语言领域的概念很重要,因为这些模型学习到的语义知识给它们带来了 “领域内” 的重要优势:当 BERT 出现时,它极大地改进了 MS MARCO 数据集上之前最先进的模型。

3. 特定领域的培训

根据你的数据与用于特定于任务的训练的数据集的不同程度,你可能需要使用特定于域的标记数据集来训练你的模型。 此步骤也称为域适应微调或域适应。

好消息是,你不需要前面步骤所需的大数据集 - 几千或数万个任务实例就足够了。

坏消息是这些查询 - 文档对需要由领域专家构建,因此它通常是一个昂贵的选择。

领域适应大致类似于特定任务的训练。

介绍了这些不同的技术后,我们将测量它们在各种数据集上的表现。 我们对这种通用信息检索任务特别感兴趣。 我们希望为一系列用户提供工具和指导,包括那些不想自己训练模型以获得搜索带来的一些好处的用户。 在本系列的下一篇博客文章中,我们将描述我们将使用的方法和基准套件。

猜你喜欢

转载自blog.csdn.net/UbuntuTouch/article/details/131569443