第36课 · 本地 RAG 知识库
本节要点
- 本地 RAG 知识库解决的核心问题:文档在手上,但「找得到、问得准」很难
- 典型场景:合规性检查、内控审计、内控搭建、合同/法规整理、制度冲突检查
- RAG 五步流程:解析文档 → 智能切片 → Embedding 向量化 → 存入向量库 → 语义检索 + Rerank
- 这个 skill 的优势:轻量本地、语义检索、零模型安装、三种用法、可离线、为制度文档优化
- 实战:把公司制度文件夹一键入库,再用内控要求检索制度、生成控制矩阵
- 延伸:FastGPT / RagFlow 是更重的开源方案,适合有服务器资源的同学
1. 为什么需要本地 RAG 知识库
在前面第17课,我们讲过用 IMA 知识库给 AI 提供可靠信息源。但 IMA 有两个明显限制:
- 调用频率受限:问题太多或频率太快,就会被限制访问。
- 依赖网络和服务商:资料存在云端,隐私和自主性都不够。
而财务、审计、内控领域有大量场景,本质上都是「读大量文档,从文档里找内容」:
| 场景 | 传统做法 | 痛点 |
|---|---|---|
| 合规性检查 | 面对几百页制度,人工翻找「消防安全」「数据安全」等条款 | 效率低、容易漏 |
| 内控审计 | 根据关键控制点,从公司制度里找控制要求 | 靠记忆和 Ctrl+F,找不全 |
| 内控搭建 | 参考同行业制度写内控手册 | 不知道资料库里有没有可参考的模板 |
| 合同/法规整理 | 客户丢来一摞 PDF、Word,按主题整理 | 传统方式根本做不到 |
| 制度冲突检查 | 检查公司制度与集团制度、外部法规是否冲突 | 需要同时读很多文件 |
这些场景的核心矛盾是:文档在手上,但怎么才能快速找到相应内容,并且问得准?
本地 RAG 知识库就是来解决这个问题的。
2. RAG 是什么?五步流程讲清楚
RAG 是 Retrieval-Augmented Generation(检索增强生成)的缩写。用人话说就是:
先把你的文档变成 AI 能查的「知识库」,AI 回答时先从知识库里找相关段落,再基于这些段落组织答案。
这样做有两个好处:
- 回答有据可查:AI 不是凭空编,而是从真实文档里找依据。
- 幻觉大幅降低:因为参考材料是你提供的,可控、可追溯。
本地 RAG 知识库的整个流程可以分成五步:
📄 解析文档 → ✂️ 智能切片 → 🔢 Embedding 向量化 → 🗄️ 存入向量库 → 🔍 语义检索 + Rerank第一步:解析文档
把 PDF、Word(.doc/.docx)、Markdown 等文件读成纯文本。如果是扫描件,会自动走 MinerU 做 OCR。
第二步:智能切片
制度类文档通常很长,不能整篇塞给 AI。需要切成一小段一小段(chunk),每段保留完整语义。
中文制度的切片策略是三级递归:
- 按「第 X 章」分章节
- 按双换行分大段落
- 按单换行分条款/段落
每个切片目标约 800 字,上下文之间有一定重叠(overlap),避免切断了语义。
第三步:Embedding 向量化
把每个文本切片通过一个「嵌入模型」转化成一个高维向量。你可以把向量理解成:给这段文本打了一串语义标签。
这个 skill 默认用硅基流动的 BAAI/bge-m3:
- 免费额度足够日常使用
- 1024 维向量
- 支持 8192 tokens
第四步:存入向量库
把所有向量存到本地数据库里(这个 skill 用 ChromaDB)。每个项目对应一个独立的 collection,项目之间完全隔离。
第五步:语义检索 + Rerank
你提问时,问题也会被向量化,然后在向量库里找最相似的切片。
但向量相似度只是第一步。这个 skill 还会做一个 Rerank(重排序):
- 先用向量检索召回 top-20 个候选
- 再用 reranker 模型精排,选出 top-10 最相关的
- 把这些候选段落交给 LLM,让它做深度语义匹配,精确定位条款
关键点:RAG 不是关键词匹配,而是语义匹配。你问「灭火器怎么管」,它能找到「消防器材配置与管理」相关条款。
3. 这个 skill 的六大优点
做这个 skill 之前,我看过很多开源项目,比如 FastGPT、RagFlow。它们功能很强,但都很「重」:需要部署、资源消耗大、配置复杂。
所以我做了一个更轻量的版本,专门服务审计/财务/内控这类「制度检索」场景。
优点一:轻量本地
- 数据存在自己电脑
- 多项目隔离,不同客户/项目互不影响
- 不需要服务器、不需要 Docker
优点二:语义检索
- 不用背条款编号
- 用自然语言提问
- AI 从候选文本里做深度语义匹配,定位「管理同一件事的条款」
优点三:零模型安装
- 默认用硅基流动免费 API
- 不需要 GPU
- 不需要下载大模型
优点四:三种用法
- CLI:
local-rag create、local-rag ingest、local-rag search - Python API:直接写脚本调用
- MCP Server:让任何支持 MCP 的 AI 都能调用
优点五:可完全离线
内网环境可以切换 Ollama 本地 embedding + reranker:
qwen3-embedding:4b等模型约 2.5GB- 不需要联网
- 适合对数据敏感的场景
群友推荐的轻量本地 embedding
如果电脑配置一般,也可以先用 Qwen3-Embedding-0.6B(约 1GB 显存即可带动),本地切片向量化基本够用。群友兔王嘟嘟实测 RTX 4070 Ti SUPER 上 4B 也没问题,0.6B 对老设备更友好。
优点六:为制度文档优化
- 中文制度专用切片策略
- 按「章 → 大段 → 条款」递归切
- 保留上下文,避免切断语义
4. 实战一:把公司制度一键向量化
4.1 准备工作
- 安装
local-ragskill(课程网盘会提供) - 注册硅基流动账号,获取 API Key:https://cloud.siliconflow.cn
- 把公司制度文件放到一个文件夹里,比如
公司制度/
4.2 第一次运行
在 OpenCode 里打开项目文件夹,然后告诉 AI:
帮我将公司制度文件夹里的所有制度进行向量化,存储到向量数据库中。AI 会调用 local-rag skill,自动完成:
- 检测是否有
SILICONFLOW_API_KEY - 创建项目(默认可能会叫
company-policies) - 解析 PDF / Word / Markdown 文件
- 智能切片
- 调用 embedding API 把切片向量化
- 存入本地 ChromaDB
如果第一次没有配置 API Key,skill 会提示你设置。你可以这样设置:
# macOS / Linux
export SILICONFLOW_API_KEY="sk-xxx"或者在 local-rag setup 里交互式配置。
4.3 等待入库完成
制度文件多的话,可能需要几分钟。视频里 232 个文件大约不到两分钟就处理完了,生成了 1164 个切片。
如果有失败的文件,可以让 AI 重试:
帮我把失败的文件重新切片入库。失败通常是因为文件损坏、格式特殊或扫描件 OCR 不稳定,重试一般都能解决。
5. 实战二:用向量库做内控检查
入库之后,就可以开始检索了。
5.1 最简单的检索
帮我搜索一下关于现金管理的制度。AI 会调用 local-rag search,返回最相关的制度条款。你可以让它把结果展示出来,或者进一步分析。
5.2 生成内部控制活动矩阵
更高级的用法是:把「内控要求」和「制度库」结合,让 AI 自动写控制矩阵。
假设你的项目文件夹里有一个 Excel,记录了「资金循环」和「采购循环」的内部控制要求。你可以这样给 AI 下指令:
我的项目文件夹里有一个资金和采购的内部控制要求文件。
请你根据这个要求,从我们刚才建立的向量数据库里检索最相关的内部控制制度,
然后帮我输出一个内部控制活动矩阵,包含:
1. 原控制活动要求的字段
2. 控制活动描述
3. 控制频率
4. 相关责任人
5. 评价内控制度设计是否存在缺陷
6. 如果存在缺陷,写明缺陷原因AI 会:
- 读取内控要求 Excel
- 针对每一条控制要求,去向量库检索相关制度
- 基于检索到的制度原文,写控制活动描述
- 判断是否存在设计缺陷
- 输出成 Excel 或 Markdown
5.3 控制活动描述写得不理想怎么办
第一次生成的控制活动描述,可能跟你事务所平时的写法不一样。这时候不要灰心,给它一个示例:
控制活动描述请按照下面这个示例的写法来:
"财务部门每月编制资金计划,经财务负责人审核后报总经理审批,审批通过后方可执行。"或者更直接:
请学习我以前写的控制活动描述底稿,按照我的风格重新写。你把以前的底稿文件路径给它,AI 会模仿你的风格输出。
5.4 如何避免 AI 幻觉
AI 做内控评价时,最怕它凭空编造制度依据。一个有效做法是:要求 AI 在输出里增加「引用制度原文」列。
因为我担心 AI 幻觉,请在输出中增加两列:
1. 引用的相关制度文件名称
2. 制度原文
这样我可以人工复核。AI 会把每一条结论对应的制度依据都列出来,你人工检查时会轻松很多。
视频中第一次输出时「引用制度原文」列是空的,直接告诉 AI 这个问题,它重新生成后就能把原文填上。这就是跟 AI 协作的常态:先跑通,再补要求,再精调。
5.5 一条 workflow 串起整个内控项目
其实 local-rag 只是整个内控工作流的一个底层能力。把它串起来,你可以做到:
- 根据控制矩阵要求检索制度 → 生成控制活动描述
- 根据控制活动生成访谈提纲 → 拿着提纲去访谈
- 把访谈录音转文字 → AI 整理访谈记录
- 根据制度要求生成资料清单 → 跟客户要资料
- 拿到资料后让 AI 做穿行测试/控制测试 → 结果写入内控检查表
整个内控项目,理论上都可以用 AI 辅助完成。而 local-rag 是其中最底层、最重要的一个能力:让 AI 能读你的制度库。
6. 更多应用场景
6.1 合规性评价
把外部法规(比如消防安全法规、数据安全法规)入库,让 AI 逐条比对公司的内控制度,找出不符的地方。
6.2 制度冲突检查
把集团制度和子公司制度都入库,让 AI 检查两者之间是否有冲突。
6.3 合同/法规整理
把一摞合同或法规文件入库,按主题提问,让 AI 自动聚类、提取关键条款。
6.4 跨项目复用
一个项目做完后,向量库可以保留。下次遇到类似项目,直接基于已有知识库提问,不需要重新入库。
7. 延伸阅读:更重的开源方案
如果你有兴趣深入研究,或者团队有服务器资源,可以看看这两个更完善的开源 RAG 项目:
FastGPT
特点:功能全面,支持可视化工作流、多模型接入、权限管理,适合团队部署。但需要一定的服务器资源和部署能力。
RagFlow
特点:强调「深度文档理解」,在 RAG 流程中对复杂表格、版式、语义解析做了很多优化,适合对文档解析质量要求高的场景。同样对硬件和部署有一定要求。
这两个方案都很强,但都比本课的 local-rag 要重。本课 skill 的定位是:个人电脑即可运行、零模型安装、5 分钟上手,先把 RAG 用起来。
8. 常见问题与避坑
Q1:一定要配置硅基流动 API Key 吗?
默认模式下是的。skill 会先检查 SILICONFLOW_API_KEY 环境变量,没有会提示你配置。硅基流动的 embedding 和 reranker 都是免费的,注册即可使用。
如果你不想联网,可以切换到 Ollama 本地模式,但需要自己拉取 embedding 模型。
Q2:向量数据存在哪里?
默认存在本地跨平台数据目录:
- macOS:
~/Library/Application Support/local-rag/ - Windows:
%LOCALAPPDATA%\local-rag\ - Linux:
~/.local/share/local-rag/
可以通过环境变量 RAG_DATA_DIR 或配置文件修改。
Q3:一个项目能放多少文件?
取决于你的磁盘空间。ChromaDB 是本地持久化数据库,embedding 向量本身不大。视频里 232 个文件切了 1164 个切片,几分钟就处理完了。
Q4:搜索效果不好的原因有哪些?
- 切片太大或太小:可以通过
chunk-test命令测试不同切片效果。 - 问题太笼统:越具体的问题,检索越准。
- 没用 rerank:建议加
--rerank,top-20 召回 + top-10 精排效果更好。 - 原文质量差:扫描件 OCR 错误或 Word 转换乱码,会影响向量化质量。
Q5:和 IMA 知识库有什么区别?
| 维度 | IMA 知识库 | 本地 RAG 知识库 |
|---|---|---|
| 部署难度 | 零部署 | 安装 skill 即可 |
| 数据位置 | 腾讯云端 | 本地电脑 |
| 调用限制 | 频率过高会受限 | 本地调用,无限制 |
| 适用场景 | 快速查共享知识库 | 制度检索、内控项目、隐私文档 |
| 检索方式 | 语义检索 | 语义检索 + Rerank |
两者不冲突,可以互补:IMA 查公开/共享知识,local-rag 查自己的项目资料。
9. 核心收获
TIP
本地 RAG 知识库的本质,是让你的 AI 能够「读懂」并「检索」你自己的文档。它不是什么高深技术,而是把「人翻文档找条款」这件事自动化。
对于财务、审计、内控人来说,最常见的需求就是「读大量文档、从文档里找内容」。一旦你把这个需求抽象出来,就会发现很多工作都能用 RAG 重做一遍:合规检查、内控审计、制度比对、合同整理……
这个 skill 的优势在于轻量:数据本地、免费模型、5 分钟上手。先用起来,再根据自己的项目不断优化。
10. 课后作业
- 找一个你手边的制度文件夹(至少 10 个文件),用 local-rag 创建一个项目并入库。
- 尝试问 3-5 个业务问题,观察 AI 能不能找到相关条款。
- 如果你做内控项目,试着把你的控制矩阵要求和制度库结合,生成一份控制活动矩阵。
- 思考:你现在的哪些工作,本质上是在「读文档找内容」?这些工作能不能用 RAG 重做?
更多课程:课程大纲