当前位置: 首页 > news >正文

大模型Rag - 检索增强技术

一、Query-to-Doc:通过伪文档扩展语义

基本思想: 给定一个用户问题,让大语言模型(LLM)直接生成对该问题的一个回答,将该回答作为**“伪文档”**,再与原始问题拼接后送入检索系统。

目的: 利用 LLM 所生成的伪答案来填补原问题的语义空白,提升语义匹配程度,从而提高检索准确性。

实现方式:

  • 提示词设计(Prompting)简单明了,例如:“请写一段话来回答以下问题:{用户问题}”
  • 将生成的伪文档与问题拼接后一起用于查询(适用于稀疏检索,例如 BM25)

原始问题:

  • “爱因斯坦的相对论主要讲了什么?”

生成的伪文档:

  • “相对论是由爱因斯坦提出的物理理论,包括狭义相对论和广义相对论,核心观点是时间和空间不是绝对的,而是相对的。狭义相对论讨论的是高速运动中的物体行为,而广义相对论则描述了引力如何影响时空结构。”

将问题与伪文档拼接后用于搜索,提升了检索命中文档的语义相关性。

优点:

  • 简单、有效
  • 增强语义信息,提升召回率

二、HyDE:向量空间中的假设文档增强

HyDE(Hypothetical Document Embeddings) 的核心与 Query-to-Doc 相似,但它不是使用文本直接检索,而是将伪文档进行向量化,再与原始问题 embedding 一起平均后参与向量检索。

关键流程:

  • 使用 LLM 生成一个或多个假设文档
  • 对这些文档与原始问题进行向量化(embedding)
  • 将多个向量做均值处理,得到一个增强后的查询向量
  • 使用该向量进行相似度检索(适用于稠密检索)

示例

  • 原始问题: 牛顿第一定律是什么?
  • 生成假设文档:使用 LLM 对该问题生成一个简要的假设答案,作为“伪文档”
 “牛顿第一定律指出,如果一个物体不受外力作用,它将保持静止状态或匀速直线运动状态。”
  • 向量化处理
    • 对原始 Query 向量化,得到:embedding_query
    • 对 Hypothetical Document 向量化,得到:embedding_hypo
  • 向量融合: 对两个 embedding 向量进行平均处理:
enhanced_embedding = (embedding_query + embedding_hypo) / 2
  • 稠密检索:使用 enhanced_embedding 在向量数据库中进行相似度检索,从而找到与“牛顿第一定律”最相关的真实文档。

优点:

  • 更适合 dense retrieval 场景
  • 提高嵌入向量与目标文档的接近度
  • 保留更多语义细节,提升召回效果

三、子问题查询(Sub-question Querying):拆解复杂问题

当用户的问题过于复杂、包含多个子意图时,直接检索容易遗漏部分语义,影响答案质量。子问题查询策略是将一个复杂问题拆分为多个子问题,分别进行检索,再综合多个子结果来回答原始问题。

流程概述:

  • 使用 LLM 将复杂问题拆解为多个更明确的子问题
  • 每个子问题独立检索上下文
  • 使用检索结果分别生成答案,再进行融合(或基于合并后的上下文统一回答)

关键点:

  • 拆解能力依赖于 LLM 的 prompt 设计
  • 子问题的生成需尽可能涵盖原始语义

四、查询改写(Query Rewriting):多角度重写以增强表达

针对语义模糊、表达不清或关键信息缺失的问题,可以使用多样化的查询改写策略。利用 LLM 生成多个语义等价但表达方式不同的查询,有助于扩大语义覆盖范围。

策略要点:

  • 从多个角度(时间、空间、对象、语义风格)改写用户原始查询
  • 每个改写后的问题单独检索上下文
  • 汇总所有上下文信息用于最终回答
  • 典型提示词设计:

示例:

  • 原始问题: 秦始皇统一六国用了多久?
  • 问题改写:请从5种不同角度重写下列问题,以提升其检索准确性
    • 时间视角:“秦始皇从哪一年开始统一六国,到哪一年完成统一?”
    • 对象聚焦视角:“秦国用了多少年打败其他六国完成统一?”
    • 事件进程视角:“秦始皇统一六国的整个战争过程持续了多少年?”
    • 历史背景视角:“战国时期秦始皇统一六国的时间跨度是多少?”
    • 语义风格变换:“从发动战争到六国归一,秦始皇经历了多长时间?”

五、Take a Step Back:从细节中抽象问题

当用户的问题包含大量无关或干扰性细节时,可能掩盖核心意图,从而降低检索效果。Take a Step Back 技术通过将问题抽象化、通用化来消除干扰,从而提升对关键信息的关注。

流程:

  • 利用 LLM 将问题抽象化,例如:“将下列问题转述为一个更通用、抽象的问题”

  • 使用该抽象问题进行检索

  • 最终以更全局视角提供回答

示例:

  • 原始问题:“2007年到2008年间,XX球员效力于哪个球队?”

  • 抽象后:“XX球员一共效力过哪些球队?”

相关文章:

  • Certimate本地化自动化 SSL/TLS 证书管理解决方案
  • Windows Server 2022 常见问题解答
  • 【Element Plus】解决移动设备使用 el-menu 和 el-sub-menu 时,子菜单需要点击两次才会隐藏的问题
  • 【期末复习-考试】软件质量测试与保考试题库(选择题+填空题)
  • KBEngine 源代码分析(一):pyscript 目录文件介绍
  • SQL技术终极指南:从内核原理到超大规模应用
  • 【学习准备】算法和开发知识大纲
  • Tailwind CSS 实战:基于 Kooboo 构建个人博客页面
  • 反向代理和DDNS的区别是什么?
  • Windows 同步技术-计时器队列和内存屏障
  • Super-Vlan和MUX-Vlan的原理、配置、区别
  • 02.Python代码Pandas - Series全系列分享(使用.特点.说明.取值.函数)
  • RK3588芯片NPU的使用:Windows11 Docker中编译YOLOv8-Pose C Demo并在开发板运行实践
  • 07-IDEA企业开发工具-开发入门程序
  • Linux:41线程控制lesson29
  • 集结号海螺捕鱼服务器调度与房间分配机制详解:六
  • springboot-基于Web企业短信息发送系统(源码+lw+部署文档+讲解),源码可白嫖!
  • C语言中小写字母转大写字母
  • 批量处理多个 Word 文档:插入和修改页眉页脚,添加页码的方法
  • Java大师成长计划之第1天:Java编程基础入门
  • 中国工程院院士、歼八Ⅱ飞机系统工程副总设计师温俊峰逝世
  • 商标乱象调查:“120W”充电器功率仅12W,120W为商标名
  • 佩斯科夫:俄美总统会晤正在筹备中,未设定停火最后期限
  • 上海市闵行区原二级巡视员琚汉铮接受纪律审查和监察调查
  • 上海市统计局:经济运行开局平稳,高质量发展扎实推进
  • 最高法:学校未及时发现并制止校园暴力行为,需承担侵权责任