RAG学习笔记 检索优化

news/2026/1/17 4:44:08/文章来源:https://www.cnblogs.com/bianwei1994/p/19423618

检索增强技术进阶学习笔记

核心思想:结合稀疏向量与密集向量,利用关键词精确匹配与语义理解的双重优势,克服单一检索的局限性。

技术原理

  1. 稀疏向量 (Sparse Vectors)

    • 表示:基于词频统计(如TF-IDF, BM25),高维向量,绝大多数元素为零
    • 优点:关键词精确匹配,可解释性强,无需训练
    • 缺点:无法理解语义,存在"词汇鸿沟"
  2. 密集向量 (Dense Vectors)

    • 表示:通过深度学习模型(如BERT)学习到的低维、稠密浮点数向量,捕捉语义
    • 优点:语义理解能力强,能处理同义词、上下文
    • 缺点:可解释性差,需大量数据训练,对未登录词敏感

融合策略

  1. 倒数排序融合 (RRF):不依赖原始得分,仅根据文档在不同检索系统中的排名计算最终得分

    • 公式:RRF_score(d) = Σ(1 / (rank_i(d) + c))
  2. 加权线性组合:将不同系统的得分归一化后,通过权重参数 α 进行线性组合

    • 公式:Hybrid_score = α * Dense_score + (1 - α) * Sparse_score

Milvus实践:通过 BGEM3EmbeddingFunction 同时生成稀疏与密集向量,利用 RRFRanker 或自定义加权策略实现混合检索。

查询构建 (Query Construction)

核心思想:利用LLM将用户的自然语言查询"翻译"成针对特定数据源的结构化查询语言或请求,扩展RAG应用场景。

关键技术

  1. 文本到元数据过滤器 (Self-Query Retriever)

    • 原理:LLM解析用户查询,分离出用于语义搜索的查询字符串和用于精确过滤的元数据过滤器
    • 关键:需通过 AttributeInfo 向LLM清晰定义元数据字段的名称、类型和描述
  2. 文本到Cypher:将自然语言问题转换为图数据库(如Neo4j)的Cypher查询语句,用于查询复杂关系数据

  3. 文本到SQL (Text-to-SQL)

    • 挑战:LLM"幻觉"、对数据库结构理解不足、用户输入模糊
    • 优化策略
      • 提供精确的数据库模式(DDL)
      • 提供少量高质量的"问题-SQL"示例(Q-SQL)
      • 利用RAG构建数据库"知识库",包含表结构、字段描述、复杂示例
      • 实现错误修正与反思循环

简易Text2SQL框架:包含知识库模块(存储DDL、Q-SQL、描述)、SQL生成模块(LLM生成与修复SQL)、代理模块(协调检索、生成、执行流程)。

查询重构与分发 (Query Transformation & Routing)

核心思想:在检索前对原始查询进行预处理(重构),并智能分发到最合适的数据源或处理组件(路由),以提升检索质量。

查询翻译 (Transformation) 技术

  1. 提示工程 (Prompt Engineering):引导LLM将查询改写得更清晰、具体,或直接生成可执行的JSON指令(如排序指令)

  2. 多查询分解 (Multi-query):将复杂问题拆分为多个子问题,分别检索后合并结果,丰富上下文。使用 MultiQueryRetriever

  3. 退步提示 (Step-Back Prompting):引导LLM先从具体问题中抽象出通用原理或核心概念(退步问题),再基于此推理具体答案,提升复杂问题推理能力

  4. 假设性文档嵌入 (HyDE):让LLM根据查询生成一个理想的"假设性答案"文档,用该文档的向量去检索真实文档,将"查询-文档"匹配转化为更易的"文档-文档"匹配

