RAG:给大模型外挂一个知识库
HUTAO667
AI RAG 向量数据库
说白了,RAG 就是给大模型外挂了一套知识库。每次提问时先去知识库里翻翻资料,然后让大模型根据找到的信息回答,这样就不会瞎编了。
我在做 AI 项目的时候遇到一个问题:大模型对我自己的笔记、项目文档、学习资料一无所知。这些东西在训练时根本没包含进去,问它就只能瞎编。
后来发现,RAG 就是为了解决这个问题。
大模型的盲点
大模型都是用公开数据训练的,而且训练都是有时间节点的。这就导致两个问题:
- 最新的东西不知道:不过现在有联网搜索,这个问题基本解决了
- 私人的东西不知道:我的笔记、项目文档、学习资料、自己写的代码,这些大模型根本没见过
RAG 就相当于给大模型外挂了一套知识库。每次提问时,先去知识库里翻翻资料,然后让大模型根据找到的信息回答。这样就不会瞎编了。
RAG 怎么工作的
第一步:准备知识库
首先要把文档处理一下:
- 清洗:去掉没用的东西
- 切块:把文档切成小块,可以按词切、按句子切、按段落切
- 转成数字:用语义模型把文字转成向量(就是一堆数字)
这里有个坑:准备知识库用的哪个语义模型,查询时就必须用哪个。要不然就对不上了,就好比拿着中国地图在美国找回家的路。
为什么要转成数字?因为 AI 只认识数字。
第二步:用户提问
当你问问题时,RAG 会做这几件事:
- 把问题也转成数字:用同样的语义模型
- 去知识库里找相关的内容:找那些数字相似的文档块
- 把找到的内容和问题一起给 AI:让 AI 根据这些资料回答
整个流程就是:你提问 → 转成数字 → 知识库里找 → 把资料给 AI → AI 回答
我的实践
我在项目里实现过 RAG,主要用来处理项目文档和代码库的查询。
通过实践,我发现 RAG 最大的挑战是找得准不准。
知识库太长的话,人为可以处理。而且如果知识库不是特别特别大,长度应该不是问题。
关键是怎么让它找得更准:
- 切块的策略要合理
- 语义模型要选好
- 找相似内容的算法要优化
我的理解
RAG 的核心就是让大模型不再”闭门造车”。
以前大模型只能靠训练时学到的知识回答问题,遇到没见过的就只能瞎编。
RAG 给大模型加了一个”查资料”的能力:先去知识库里找相关信息,然后根据找到的信息回答。这样就能处理私人知识,也能减少瞎编。
说白了,RAG 就是把”记忆”和”推理”分开了:
- 知识库负责”记忆”(存东西)
- 大模型负责”推理”(理解和回答)
这种分工让 AI 更实用,也更靠谱。
参考资料:
- Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks - RAG 原始论文
- LangChain RAG 教程 - 中文实践教程
- 一文读懂:大模型 RAG 含高级方法 - 博客园详细解析
- RAG 最佳实践 - Pinecone 官方指南