RAG:混合检索

【AIGC】AI如何匹配RAG知识库:混合检索 混合检索技术通过结合关键词检索和语义检索的优势,实现了多路召回,从而提高了检索的准确性和全面性。掌握上面我们提到的混合检索,不仅你可以根据自己的实际情况去对多种检索方式的权重进行加权,还可以根据自己的实际情况去调整对应的召回策略,对我们自建RAG检索有着极大帮助,希望本文能对你有启示。 阅读详情

RAG:混合检索

RAG 系统中使用纯向量检索在语义方面很强大,但面对需要精确匹配的场景时依旧有不少问题。

词法精确性的丢失(Loss of Lexical Precision)

双编码器模型将所有 token 的表示聚合为一个固定向量。这种池化操作赋予了模型语义泛化能力,但泛化的代价是精确词法标识被抹掉了。

当查询包含精确标识符,模型结构对词法信号的系统性剪除,池化在聚合语义的同时,不可逆地丢弃了 token 级的精确信息。

相关性评分的不可归因性(Non-attributability of Relevance Scores)

向量检索以余弦相似度为相关性分数,它能反映向量在高维空间中的夹角,却无法像 BM25 那样将相关性归因到具体的词项匹配,无法回答“文档因匹配了查询中的哪个词而被判定为相关”。

在需要审计追踪和合规验证的场景中,这种缺乏词项级归因路径的评分机制也无法通过调整阈值或引入重排序来解决。

向量空间的静默漂移(Silent Embedding Drift)

嵌入模型迭代、知识库更新以及领域语言的变化,都会改变向量空间的结构。这种漂移通常表现为相关文档排名的缓慢下滑,很难察觉。而且当漂移累积到影响下游生成质量时,修复成本极高。

相似不等于相关性

BM25

BM25在错误码、产品型号、领域术语等对词法精确性在召回结果中要求严格匹配精确字符串的场景几乎是目前RAG的必选项。

BM25 运行在倒排索引之上,进行精确 token 匹配,要么命中,要么不命中,不存在向量语义意义上的“接近”或“相似”。

  • • 确定性:相同查询在相同索引版本上产生相同结果,不依赖模型权重、随机种子或嵌入空间几何。当检索结果异常时,BM25 路径的行为可以被复现。
  • • 评分可追溯性:每个 BM25 匹配结果都可以分解为:哪些词命中了哪些文档字段,各词的 IDF 权重与词频贡献分别是多少。
  • • 词法精确匹配:BM25 基于倒排索引的精确 token 匹配对缩写、产品代码、错误标识符、函数名等词法敏感的标识符处理准确,不受语义模糊化影响。

检索策略

虽然混合检索比看上去哪哪合适,但是实际场景检索策略的选择由语料特征、查询分布和系统约束共同决定。

纯向量检索

  • • 语料以自然语言叙述为主,领域术语、缩写和精确标识符密度低
  • • 用户查询以概念性问题为主
  • • 系统对可解释性无硬性要求
  • • 错误答案的业务代价低
  • • 处于快速验证阶段,需控制工程复杂度

比如内容推荐、开放域知识问答通常满足这些条件。

混合检索

  • • 语料包含受控词汇(术语)密集的技术文档、法律合同、医疗记录或金融报告,依赖精确术语表达精确含义
  • • 用户查询类型混合,同时包含语义性问题和精确标识符查找
  • • 系统对准确性有硬性要求,错误答案会产生真实的业务或法律代价
  • • 需要审计追踪,系统必须能够说明检索决策的依据

混合检索的架构

融合策略

混合检索并行运行 BM25 词法检索和稠密向量检索,产生两个独立排序列表,再通过融合算法合并为单一排序结果。两种主要融合策略在工程取舍上存在实质性差异。

倒数排名融合(RRF) 将每个候选文档在各排序列表中的位次转化为分数:

其中 为约定常数(通常取 60), 为文档 在某一检索列表中的排名。Elasticsearch 8.x、OpenSearch、Weaviate、Qdrant 等主流引原生支持。

RRF 的优势在于其对评分校准误差的高度鲁棒性。BM25 分数、余弦相似度乃至不同嵌入模型输出的相似度分布,在绝对数值上往往不可直接比较的。

RRF 通过在排名空间而非分数空间中进行融合,规避了跨检索器的分数校准难题。

RRF 的局限在于没了评分幅度信息。相似度差异显著的文档,一旦处于同一排名位置,对 RRF 的贡献完全相同。