查询路由 (Routing) 技术

  • 应用场景:数据源路由(向量库/SQL库/图数据库)、组件路由(简单检索/复杂Agent)、提示模板路由(数学/代码)
  • 实现方法
    1. 基于LLM的意图识别:设计提示词让LLM直接输出路由标签,结合 RunnableBranch 实现分支逻辑
    2. 嵌入相似性路由:计算用户查询与预设路由描述之间的向量相似度,选择最相似的路由。延迟更低

检索进阶 (Advanced Retrieval)

核心目标:解决基础向量检索的局限性(如最相关文档不在顶端、语义偏差、上下文噪音),构建更精准、鲁棒的RAG系统。

重排序 (Re-ranking):对初步检索结果进行精细排序。

  1. RRF:零样本方法,融合多路召回结果的排名信息
  2. RankLLM / LLM-based Reranker:直接让LLM根据查询和候选文档判断相关性并排序,精度高但成本高
  3. Cross-Encoder:将查询和文档拼接后输入模型,直接输出相关性分数。精度最高,但需N次模型推理,延迟高
  4. ColBERT:采用"后期交互"机制,独立编码查询和文档的每个Token,通过计算Token间最大相似度(MaxSim)并聚合得到总分,在精度和效率间取得平衡

压缩 (Compression):提炼检索结果,去除无关信息。

  • LangChain的 ContextualCompressionRetriever:包装基础检索器,使用压缩器(如 LLMChainExtractor 提取相关句、LLMChainFilter 过滤整文档、EmbeddingsFilter 基于向量相似度过滤)进行后处理
  • 自定义管道:通过继承 BaseDocumentCompressor 实现自定义功能(如ColBERT重排器),并可利用 DocumentCompressorPipeline 组合多个处理器(如先重排后压缩)

校正 (Correcting):引入"检索-评估-行动"循环,提升系统鲁棒性。

  • 校正RAG (C-RAG):先评估检索到的文档质量(正确/不正确/模糊),再根据评估结果采取不同行动(知识精炼或触发外部知识搜索),减少幻觉。可用 langgraph 构建此类复杂流程。

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

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

相关文章

