RAG 检索环节:关键词检索完整落地讲解(附可运行 TF-IDF 代码)
我们先来搞清楚检索增强生成RAG到底是什么。 前面我们已经确定要搭建一套企业政策智能助手系统员工提出问题后系统会检索相关资料、扩充提示词再生成对应答复。接下来我们拆解这套流程每一步的工作原理先从检索环节讲起。 检索顾名思义就是调取匹配的相关资料。 但具体该怎么实现企业内部可能有成百上千份政策文件如何精准定位到和用户问题语境匹配的文档又该在文件里检索哪些内容 第一步我们会从用户的提问中提取若干关键词。举个例子假设用户问居家办公报销相关问题系统就会提取出报销、居家办公这两个核心关键词。 最简单的一种办法是使用 GREP 命令在所有文件中检索 “报销” 或 “居家办公” 这类特定词汇寄希望于能匹配到包含关键词的文档。 另一种方式如果文件存储在数据库中我们可以编写数据库查询语句进行检索。 但以上两种方式只会返回完全精准匹配关键词的内容很难每次都拿到准确有效的信息。 这种依靠精确文字匹配检索文档的方式叫做关键词检索也是各大搜索引擎广泛采用的基础技术。简单解释它的逻辑程序遍历全部文档提取关键词并根据关键词出现频次对文档排序。 举个简化例子系统统计所有文档里 “报销” 一词的出现次数第一份文档出现 3 次中间两份无相关内容第三份同样出现 3 次随后再统计 “居家办公”发现该词仅出现在居家办公配置说明文档中。将两组统计结果结合对比就能筛选出两个关键词总出现次数最多的文档以此判定这份文档和用户问题最相关。 以上只是极度简化的原理说明。关键词检索本身是一套完整技术体系背后包含大量复杂运算业界也衍生出多种成熟落地算法其中最主流的两种就是 TF-IDF 与 BM25。 我们不深入拆解底层运算逻辑只演示实操使用方式分别看下两种算法的运行效果。 首先从开源 Python 库 scikit-learn 中导入 TF 向量转换器。你可以把 scikit-learn 库理解成一个算法工具箱内置封装好的成熟算法无需从零手写实现。 接着我们定义三份样例文档这里先用简短句子演示实际项目中可以读取本地完整文件内容 然后实例化 TF-IDF 分析器 调用 transform 方法计算各个词汇对应的权重分值 最后将计算结果打印输出到控制台。RAG 检索环节关键词检索完整落地讲解附可运行 TF-IDF 代码1. 回顾核心定位整套企业政策智能助手的 RAG 流程 员工提问 → 检索企业政策文档 → 拼接检索到的文档 用户问题构造 Prompt → 大模型生成合规回答 检索是整套系统的信息来源检索不准后面大模型回答必然失真。 关键词检索是检索层最基础、低成本的第一阶段方案核心只匹配字面文字不理解语义。2. 关键词检索核心缺陷字面不匹配但语义相关的文档完全丢失 例用户问「远程办公补贴」文档写「居家办公报销标准」无重合关键词检索不到无法区分词语重要程度纯靠词频容易产生噪音同义词、近义词、简称、书面口语无法互通匹配。主流关键词检索算法TF-IDF、BM25TF-IDF词频 - 逆文档频率衡量单个词在当前文档重要性BM25在 TF-IDF 基础上优化增加文档长度、关键词位置加权企业知识库检索效果普遍优于原生 TF-IDF。3. Python TF-IDF 完整可运行演示代码基于 scikit-learn场景说明3 份企业政策文档用户查询居家办公报销标准python运行# 导入TF-IDF工具包 from sklearn.feature_extraction.text import TfidfVectorizer import pandas as pd # 1. 模拟企业政策文档库 docs [ 公司居家办公报销标准每月网络补贴100元凭缴费凭证每月15号提交申请, 外勤出差交通补贴、餐饮补贴报销规则出差需提前线上报备审批, 员工考勤管理制度上下班打卡、请假流程、加班调休相关规定 ] # 用户查询问句 query 居家办公报销多少钱 # 2. 初始化TF-IDF转换器 tfidf TfidfVectorizer() # 对全部文档计算TF-IDF权重矩阵 doc_tfidf tfidf.fit_transform(docs) # 把用户问句转为相同向量空间 query_tfidf tfidf.transform([query]) # 3. 计算查询与每篇文档的相似度余弦相似度 from sklearn.metrics.pairwise import cosine_similarity similarity_scores cosine_similarity(query_tfidf, doc_tfidf)[0] # 4. 整理输出结果 result pd.DataFrame({ 文档内容: docs, 匹配相似度得分: similarity_scores }).sort_values(匹配相似度得分, ascendingFalse) print( TF-IDF 检索匹配结果 ) print(result) print(\n最匹配文档, result.iloc[0][文档内容])代码运行结果解读工具会自动拆分文本词汇居家、办公、报销、补贴、出差、考勤等TF词频某词在单篇文档出现越多分值越高IDF逆文档频率词在全部文档里越稀有权重越高“居家办公” 只出现在第一篇文档IDF 权重极高“报销” 出现在第一篇、第二篇IDF 权重会被稀释余弦相似度用来衡量用户提问向量和文档向量重合度分数越高代表关键词重合越多。4. TF-IDF 检索的局限企业政策场景痛点纯文字匹配无语义理解 若文档写「远程工作费用补贴」提问「居家办公报销」无重叠关键词相似度趋近 0检索失效长文档干扰大 长篇政策里零星出现一次关键词会被误判为高相关无法处理行业简称、同义替换 文档线上办公补助 | 用户提问居家办公报销 → 完全匹配失败5. 补充BM25 简单对比TF-IDF 仅计算词权重 余弦相似度 BM25 额外优化两点惩罚过长文档避免长篇无关文档因偶然出现关键词排名靠前关键词多次连续出现会大幅加分更贴合政策文档短句匹配场景 企业知识库落地时一般先用 BM25 做关键词检索兜底再搭配向量语义检索组成混合检索。6. 企业 RAG 检索层进阶思路解决关键词检索短板关键词检索只能作为基础兜底方案完整企业政策助手检索流程通常分层第一层关键词检索BM25/TF-IDF快速召回字面高度匹配文档第二层向量语义检索Embedding 嵌入捕捉同义、近义、不同表述的相关政策重排序层将两层召回的文档统一打分筛选只保留 Top3-Top5 高相关文档送入大模型。

