简介:RAG知识库是让大模型“先检索、后生成”的问答技术方案,可弥补大模型知识时效性不足与私域知识缺失两大短板。本文系统讲解其定义与价值,拆解文档切分、向量化、向量数据库与大模型四大组件,梳理六步搭建流程,并给出切分参数、选型标准与优化建议,帮助读者判断适用场景并完成工程落地。
RAG(Retrieval-Augmented Generation,检索增强生成)知识库,是一种“先检索、后生成”的技术方案:在用户提问之后、大模型作答之前,系统先从预先构建的知识库中检索出与问题相关的内容片段,再将这些片段作为上下文一并交给大模型,由模型基于检索结果组织出最终答案。
可以从三个视角理解这个定义:
“先检索、后生成”这六个字,是RAG区别于直接问答的本质特征。
大模型在知识层面存在两大先天缺陷:
RAG知识库针对上述缺陷提供了一套工程化的解决路径,其核心价值包括:
一个完整的RAG系统由四个组件构成,任何一环的短板都会传导到最终答案质量。
将PDF、Word、Markdown等格式的文档解析为纯文本,并按策略切分为适合检索的段落(chunk)。常见切分策略有三种:
将文本片段转换为高维向量,使语义相近的文本在向量空间中距离更近,从而支持后续的相似度检索。选型时可从四个维度评估:
需要特别注意:入库与查询必须使用同一个嵌入模型,否则两个向量处于不同的语义空间,检索结果会失效。
负责存储“向量 + 原始文本 + 元数据(文件名、页码等)”,并提供高效的相似度检索能力。选型时通用考量包括:可支撑的数据规模、检索性能与延迟、是否支持按元数据过滤、是否支持关键词与向量的混合检索,以及自建部署还是使用云上托管服务。若希望降低自建运维成本,也可以选用百度智能云等云平台提供的托管式向量数据库与模型推理服务。
基于检索到的上下文生成答案。选型考量包括:上下文长度(建议至少8K以上,才能容纳多个chunk的拼接)、推理速度、调用成本,以及是否支持私有化部署。
RAG的运行机制可以拆解为两条链路:
离线建库链路:文档 → 解析为纯文本 → 按策略切分为chunk → 调用嵌入模型转为向量 → 将“向量 + 原文 + 元数据”写入向量数据库。
在线问答链路:用户提问 → 用同一嵌入模型将问题转为向量 → 在向量数据库中执行相似度检索,取Top K个最相似的chunk → 将chunk拼接为上下文 → 连同问题一起交给大模型 → 返回答案及引用来源。
下面用通用伪代码示意整体流程:
# 离线索引(伪代码)for chunk in chunk_documents(raw_docs, size=700, overlap=0.15):vec = embedding_model.encode(chunk.text)vector_db.insert(vector=vec,text=chunk.text,metadata={"file": chunk.source_file, "page": chunk.page})# 在线问答(伪代码)def answer(question, k=5):q_vec = embedding_model.encode(question) # 必须与入库模型一致hits = vector_db.search(q_vec, top_k=k) # Top K 常取 3~10context = "\n\n".join(h["text"] for h in hits)prompt = ("请仅根据以下资料回答问题,资料中没有答案时请明确说明。\n"f"资料:\n{context}\n\n问题:{question}")return llm.generate(prompt), [h["metadata"] for h in hits]
第一步:准备文档。 选10~20份核心文档作为起点,控制范围便于快速验证与调优。确保是可解析的格式(PDF/Word/Markdown),扫描件需要先做OCR转换。
第二步:文档切分。 经验值为:chunk_size控制在512~1024 tokens之间,相邻chunk之间保留10%~20%的重叠。重叠的意义在于防止关键信息恰好落在切分边界而被“腰斩”。
第三步:向量化并存入数据库。 遍历所有chunk,逐个调用嵌入模型转为向量,并将向量、原始文本、元数据(文件名、页码)一并写入向量数据库。元数据是后续溯源与权限过滤的基础。
第四步:实现检索。 用户问题经同一嵌入模型转为向量后,在数据库中执行相似度检索,返回Top K个最相似的chunk(K一般取3~10),并拼接为上下文。
第五步:生成答案。 通过提示词约束模型行为:仅依据资料回答、资料不含答案时明确说明、回答时标注引用来源。
第六步:返回结果。 将答案连同引用的文件与页码一起返回,形成可审计的闭环。
是否需要RAG,可以用以下四条快速判断:
RAG与微调(Fine-tuning):微调通过修改模型参数改变模型能力,适合塑造回答风格、输出格式和领域能力;RAG不改动参数,适合注入频繁更新的事实性知识。知识多、更新快选RAG,行为与风格问题选微调,两者也可叠加使用。
RAG与长上下文大模型:长上下文可以把文档直接塞进提示词,但存在成本高、定位精度有限、难以支撑大规模知识库的问题。RAG用“检索”替代“全文阅读”,以更低的成本实现精准定位,是大规模知识场景的主流做法。
RAG与传统关键词搜索:向量检索基于语义相似度,“退货政策”也能召回“售后服务条款”相关内容;关键词搜索依赖字面匹配,召回面窄。生产系统常用混合检索(关键词+向量)取两者之长。
RAG知识库的本质,是把“无法记住最新知识与私有知识”的大模型,变成一个可以“开卷作答”的企业级问答系统。它由文档切分、向量化模型、向量数据库与大模型四大组件构成,通过离线建库与在线检索两条链路协同工作,并可在六步工程路径中从0到1落地。它的强项是基于文档的知识问答与可溯源输出;实时数据需结合API调用,通用知识则无需RAG。理解这条能力边界,是做好技术选型的第一步。