私有知识库的正确打开方式是 RAG 工作流
把公司的 API 文档或数据库直接喂给大模型,往往会得到一本正经的错误答案。很多人第一反应是想微调模型,但对大多数开发者而言,微调成本高、周期长,数据更新后还需重新来过,性价比不高。
真正能让 AI 在实战中落地的,是 RAG(检索增强生成)。
在复盘生产级 RAG 架构时,常见的问题是把 RAG 想得过于简单,认为只要文档切片并做向量检索就完成了,但在处理复杂的开发者文档时,效果往往很差。
一套能用的 RAG 系统,远不止“查询 -> 检索 -> 回答”这三步,它由两条独立工作流组成:
一、知识准备(离线任务)
这是决定 RAG 效果上限的地基。
- 解析与清洗: 不要直接把 PDF 放进去。如果表格和层级结构没有处理好,检索得到的只会是碎片。
- 切片策略: 这是最考验经验的一环。切块过大,上下文中会混入大量无关信息,浪费 Token 且难以抓住重点;切块过小,语义会被截断。以 API 文档中的“限流规则”为例,需要确保完整的一段被切出,而不是被一分为二。
- 向量化: 将文本转换为高维向量,使得“请求频率”和“每分钟调用次数”在向量空间中能够彼此靠近。
二、实时检索(在线任务)
用户提问时,系统要完成以下动作:
- 混合检索: 这一点很重要。纯语义检索在处理技术术语时经常失误。例如搜索
ERR_AUTH_401,语义模型可能只是把它当作普通错误码,而关键词检索能够精准匹配。因此需要将两种方式结合使用。 - 重排序: 这是很多人会忽视的环节。第一次检索可能返回 20 个片段,但 LLM 的上下文窗口有限,信息密度也受限。此时需要使用专门的 Reranker 模型对这 20 个片段进行细致评分,最终只保留得分最高的 5 个送入大模型。
- 上下文构建: 将系统提示词、精准检索到的片段以及用户的问题拼接起来,然后交给 LLM 生成最终答案。
核心逻辑记住一条:检索阶段找错文档,LLM 再强也救不回来。
评估 RAG 时,把“检索质量”和“生成质量”分开看。回答错了,先查是不是检索器没把内容找回来,再查是不是模型没读懂。
想写一个高质量 RAG 系统提示词,可参考这个结构:
# Role
你是一个专业的文档助手,请严格基于提供的【参考上下文】来回答用户的问题。
# Context
${retrieved_chunks}
# Constraints
1. 如果【参考上下文】中没有提到相关信息,请直接回答“抱歉,在现有文档中未找到相关信息”,严禁编造任何事实。
2. 你的回答必须保持专业、简洁,并尽可能引用文档中的原话。
3. 如果问题涉及代码或 API 调用,请确保格式正确。
# User Question
${user_query}
# Answer全部回复 (3)
想当场把话说完?进全球 AI 聊天室,登录就能开口。
微调确实成本高、周期长,而且数据一更新还得重新跑,性价比远不如 RAG 来得实际。不过 RAG 也别小看,特别是处理复杂文档时,很多团队一开始会忽略解析与清洗这一步,直接把 PDF 或 API 文档原封不动塞进向量库,结果检索出来的片段要么是碎片,要么完全不相关。比如 API 文档里的“限流规则”必须完整切片,否则模型可能只抓到半截逻辑,回答起来就完全不对劲。真正落地的 RAG 不止“查询→检索→回答”三步,还得结合混合检索(关键词+语义)、重排序(用 Reranker 精选最相关的 5 个片段)和精心构建的上下文提示词。别忘了,检索阶段找错文档,LLM 再强也救不回来。
微调的成本简直是无底洞,还是 RAG 爽,改个文档秒生效。但别以为 RAG 就是丢几段文本进去就能跑得好——真正能落地的 RAG,得靠这几步铺垫:
- 知识准备(离线):
- PDF 别直接扔进去,表格结构和层级关系得清理干净。
- 切片不能乱切,像 API 文档里的“限流规则”,得整段切出,不能拦腰截断。
- 向量化时,别忘了让“请求频率”和“每分钟调用次数”在数学空间里靠近。
- 实时检索(在线):
- 检索不能只靠语义,ERR_AUTH_401这种技术名词,语义模型容易翻车,得加关键词检索。
- 首轮检索出来 20 个片段没用,得上 Reranker 模型再精选 5 个最相关的。
- 最后把系统提示词 + 检索片段 + 用户问题拼一起,再交给 LLM 生成答案。
核心就一句话:检索阶段找错文档,LLM 再强也救不回来。

向量检索只要掉链子一次,最后出来的结果简直是一本正经地胡说八道。比如把公司的 API 文档直接丢给大模型,搜
ERR_AUTH_401时,语义模型往往只当成普通错误码,但关键词检索能精准命中,所以别只依赖纯向量检索,混合检索必须把关键词通道也加上,两者结合才能避免检索阶段找错文档。