假设性文档嵌入 HyDE:大模型 + 对比学习,从关键词相似度搜索到语义搜索

假设性文档嵌入 HyDE:大模型 + 对比学习,从关键词相似度搜索到语义搜索

    • 提出背景
    • 流程图
    • 解法拆解
      • 类比
        • 1. 单一文档嵌入空间的搜索
        • 2. 指令跟随型语言模型(InstructLM)的引入
        • 3. 生成文档的嵌入编码

 


提出背景

论文:https://arxiv.org/pdf/2212.10496

代码:https://github.com/texttron/hyde

HyDE 特别适合,当需要捕获广泛的语义内容并减少对关键词直接依赖时。

比如医学一个概念有很多术语,比如用户搜索感冒,数据库是风热流感,这俩的相似度很低,相似度匹配解决不了,只能语义匹配。

相似度搜索工作原理

  • 相似度搜索依赖于直接比较查询词与数据库中文档的关键词的匹配度。
  • 使用如TF-IDF(词频-逆文档频率)或余弦相似度等算法来评估查询与每个文档的相似度。
  • 最终的输出是根据相似度分数排序的文档列表,分数最高的文档最相关。

应用场景

  • 医生输入查询:“膝关节炎治疗方法”。
  • 检索系统在医学文档数据库中查找包含“膝关节炎”和“治疗方法”这些关键词的文档。
  • 返回的结果直接反映了关键词的出现频率和文档中的分布情况。

HyDE工作原理

  • HyDE首先通过一个生成性语言模型根据输入的查询“膝关节炎治疗方法”生成一个内容丰富的、假设性的答案或文档,这个文档详细描述了可能的治疗方法,如药物治疗、物理治疗、手术选项等,即使这样的文档在实际数据库中并不存在。
  • 然后,这个生成的假设文档被转换成嵌入向量,使用对比编码器进行编码。
  • 系统使用这个向量与数据库中文档的向量进行相似度比较,寻找与假设文档内容相似的实际文档。

应用场景

  • 通过假设性文档生成和后续的向量比较,HyDE能够捕捉查询的深层意图和复杂内容,不仅限于关键词匹配。
  • 这使得即使医生的查询用词非常专业或非常通俗,系统也能理解并返回最相关的、专业的医疗建议和研究成果。

相似度搜索比作使用地图找到特定地址,而HyDE则像是先绘制一个详尽的旅行指南,然后再在地图上寻找与之最匹配的路径。

相似度搜索直接依赖于现有的、明确的标记和路径,而HyDE通过创造性地解释和拓展查询内容,提供更深层次的匹配和理解。

通过这种方式,HyDE不仅提高了检索的相关性和准确性,还能处理更复杂和多样化的查询,特别适用于需要高度解释性和语义理解的领域,如医疗、法律和科研文献检索。

流程图

在这里插入图片描述
这张图是对Hypothetical Document Embeddings (HyDE) 模型的说明。

这个模型通过以下步骤来处理和检索信息:

  1. 输入指令和查询:HyDE接收一个查询指令,例如“写一个段落来回答这个问题”。

    这个查询可以涵盖各种主题,如图中示例所示,包括“智齿拔除需要多长时间”,“COVID-19大流行如何影响心理健康?”,以及“인간은 언제 피를 사용했나요?”(人类何时开始使用血液?)。

  2. 生成文档:根据查询指令,一个基于GPT的语言模型生成一个假设的文档。

    这个文档不是真实的,但它旨在模拟相关文档的内容。

    例如,对于智齿拔除的查询,生成的文档可能会说“通常需要30分钟到两小时来拔除智齿”。

  3. 文档编码与检索:生成的文档被送入一个对比学习的编码器(如图中的Contriever),该编码器将文档转换成嵌入向量。

    然后,这个向量被用来在语料库中查找最相似的真实文档。

  4. 返回结果:模型根据生成的文档与真实文档之间的语义相似性返回查询结果。

    例如,关于智齿拔除的查询可能返回一些解释智齿拔除过程的真实文档。