凸组合 保留评分幅度,通过线性加权融合两种分数:

其中 直接控制词法检索(BM25)的贡献权重, 越大则词法匹配越占主导。在积累少量高质量标注查询-相关性对后,调优单一参数 能够在域内和域外评估上稳定超越 RRF。归一化方法(min-max 或 z-score)是二阶问题,线性归一化方法之间的差异不显著。

检索流程的外部化

OpenSearch 和 Elasticsearch 原生支持在单一请求内同时运行 BM25 和向量检索并合并结果。

内置实现的问题在于评分器将两种信号混合为单一分数,两个模式各自的贡献不可分离观测。

内置实现将归一化、权重和重排序逻辑锁定在搜索引擎内部,业务规则必须适配搜索引擎的 DSL,无法在应用代码中改进。

将 BM25 检索和向量检索外部化为独立步骤,在应用层实现融合,相对好处是:

  • • 每个模式的评分和命中情况可以独立观测
  • • 融合逻辑、权重调整和业务规则在常规代码中管理,不受引擎内部架构约束
  • • 支持自定义 RRF 权重、查询意图感知路由和多阶段检索链

但是复杂性就提高了。

所以对于无严格审计要求、处于快速验证的场景,这些一站式打包处理的方式反而是最佳选择。对于需要精细控制检索行为、有合规要求的企业场景,可能需要BM25外化,或者平台是否提供相关API。

一种检索流水线


结语

混合检索是两种检索机制的互补,而非简单叠加。

BM25 提供词法精确性和评分可追溯性,向量检索提供语义,外部化融合提供对两者相对贡献的精细控制。三者共同解决了纯向量检索在词法精确性和可审计性上的局限。

学AI大模型的正确顺序,千万不要搞错了

🤔2026年AI风口已来!各行各业的AI渗透肉眼可见,超多公司要么转型做AI相关产品,要么高薪挖AI技术人才,机遇直接摆在眼前!

有往AI方向发展,或者本身有后端编程基础的朋友,直接冲AI大模型应用开发转岗超合适!

就算暂时不打算转岗,了解大模型、RAG、Prompt、Agent这些热门概念,能上手做简单项目,也绝对是求职加分王🔋

在这里插入图片描述

📝给大家整理了超全最新的AI大模型应用开发学习清单和资料,手把手帮你快速入门!👇👇

学习路线:

✅大模型基础认知—大模型核心原理、发展历程、主流模型(GPT、文心一言等)特点解析
✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑
✅开发基础能力—Python进阶、API接口调用、大模型开发框架(LangChain等)实操
✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用
✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代
✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经

以上6大模块,看似清晰好上手,实则每个部分都有扎实的核心内容需要吃透!

我把大模型的学习全流程已经整理📚好了!抓住AI时代风口,轻松解锁职业新可能,希望大家都能把握机遇,实现薪资/职业跃迁~

这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费】

在这里插入图片描述

RAG优化知识库检索(4):混合检索技术 混合检索技术在RAG(检索增强生成)系统中的应用显著提升了检索效果。本文探讨了语义检索与关键词检索的优缺点,指出两者在语义理解和精确匹配方面的互补性。通过结合BM25与向量检索,混合检索系统能够更全面地捕捉文档的相关性。文章详细介绍了并行检索、级联检索、稀疏-密集混合表示等多种结合方式,并探讨了权重调整策略,如线性组合、动态权重调整和排序融合算法。此外,稀疏-密集混合检索架构的设计和实现方案也被深入分析,展示了如何通过结合不同检索方法的优势,提升RAG系统的检索质量和效率。 阅读详情

相关推荐

混合检索:RAG系统的核心技术突破

混合检索是顶尖RAG系统的核心技术,通过结合稀疏检索(如BM25)和密集检索的优势,提升检索精度和鲁棒性。稀疏检索擅长精确匹配关键词,而密集检索侧重语义理解,两者互补可显著提高召回率。采用倒数排名融合(RRF)算法和分层检索策略进行结果优化,在医疗、企业知识库等场景表现突出。尽管存在计算开销和元数据依赖等挑战,混合检索通过协同多模态扩展和元数据增强,持续推动RAG系统演进。

kcarly的专栏 906

RAG三大检索策略深度解析:稀疏检索、密集检索和混合检索

