前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >改进 Elastic Stack 中的信息检索:提高搜索相关性的步骤

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

原创
作者头像
点火三周
发布2023-07-19 22:39:12
2850
发布2023-07-19 22:39:12
举报
文章被收录于专栏:Elastic Stack专栏Elastic Stack专栏

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

但考虑到各种组件及其参数,如何选择合适的设置以提供最佳搜索相关性,成为了让大多数开发者头疼的问题。

因此,在本系列博客文章中,我们将向您介绍如何使用 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 任务上表现不佳。

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

 针对特定任务的训练

现在该模型已经构建了自然语言的表示,它将更有效地训练特定任务,例如允许问答的密集段落检索 (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. 特定领域的训练

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

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

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

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

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景和术语
    • BM25:用于词法搜索的稀疏、无监督模型
      • 密集模型:用于语义搜索的密集、监督模型
        • 1. 预训练 - pre-training
        •  针对特定任务的训练
    相关产品与服务
    Elasticsearch Service
    腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档