这个模型的特点是它不直接计算查询与文档之间的相似度,而是通过生成文档和编码这两个步骤间接地处理查询,使得系统能够以零样本的方式工作,即不依赖于具体的相关性标签进行训练。

这使得HyDE模型能够适应多种语言和任务,即使在没有明确训练数据的情况下也能进行有效的文档检索。

解法拆解

目的:解决零样本密集检索的问题,这是因为在没有相关性判断或评分的情况下,传统的密集检索模型难以学习查询和文档的嵌入表示。

解法:HyDE模型设计

  1. 子解法1:单一文档嵌入空间的搜索

    • 特征:只需学习文档之间的相似性,无需处理查询的嵌入。
    • 原因:这通过使用无监督的对比学习来实现,可以简化学习过程,因为它不依赖于外部的相关性标签。

     
    例如,通过Izacard等人的研究(2021),已经证明无监督对比学习在没有明确监督的情况下有效地学习文档特征。

  2. 子解法2:指令跟随型语言模型(InstructLM)的引入

    • 特征:通过生成“假设文档”来间接捕获查询的相关性。

    • 原因:InstructLM能根据给定的指令生成内容,这种方法将查询相关性的建模负担从传统的表示学习转移到了更容易泛化的自然语言生成模型上。

       
      这使得模型即使在缺乏明确相关性数据的情况下也能有效工作。

    例如,如果指令是“写一个回答问题的段落”,InstructLM生成的文档虽然不是真实的,但能够反映出与查询相关的内容模式。

  3. 子解法3:生成文档的嵌入编码

    • 特征:通过文档编码器将生成的“假设文档”转化为嵌入向量,再进行相似性搜索。

    • 原因:使用文档编码器f作为损失压缩器,可以过滤掉生成文档中的冗余细节,只保留与查询相关的核心内容,从而实现高效的文档检索。

       
      这种方法利用了文档之间的相似性嵌入,进一步将假设向量与实际语料库中的真实文档对齐。

逻辑链:这些子解法形成一个线性逻辑链,每个步骤都是为了解决零样本密集检索中遇到的具体问题。

首先通过无监督学习建立文档嵌入,然后利用指令跟随模型生成与查询相关的假设文档,最后通过文档编码器压缩和过滤信息,执行有效的检索。

这个过程通过结合无监督学习和自然语言生成技术,创新性地解决了无法直接从标注数据学习的难题。

 

类比

想象一下你正在组装一套复杂的家具,但你没有明确的说明书,只有一些基本的工具和一些不标记的零件。

这就是传统密集检索系统在没有相关性标签时面临的挑战:它们需要准确地匹配查询和文档,但缺乏直接指导他们如何完成任务的明确指示。

HyDE模型的设计就像是给你一个能够生成使用说明的智能工具,同时也提供了检测哪些工具和零件最适合当前步骤的能力。

1. 单一文档嵌入空间的搜索

类比:这就像使用一个高级的金属探测器在沙滩上寻找金属物体。

探测器不需要知道每个物体具体是什么,只需要识别出哪些地方有金属物体。

在HyDE模型中,这个过程相当于用对比学习探测文档库中的文档,识别它们之间的相似性,而不是直接寻找与特定查询完全匹配的文档。

2. 指令跟随型语言模型(InstructLM)的引入

类比:想象你有一个能够根据你描述的需要自动生成建议方案的智能助手。

比如你说:“我需要一个可以放杂志的小桌子。”

即使你没有直接说明要用木头制作,智能助手也能生成一个包括材料和设计的建议方案。

在HyDE中,InstructLM正是这样一个智能助手,它能根据查询生成一个假设性的“方案”(即文档),捕捉查询的核心需求。

3. 生成文档的嵌入编码

类比:这就像把一份详细的设计图纸转换成一个更简洁的部件清单。