【毕业设计】基于SpringBoot的汽车配件仓储管理系统设计与实现(源码+文档+远程调试,全bao定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

降AI率不靠硬改,前五工具更省事

又到毕业季,毕业论文除了查重外,真的别忘记查ai率。 今天就告诉大家高重复率以及高ai率应该如何快速降低!实测全网产品,无广!! 如果这篇整理能帮你少走点弯路,那就值了。 1、嘎嘎降AI 官网&…

Kingbase-KEMCC配置集群监控纳管ES以及外部备份使用对象存储

之前有幸测试过的KEMCC, 有了新版本,有幸拿到内测版本,进行提前体验测试。 这里就不过多的介绍KEMCC和安装方式了,可以看这篇文章: Kingbase-金仓企业级统一管控平台KEMCC安装初体验 关于KEMCC非云初始化以及实例管…

Java计算机毕设之基于SpringBoot的汽车配件仓储管理系统设计与实现配件信息、供应商、库存、采购、销售(完整前后端代码+说明文档+LW,调试定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

读书笔记7-12.4

第七章主要讲的是项目启动前必须搞定的那些“大问题”,就像盖房子前得先打好地基一样。作者认为,如果这些问题没想清楚,项目从一开始就注定要失败。这一章的核心思想是,在动手写代码之前,得先搞清楚用户到底要什么…

【基于LLaMA-Factory通义千问】大模型微调全流程技术解析

文章目录 目录一、前置认知:核心基础信息与硬件适配1.1 核心基础属性1.2 核心技术-硬件-数据关联 二、核心环节一:4万条领域数据预处理与格式转换2.1 数据预处理2.2 格式转换 三、核心环节二:LoRA参数调优(32B模型)与2…

Java毕设选题推荐:基于SpringBoot+Vue的汽车配件仓储管理系统管理系统设计基于SpringBoot的汽车配件仓储管理系统设计与实现【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

UDP-N-叠氮乙酰葡萄糖胺二钠盐:糖蛋白化学生物学研究的关键工具

UDP-N-2-[(叠氮基乙酰基)氨基]-2-脱氧-D-葡萄糖二钠盐(UDP-N-azidoacetylglucosamine disodium salt)是一类经过化学生物学改造的糖核苷酸。作为代谢糖工程的核心试剂,它使得研究人员能够对细胞内的糖基化过程进行特异性标记与调控&#xff0…

从Java全栈开发到云原生实践:一次真实面试的深度记录

从Java全栈开发到云原生实践:一次真实面试的深度记录 面试官与应聘者的初次接触 面试官:你好,我是负责技术面试的工程师,今天主要想了解一下你的技术背景和项目经验。可以先简单介绍一下你自己吗? 应聘者:好…

AI原生语义搜索:从理论到实践的全面解析

AI原生语义搜索:从理论到实践的全面解析 关键词:AI原生语义搜索、自然语言处理(NLP)、向量检索(Vector Search)、预训练模型、语义理解、Embedding、多模态搜索 摘要:本文从“用户想找‘苹果’却…

P5607 [Ynoi2013] 无力回天 NOI2017 题解

一道很好的题,如果做法不当(像我)可能需要一些卡常。 Part 1. bitset 20tps 插入?并集? \(1e5\) ?显然可以用 \(bitset\) 维护:每次修改把第 \(x\) 个 \(bitset\) 中的第 \(y\) 位修改成1 每次查询将 \(x1\) 和…

【计算机毕业设计案例】基于SpringBoot的学校图书管理系统设计与实现图书管理、借阅记录、审核借阅、图书续借、审核续借、确认归还(程序+文档+讲解+定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

AI+SQL生成ER图

AISQL生成ER图:计算机专业作业/毕设高效通关指南 工具地址:https://draw.anqstar.com/template 一、技术背景与问题引入:ER图绘制,为何成为作业/毕设拦路虎? 1.1 计算机专业课程中的ER图刚需场景 对于计算机专业的同…

P5607 [Ynoi2013] 无力回天 NOI2017 题解

一道很好的题,如果做法不当(像我)可能需要一些卡常。 Part 1. bitset 20tps 插入?并集? \(1e5\) ?显然可以用 \(bitset\) 维护:每次修改把第 \(x\) 个 \(bitset\) 中的第 \(y\) 位修改成1 每次查询将 \(x1\) 和…

计算机Java毕设实战-基于SpringBoot的房屋租赁系统的设计与实现基于Springboot的房屋租赁网站的设计与实现【完整源码+LW+部署说明+演示视频,全bao一条龙等】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

CSDN年度技术趋势预测

CSDN技术趋势预测概览CSDN作为国内知名的开发者社区,每年会基于行业动态、用户行为及专家分析发布技术趋势预测。以下是综合多方信息整理的2023年重点关注领域:人工智能与机器学习生成式AI(如ChatGPT、Stable Diffusion)持续爆发&…

官网-城乡居民医疗保险报销政策

官网:2023年宿迁市基本医疗保险待遇政策一览表-宿迁市人民政府 一、居民医保门诊报销政策 (一)普通门诊 就诊机构 起付线(元) 报销比例 待遇范围 单日处方限额 年度限额(元) 乡镇一级医院、村居卫生机构 0 55% 合规药费 乡镇一级医院100元;村居卫生机构30元 300 城区…

去掉手写字上面的表格线

截取手写字的时候,有些人的字与表格重叠了,把表格也截出来了,需要去掉。 方法:右击用画图打开,直接点橡皮擦,擦掉就可以了

读书笔记9-12.18

第九章主要讲的是估算,也就是在项目开始前,对时间、资源、成本等做一个大致的预测。作者认为,估算不是瞎猜,而是一种需要学习和练习的技能。估算能帮你避免意外,比如老板问你“这个功能多久能做完?”,如果你随口…