RAG检索策略:精准检索决定生成质量 本文深入分析了RAG系统中检索环节的关键作用,指出检索精准度而非生成能力才是RAG性能的决定因素。文章对比了三种主流检索策略:稀疏检索(BM25)擅长精确匹配但语义理解弱,密集检索(向量嵌入)强于语义分析但精确匹配不足,混合检索(RRF融合)则平衡两者优势。性能测试显示混合检索F1分数可达0.85+,显著优于单一策略。不同业务场景需差异化选择:技术文档适用稀疏为主(70%),客服知识库推荐密集为主(70%),电商搜索适合标准混合(50%)。

2401_85725028的博客 852

AI 如何匹配 RAG 知识库:混合检索的力量

在应用知识图谱时,可以通过语义检索和向量检索等方法,快速找到与查询相关的实体和关系,为决策支持、智能推荐等任务提供依据。它的核心思想是在生成文本的过程中,从外部知识库中检索相关的信息,然后将这些信息融入到生成的文本中,以提高生成内容的准确性和可靠性。例如,在撰写新闻报道、故事创作等任务中,系统可以从知识库中检索相关的事件、人物、背景信息等,然后将这些信息融入到生成的文本中,提高文本的质量和可信度。混合检索可以通过多种方法的组合,扩大检索的范围,确保尽可能多地找到与查询相关的知识。

ya766829的博客 860

RAG 混合检索实战:稠密向量 + 关键词,各取所长

向量检索和关键词检索各有所长,混合检索取长补短。RRF 算法无需关心原始得分的量纲,简单有效。向量权重和 BM25 权重需要根据场景调优。代码和专有名词多的场景,BM25 权重要调高。实现上保持两路检索独立,融合层灵活可配置。

好代码自己会说话,烂代码才需要注释来圆谎 9845

RAG高级检索实战:切块、混合检索与重排序

大语言模型的知识受限于训练数据,在私有文档或最新信息面前常出现“幻觉”。RAG(检索增强生成)通过外挂知识库为大模型补充上下文,成为知识库问答、企业文档助手和智能客服的核心技术方案。然而实际项目中,答案质量往往不取决于生成模型,而取决于检索环节:文本切块是否保留语义边界、向量检索能否召回语义相近内容、混合检索如何兼顾精确词匹配、重排序如何精筛候选片段。本文从RAG基础链路出发,系统讲解文本切块策略、向量数据库选型、BM25与向量检索的融合,以及基于重排序的精排优化,并给出可运行代码与参数调优建议,帮助开发者

weixin_33139275的博客 319

AUTOSAR RTE配置实战:从ECU分区到Task映射的完整指南

本文提供了一份AUTOSAR RTE配置的完整实战指南。从创建ECU分区、定义OS任务,到实现Runnable Entity与Task的精确映射,详细解析了每一步的操作要点与常见陷阱。文章结合配置工具界面,旨在帮助开发者高效完成RTE配置,确保系统实时性与数据一致性,是掌握AUTOSAR核心开发流程的实用参考。

weixin_29228203的博客 486

RAG 混合检索:关键词 + 语义

《AI 知识卡片》第 11 期 · 一条抓字面,一条抓意思,再算最终排名。混合检索让关键词和语义的盲区正好互补,合并两份榜单的诀窍是别看分数、只看排名。

qq_52732369的博客 548

波束成形(Beamforming)详解

波束成形(Beamforming)是一种智能天线技术,通过调整天线阵列的相位和幅度,使信号在特定方向上增强,同时抑制干扰,提高通信性能。根据实现方式,可分为固定波束成形和自适应波束成形;按计算方式,则包括模拟、数字和混合波束成形。该技术在 5G/6G、毫米波通信、MIMO、车联网、卫星通信 等领域广泛应用。其关键技术包括 相控阵、预编码、波束扫描和波束跟踪。未来,结合 AI、超大规模 MIMO(XL-MIMO)和太赫兹通信,波束成形将在无线通信、智能交通、环境感知等领域发挥核心作用。

斯黄人民的博客 2393

【收藏必备】RAG检索模块全解析:从向量检索到混合检索的实战指南

文章详解RAG系统中的检索模块,涵盖Query向量化、召回策略(向量、关键词、混合检索)、重排和结果过滤等关键步骤。强调检索优化需平衡召回率与精确率、降低延迟、处理专有词等挑战,提供实战案例和面试框架。核心观点是:检索优化是工程平衡的艺术,好的RAG系统依靠稳定的检索和准确的知识,而非玄学Prompt。

Android23333的博客 793

搞定安卓11+抓包难题:用Kitsune Mask、magic_overlayfs和LSPosed三件套绕过SSL Pinning(保姆级教程)

本文详细解析了安卓11+系统中抓包面临的核心挑战,包括SSL Pinning和Root检测机制,并提供了使用Kitsune Mask、magic_overlayfs和LSPosed三件套的完整解决方案。通过动态分区技术解析和工具链配置,帮助开发者绕过安全限制,实现高效抓包分析。

weixin_42665255的博客 444

基于STM32的超声波流量计设计

本项目基于STM32微控制器设计了一种超声波流量计,采用时间差法测量液体或气体的流速,计算流量并通过显示屏实时显示,同时支持远程数据传输。本设计通过STM32微控制器实现了基于时间差法的超声波流量计,集成了超声波信号采集、流量计算、状态显示和远程通信功能。本系统需要实现超声波信号的实时采集与处理,计算流速和流量,并将数据通过OLED显示和无线模块上传。系统需具备高精度的时间测量能力和良好的抗干扰能力。通过计算超声波在顺流和逆流方向上的传播时间差,结合管道直径与流体特性,计算流速并进一步计算流量。

stm32d1219的博客 2351

混合检索 RAG:向量像雷达,关键词像门牌号

混合检索 RAG 把向量和关键词的优势结合起来。查询拆分、RRF 融合、专有名词保护、按查询类型评测,是落地关键。向量像雷达,关键词像门牌号。找资料时,两个都要带上。

2401_87746054的博客 5815

CMake入门教程【基础篇】在Windows、Linux上安装CMake

CMake如何下载与安装

小鱼酱的博客 2727

RAG专栏:混合检索

混合检索,又称融合检索 / 多路召回,是指在检索过程中同时采用多种检索方式,并将各类检索结果进行融合,从而得到最终的检索结果。混合检索的优势在于能够充分利用不同检索方式的优点,弥补各自的不足,从而提升检索的准确性和效率。

m0_37145844的博客 823

基于YOLOv26的护栏损坏检测系统原理讲解

本文介绍了一种基于YOLOv26深度学习的护栏损坏检测系统。该系统通过车载摄像头或固定监控采集道路护栏图像,利用改进的YOLOv26算法实现高效准确的损坏检测。系统采用分层架构设计,包含数据采集、检测处理、分析评估和应用服务四个层次,能够自动识别变形、断裂、缺失等五种常见损坏类型,并评估损坏严重程度。相比传统人工检测方法,该系统大幅提高了检测效率和准确性,降低了人工成本和安全风险。关键技术包括多尺度特征融合、注意力机制和自适应非极大值抑制等创新设计,使系统在复杂道路环境下仍能保持稳定的检测性能。

一键难忘的博客 329

STM32 USB键盘实现指南

在STM32上实现键盘功能可以通过USB HID(人机接口设备)协议来实现,使STM32设备能被计算机识别为标准键盘。通过上述步骤,您可以在STM32上实现一个功能完整的USB键盘。关键点包括:正确配置USB HID设备实现键盘矩阵扫描处理按键事件并生成HID报告优化按键响应和消抖处理添加额外功能如宏键和LED反馈这个实现可以作为基础,进一步扩展为游戏键盘、宏键盘或特殊输入设备。

suny8的专栏 975

【收藏必备】RAG检索优化实践:混合检索与重排序解决检索失效问题

本文分析了RAG应用中检索失效的两大问题:专有名词匹配失败和语义漂移。提出解决方案为混合检索(结合向量检索和BM25关键词检索)与重排序技术。混合检索通过RRF算法融合两种检索结果提高召回率,重排序使用Cross-Encoder模型对候选文档精确评分提升精度。这种"粗排+精排"的分层架构在不同领域均有重要应用价值,是构建高精度RAG系统的基石。

2401_85325726的博客 1177

YOLO26原创自研: 魔改Bottleneck,具备多尺度和特征通道融合的结构

魔改Bottleneck,具备多尺度和特征通道融合的结构,该模型在检测准确性方面都取得了良好的效果,尤其在缺陷检测方向。

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 318

让AI不再答非所问,RAG三大检索策略深度解析:稀疏检索、密集检索和混合检索,从入门到精通

RAG系统的质量关键在于检索精准度而非生成能力。文章详细解析了三大检索策略:稀疏检索(BM25)擅长精确匹配但难理解语义,密集检索(向量嵌入)能捕捉语义但精确匹配不足,混合检索通过RRF融合两者优势。不同场景需选择不同策略:技术文档适合"稀疏为主",客服知识库偏向密集检索,电商搜索需平衡两者。未来GraphRAG和多模态检索将拓展检索边界,而自适应策略是提升检索精准度的关键方向。