在建造时,你不需要再次查看复杂的图纸,只需根据这个清单挑选正确的材料和工具即可。

HyDE模型中的编码器就是这样一个工具,它将生成的文档转换为核心特征的集合(即向量),使得检索系统能够快速有效地找到与这些特征匹配的真实文档。

通过这种方式,HyDE模型有效地解决了传统密集检索在无标注数据情况下的局限,通过创新的方法优化了信息检索过程,使其更加智能和适应性强。

这种模型不仅适用于学术和科研领域,也可以广泛应用于医疗、法律、商业等信息密集型行业,提高检索的准确性和效率。

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

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

相关文章

python怎么样将一段程序无效掉

1、python中可以用注释屏蔽一段语句,具体方法如下,首先打开一段python的示例程序: 2、然后单行注释的方法是在语句前面加上#,程序运行后添加注释的地方的语句会被自动跳过,这里可以看到将打印变量a的语句添加注释就没有…

【实验室精选】PFA反应瓶带鼓泡球 高效气体鼓泡 化学分析优选

PFA反应瓶带鼓泡球是一种特殊设计的实验室容器,它集成了鼓泡球和PFA(全氟烷氧基)材料的反应瓶,用于气体的鼓泡和液体的混合。以下是它的一些特点和用途: 特点: 鼓泡球设计:鼓泡球周围布满小孔&…

界面材料知识

界面材料是用于填充芯片和散热器之间的空隙,将低导热系数的空气挤出,换成较高导热系数的材料,以提高芯片散热能力。参考下图 图片来源网上 热阻是衡量界面材料性能最终的参数,其中与热阻有关的有: 1、导热系数&#x…

从零开始学习SLAM(三)

旋转向量 #include <Eigen/Geometry> #include <Eigen/Core>AngleAxisd 类有几种构造函数&#xff0c;其中最常用的是&#xff1a; Eigen::AngleAxisd(const Scalar& angle, const Axis& axis);angle 是旋转的角度&#xff0c;通常以弧度表示。axis 是旋…

element-ui el-select选择器组件下拉框增加自定义按钮

element-ui el-select选择器组件下拉框增加自定义按钮 先看效果 原理&#xff1a;在el-select下添加禁用的el-option&#xff0c;将其value绑定为undefined&#xff0c;然后覆盖el-option禁用状态下的默认样式即可 示例代码如下&#xff1a; <template><div class…

【 VIPKID-注册安全分析报告】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞 …

基于Istio的多网关运行时:配置、部署和应用

1. 引言 Istio是一个开源的服务网格&#xff0c;主要应用于简化微服务架构中的服务间通信、提供强大的监控能力以及加强服务的安全管理。通过利用Sidecar模式部署的Envoy代理&#xff0c;Istio能够在几乎无需修改服务代码的情况下&#xff0c;实现服务发现、负载均衡、加密通信…

WRF学习——使用CMIP6数据驱动WRF/基于ncl与vdo的CMIP6数据处理

动力降尺度 国际耦合模式比较计划&#xff08;CMIP&#xff09;为研究不同情景下的气候变化提供了大量的模拟数据&#xff0c;而在实际研究中&#xff0c;全球气候模式输出的数据空间分辨率往往较低&#xff08;>100Km&#xff0c;缺乏区域气候特征&#xff0c;为了更好地研…

【pytorch14】感知机

单层感知机模型 对于单层的感知机&#xff0c;它的激活函数是一个sigmoid 对于符号的定义做一个规范化&#xff0c;输入层每一层进行一个编号 输入是第0层&#xff0c;上标0表示属于输入层&#xff0c;下标0到n表示一共有n个节点(这里严格来说应该是0~n-1&#xff0c;为了书写…

一站式广告监测新体验,Xinstall助你广告投放更精准

在这个移动互联网飞速发展的时代&#xff0c;App推广与运营成为了每个开发者与广告主关注的焦点。然而&#xff0c;面对琳琅满目的广告平台和复杂的投放环境&#xff0c;如何精准评估广告效果、优化投放策略&#xff0c;成为了摆在面前的一道难题。今天&#xff0c;我们就来聊聊…

