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

news2024/12/27 3:44:25

作者:Grégoire Corbière, Quentin Herreros, Thomas 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. 特定领域的培训

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

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

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/723370.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Rust 第二天---Rust基础总结

之前已经配置好了Rust的环境,那学习一门语言最开始就是去掌握了解它的基本语法.其实Rust的语法和大多编程语言没什么差别,熟悉C的应该很容易上手,所以今天就快速过一遍基础. 1. 变量与常量 变量应该是编程中最常用到的,但是Rust与其他语言不同的是在声明变量的时候必须说明这…

vue最强table vxe-table 虚拟滚动列表 前端导出

最近遇到个问题。后台一次性返回2万条列表数据。 并且需求要求所有数据必须全部展示,不能做假分页(不能优化了)。 这些数据的直接来源就是CS客户端。 他们做CS客户端就是一次性加载几万条数据不分页(说这是客户的要求&#xff…

android_mars老师_定位_获取最佳的provider

结果展示 ManiActivity package com.example.locationmanager2;import androidx.appcompat.app.AppCompatActivity;import android.content.Context; import android.location.Criteria; import android.location.LocationManager; import android.os.Bundle; import android.…

开放式耳机对耳朵伤害大吗?开放式耳机是什么意思?

​今天来跟大家一起聊聊,开放式耳机对耳朵伤害大不大,还有就是开放式耳机到底是什么类型的耳机,且开放式耳机有哪些比较好用的... 开放式耳机对耳朵伤害大吗? 开放式耳机对耳机的伤害是比较小的,传统入耳式耳机佩戴久了…

【Linux实验】将个人主页上传到服务器

一、实验目的 l 网页制作; l 熟悉 Linux FTP or scp 拷贝; l 熟悉 apache 权限配置。 二、实验内容 l 创建个人主页; l 用 FTP 或 scp 上传服务器; l chmod 设置目录权限; l Web 访问。 三、实验代码 略…

ModaHub魔搭社区:Milvus向量数据库最权威全面的百科

目录 什么是 Milvus? Milvus 向量数据库专为向量查询与检索设计,能够为万亿级向量数据建立索引。与现有的主要用作处理结构化数据的关系型数据库不同,Milvus 在底层设计上就是为了处理由各种非结构化数据转换而来的向量而生。 产品版本 强…

进行EE存储时需要关中断

一、调度中执行存储 在task调度里执行存储任务,在存储之前必须关掉中断,存储之后再打开中断,否则将会影响存储。以下两个函数分别执行挂起所有嵌套的中断和恢复所有嵌套的中断。 二、下电存储 在下电存储之前也需要使EcuM Shutdown或者Shut…

彻底掌握IDEA Debug技巧让你的开发不受任何阻挠

高效开发:IntelliJ IDEA Debug技巧 Debug用来追踪代码的运行流程,通常在程序运行过程中出现异常,启用Debug模式可以分析定位异常发生的位置,以及在运行过程中参数的变化。通常我们也可以启用Debug模式来跟踪代码的运行流程去学习…

3-Spring cloud之搭建Ribbon负载均衡——服务器上实操(上)

3-Spring cloud之搭建Ribbon负载均衡——服务器上实操(上) 1. 前言2. ribbon整合eureka入门2.1 修改相关配置2.1.1 修改服务消费者pom,引入ribbon相关依赖2.1.2 修改服务消费者yml,将客户端注册进eureka服务列表内2.1.3 修改配置类…

Python爬虫爬取双色球开奖结果源码

使用Python编写双色球爬虫:解析彩票数据 引言: 在数字化时代,彩票已经成为人们休闲娱乐的一种方式。而双色球无疑是最受欢迎的彩票之一,它的中奖概率和巨额奖金吸引了无数人的注意。在本文中,我们将介绍如何使用Python…

华为OD机试真题 Python 实现【知识图谱新词挖掘1】【2023Q1 100分】

目录 一、题目描述二、输入描述三、输出描述四、解题思路五、Python算法源码六、效果展示1、输入2、输出3、说明 一、题目描述 小华负责公司知识图谱产品,现在要通过新词挖掘完善知识图谱。 新词挖掘: 给出一个待挖掘文本内容字符串Content和一个词的字符串word&am…

apple pencil二代平替笔哪个好用?好用的苹果笔推荐

自从ipad和其他的平板电脑都搭配上了电容笔以后,电容笔很好地取代了我们的手指,书写的效率就大大提升了,但由于苹果原装电容笔的价格不够人性化,一直高居不下给普通人带来了很大的负担,特别是对于学生们来说&#xff0…

6个提高图片分辨率的在线网站,真的超级实用!

在日常生活中,我们经常会遇到保存的图片模糊不清的情况。有时候这可能是由于保存方式不当,有时候则是由于图片在上传至网站时被压缩所致,导致画质和分辨率下降。 那么,有没有办法可以提高图片的分辨率和画质呢?事实上…

【笔记】微机原理及接口技术5 -- MCS51单片机概述

MCS-51 CPU 由两个部分组成:运算器和控制器 运算器:算术逻辑单元(ALU)、位处理器、累加器 ACC 等组成; 控制器:主要有内部晶振和一些定时、控制逻辑组成 存储器 拥有三个存储器地址空间 程序存储器地址…

【内网穿透】Linux服务使用宝塔面板搭建网站,并内网穿透实现公网远程访问

文章目录 前言1. 环境安装2. 安装cpolar内网穿透3. 内网穿透4. 固定http地址5. 配置二级子域名6. 创建一个测试页面 转载自cpolar极点云文章:Linux使用宝塔面板搭建网站,并内网穿透实现公网访问 前言 宝塔面板作为简单好用的服务器运维管理面板&#xf…

第七章 商品详情三

流程: 1、用户在订单服务(192.168.232.101)下单后,订单服务以生产者身份往rabbitmq(192.168.232.104)推送消息,下单后将减库存信息推送到rabbitmq 2、数据worker(192.168.232.100&…

造船码头行车/电动葫芦限位器无线应用

一、应用背景 近年来,我国造船业在高技术船舶研发和建造方面持续取得新突破,据统计截止到2022年,我国造船业完工量、新接订单量、手持订单量三大指标国际市场份额均保持世界前列。连续13年位居全球居首。随着船舶制造的综合能力不断提高&…

【算法与数据结构】459、LeetCode重复的子字符串

文章目录 一、题目二、解法2.1 暴力破解法2.2 KMP算法2.3 Sunday算法2.4 官方查找算法 三、完整代码 所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 2.1 暴力破解法 思路分析:子串多次循环才能构成整个…

【回溯算法part03】| 39.组合总和、40.组合总和||、131.分割回文串

目录 🎈LeetCode39. 组合总和 🎈LeetCode40.组合总和|| 🎈LeetCode131.分割回文串 🎈LeetCode39. 组合总和 链接:39.组合总和 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 …

nuxt3 fullpage.js踩坑, fullpage.js 全屏滚动

nuxt3 fullpage.js踩坑, fullpage.js 全屏滚动, fullpage is underfind 我用的是 nuxt 3.6.1 1.引入 fullpage.js(3.0.1), 下载地址 github链接,下载后放到assets文件下 app: {head: {script: [{ src: /assets/fullpage.js, type: "text/javascript…