Gaga246的博客 774

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

RAG 检索方式全解析:关键词、向量、混合检索与 Rerank

很多人做 RAG,第一反应是:“我已经把文档向量化了,为什么还是搜不准?问题通常不在大模型,而在检索。RAG 的核心不是把所有文档都塞给模型,而是在用户问题进来后,从知识库里找到最能支撑答案的证据。证据找错了,模型再强也只能“认真胡说”。这一章重点讲清楚几件事:关键词检索和向量检索到底有什么区别?为什么生产环境很少只用纯向量检索?混合检索为什么要用 RRF?Rerank 又解决什么问题?

闵浮龙的博客 377

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

2.2 RAG 体系:RAG、Chunk 分块、Rerank 重排、混合检索

本文介绍了RAG(检索增强生成)技术的核心流程与应用价值。RAG通过为LLM外挂知识库,使其能够基于检索到的文档片段生成更准确的答案,有效解决了LLM在专业领域知识不足的问题。文章重点阐述了RAG的三个关键环节:文档分块(Chunk)策略、混合检索方法以及结果重排(Rerank)技术,并对比了不同实现方案的优缺点。文中还提供了Python代码示例,展示了典型RAG流程的实现方式。作者强调,合理配置这些组件能显著提升问答系统的准确性,但同时也指出RAG并非适用于所有场景,需根据具体需求选择合适的技术方案。

慢慢 321

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Spring AI RAG 进阶:对话式 RAG、RAG 评估、混合检索实战

本文摘要: 《Spring AI RAG 进阶》探讨了如何优化基础 RAG 系统以应对真实业务场景中的挑战。文章聚焦三个核心问题:1) 通过 ChatMemory 实现对话式 RAG,支持多轮追问和上下文理解;2) 介绍 RAG 评估方法,量化系统效果;3) 提出混合检索方案,结合向量和关键词检索提升准确性。文中提供了完整的代码实现,包括对话记忆配置、RAG 服务和控制器,解决了文档更新同步、精确匹配等常见问题。该方案使 AI 助手能理解上下文指代,保持连贯对话,适用于企业知识库等场景。

kongzhonghu的专栏 331

【2026必看】企业RAG技术全景图:从混合检索到Agentic RAG的实战指南

文章详解2024-2025年企业级RAG技术演进,混合检索已成生产标准,召回率提升5-10pp;GraphRAG通过知识图谱实现关系推理,LazyGraphRAG降低99.9%索引成本;Agentic RAG实现自主决策但90%项目生产失败,需谨慎应用。提供了框架选型指南和金融、法律、医疗等行业落地案例,强调企业应优先采用混合检索作为基础设施,根据场景决定技术引入,并建立评估体系贯穿始终。

2401_85325726的博客 1276

Spring AI RAG 进阶:混合检索实战

本文介绍了企业级RAG(检索增强生成)管线的进阶实现方案。文章首先分析了入门篇RAG在真实企业场景中的局限性,包括文档格式单一、分块策略简单、检索方式不足等问题。随后详细阐述了企业级RAG管线的完整架构,包含离线文档摄入管线和在线查询管线两大部分,核心组件涉及多格式文档读取、智能分块、向量存储、关键词索引和混合检索等关键技术。重点讲解了多格式ETL处理流程,展示了Spring AI内置的DocumentReader实现方案,包括PDF、Markdown和文本文件的读取方法,以及元数据注入等增强功能。该方案显

qq_39805994的博客 767

RAG 实战 03:检索增强:多路检索、混合检索、重排序

本文探讨了解决检索结果质量参差不齐的方法,提出三阶段解决方案:多路检索(结合向量、关键词和标题检索)、混合排序和重排序。向量检索擅长语义匹配但不精于精确查询,关键词检索则相反。通过Python代码示例展示了三种检索方式的实现(向量检索、BM25关键词检索和标题检索),形成"多路召回→混合排序→重排序"的优化流程,最终提升Top-K结果的相关性。核心思路是利用不同检索方法的互补性,综合优化排序效果。

2601_96417294的博客 421
上一篇: 深入拆解 Claude 的 DOCX Skill:一个 LLM 是如何学会操作 Word 文档的
下一篇: 多智能体(Multi-Agent)5种模式到底要怎么选呢?
Python_金钱豹
博客等级 码龄5年 1万+粉丝 2841原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值