Jemeter--关联接口压测

Jemeter–独立不变参接口压测 Jemeter–独立变参接口压测 Jemeter–关联接口压测 案例分析 比如&#xff1a;有个波次复核接口很慢&#xff0c;优化后需要压测。但是波次复核接口数据是由另外两个接口&#xff08;配单详情、内盒信息&#xff09;的数据组合而来&#xff0c;而…

fastadmin最新版导出数据时 表格中会有 html标签的解决办法

fastadmin 自带的导出方法&#xff0c; 是一个纯前端的导出&#xff0c; 没有请求后台的接口 当我们使用导出功能时&#xff0c; 有些数据&#xff0c; 我们在设计的时候&#xff0c;配置的是 枚举类型的 但是当我们导出数据的时候&#xff0c; 居然导出的数据中带有 html 的…

k8s-第十节-Ingress

Ingress 介绍 Ingress 为外部访问集群提供了一个 统一 入口&#xff0c;避免了对外暴露集群端口&#xff1b;功能类似 Nginx&#xff0c;可以根据域名、路径把请求转发到不同的 Service。可以配置 https 跟 LoadBalancer 有什么区别&#xff1f; LoadBalancer 需要对外暴露…

【12321骚扰电话举报受理中心-短信验证安全分析报告】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞…

交流负载箱的主要功能有哪些?

交流负载箱可以模拟各种实际用电设备的功率、电流、电压等参数&#xff0c;使得电源系统在运行过程中能够承受实际负载的考验&#xff0c;确保电源系统的稳定运行。通过交流负载箱对电源设备进行测试&#xff0c;可以检测出电源设备在过载、短路等异常情况下的保护功能是否正常…

Linux和mysql中的基础知识

cpu读取的指令大部分在内存中&#xff08;不考虑缓存&#xff09; 任何程序在运行之前都的加入到内存。 eip->pc指针&#xff0c;指明当前指令在什么位置。 代码大概率是从上往下执行的&#xff0c;基于这样的基本理论。既可以将一部分指令加载到CPU对应的缓存中&#xf…

【CSAPP】-datalab实验

实验原理与内容 本实验每位学生拿到一个datalab-handout.tar文件。学生可以通过U盘、网盘、虚拟机共享文件等方式将其导入到Unbuntu实验环境中&#xff0c;选择合适位置存放。然后在Ubuntu环境下解压。解压后&#xff0c;根据文件中的叙述和要求更改bits.c文件。本次实验的主要…

【全网最全】2024年APMCM第十四届亚太地区大学生数学建模竞赛(中文赛项)完整思路解析+代码+论文

我是Tina表姐&#xff0c;毕业于中国人民大学&#xff0c;对数学建模的热爱让我在这一领域深耕多年。我的建模思路已经帮助了百余位学习者和参赛者在数学建模的道路上取得了显著的进步和成就。现在&#xff0c;我将这份宝贵的经验和知识凝练成一份全面的解题思路与代码论文集合…

云计算【第一阶段(26)】Linux网络设置

一、查看网络配置 1.查看网络接口信息ifconfig 查看所有活动的网络接口信息 2.ifconfig命令 查看指定网络接口信息 ifconfig 网络接口 &#xff08;1&#xff09;第一行&#xff1a;以太网卡的名字 ens33其中en代表以太网卡&#xff0c; centos6的是eth0&#xff0c; e…

中国算力网络市场发展分析

中国算力网络市场发展现状 算力涵盖计算、内存、存储等全方位能力&#xff0c;广泛分布于网络边缘、云计算中心、联网设备及转发节点。随着数字化技术革新&#xff0c;算力与网络正深度融合&#xff0c;推动“算网一体化”的演进。这一新型基础设施日渐凸显其重要性&#xff0c…