相关新闻

Android EventBus框架详解:原理、使用与优化

Android EventBus框架详解:原理、使用与优化

1. Android EventBus核心概念解析 EventBus是Android开发中广泛使用的发布/订阅事件总线框架,由greenrobot团队开发维护。它通过解耦事件发送方和接收方,极大简化了Android组件间的通信流程。相比传统的接口回调、广播或Handler机制,EventBus…

2026/10/17 14:45:44 阅读更多 →
RAG、提示工程、微调三大方案场景完整梳理与补充总结

RAG、提示工程、微调三大方案场景完整梳理与补充总结

人们常犯的一个误区,就是把检索增强生成(RAG)当成万能解药。 RAG 并不能解决所有问题。归根结底,我们的目标都是让 AI 生成更优质的回答,而实现这个目标有多种不同路径:我们可以优化提示词,也就…

2026/10/17 14:45:47 阅读更多 →
Pale Moon 29浏览器:隐私保护与轻量级架构深度解析

Pale Moon 29浏览器:隐私保护与轻量级架构深度解析

1. Pale Moon 29正式版深度解析:一款为隐私与自由而生的浏览器 作为Firefox的衍生分支,Pale Moon始终保持着对传统浏览器体验的坚守。这次29版本的更新延续了其"Your Browser, Your Way"的核心设计理念,在保持轻量级架构的同时&…

2026/10/17 14:45:59 阅读更多 →

最新新闻

Qt 解析 Gerber RS-274X:从 D 码到 PCB 预览器实战

Qt 解析 Gerber RS-274X:从 D 码到 PCB 预览器实战

简介:这份资源面向从事PCB制造与CAM开发的工程师及Qt C学习者,提供一套完整的Gerber文件解析与转换工具源码,解决将PCB设计数据转化为生产指令的实际问题。包内共381个文件,以147个svg图形资源、90个h头文件与86个cpp源文件为核心…

2026/10/18 23:42:37 阅读更多 →
三层交换机VLAN间路由配置实战:SVI与ip routing全解析

三层交换机VLAN间路由配置实战:SVI与ip routing全解析

做了无数次VLAN划分,发现不同VLAN之间就是不通,这几乎是每个网络初学者都会撞上的墙。以往靠单臂路由解决,但带宽和性能瓶颈明显。这次实验彻底换了个思路,用三层交换机直接实现VLAN间路由,配置下来发现事情比想象中简…

2026/10/18 23:42:37 阅读更多 →
三层交换机实现VLAN间路由配置详解

三层交换机实现VLAN间路由配置详解

做网络实验久了你会发现,真正难的不是某个命令怎么写,而是搞清楚"为什么需要这个命令"。VLAN间路由配置就是典型例子。很多初学者会困惑:VLAN不是已经把广播域隔离了吗,为什么还要路由?VLAN之间明明物理上连…

2026/10/18 23:42:37 阅读更多 →
EZCAD2二次开发核心:MarkEzd.dll与C#激光打标自动化

EZCAD2二次开发核心:MarkEzd.dll与C#激光打标自动化

简介:面向激光打标行业开发者与自动化集成工程师的二次开发资料包,围绕EZCAD激光打标软件展开,包含EZCAD2完整源代码、MarkEzd.dll动态链接库及配套测试工程,可用来深入理解从图形编辑、条码二维码生成、序列号自动递增到振镜控制…

2026/10/18 23:42:37 阅读更多 →
RS-485双向RDM通信实战:从物理层时序到协议帧构造

RS-485双向RDM通信实战:从物理层时序到协议帧构造

简介:本资源是一份面向嵌入式开发工程师与工业通信初学者的RS-485双向RDM通信实践代码包,聚焦解决多设备网络中主从识别、命令交互与可靠数据传输等核心问题,适用于智能照明、舞台设备控制、工业传感器组网等典型RDM应用场景。压缩包为ZIP格式…

2026/10/18 23:42:37 阅读更多 →
Qwen3.5 GGUF构建指南:从源码到可验证量化推理链

Qwen3.5 GGUF构建指南:从源码到可验证量化推理链

简介:本资源是一份面向AI开发者与本地大模型实践者的Qwen3.5系列GGUF模型下载与部署实操指南,聚焦解决模型获取路径混乱、下载速度慢、LM Studio加载报错等高频痛点。压缩包仅6KB,含3个核心文件:index.html为结构化操作文档&#…

2026/10/18 23:41:37 阅读更多 →

日新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 0:55:02 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →