Ch01: 为什么需要 RAG——当大模型开始”说谎”
Part 1: 导读总纲 后续章节:Ch02: 阅读路线图与前置知识
一、开场:大模型的”自信谎言”
想象一个场景。你打开 ChatGPT,输入一个问题:
“2026年腾讯犀牛鸟开源人才培养计划什么时候开始报名?”
模型秒回:
“2026年腾讯犀牛鸟开源人才培养计划预计于2026年3月15日开放报名,截止日期为4月30日。报名通道位于腾讯开源官网 opensource.tencent.com。”
日期、网址、语气——一切看起来像那么回事。你差点就信了,直到你去官网一查:根本没有”3月15日”这个说法,甚至报名通道的 URL 都不对。模型不是在回答你的问题,它在”编”一个听起来合理的答案。
这种现象有个专业名称:幻觉(Hallucination)。大模型在没有答案的时候不会说”我不知道”,而是用训练数据里学到的语言模式,拼出一段”看起来像正确答案”的文本。更危险的是,它说这些假话的时候表现得和说真话一模一样——没有犹豫、没有不确定、没有引用来源。这就是所谓的”自信谎言”。
为什么会这样?要回答这个问题,我们需要先理解大模型的记忆方式。
1.1 大模型的”记忆”是怎么回事
先用一个日常场景打比方。你小时候背过一首唐诗——”床前明月光,疑是地上霜”。现在有人问你”李白写’床前明月光’的时候在哪个城市?”你可能会说”好像是在扬州”,但你不确定,因为你背的时候老师没讲这个细节。你的大脑里存的不是一个”李白写作地点数据库”,而是”这首诗的文字和节奏模式”。
大模型也一样。GPT、Claude 这类模型在训练阶段读了互联网上数万亿字的文本,把文本中的统计模式压缩成神经网络的参数(权重)。这些参数就是模型的全部”记忆”——学术上叫参数化记忆(Parametric Memory)。它记住的不是一条条事实,而是”什么词经常出现在什么词后面”的概率分布。
参数化记忆有三个根本性的局限:
第一,训练数据有截止日期。 模型训练需要数月,训练完成后参数就冻结了。2026年3月训练完的模型,不可能知道2026年5月发生的事。犀牛鸟竞赛每年的时间安排都不一样,模型只能用去年的信息”猜”今年的——这几乎必然出错。
第二,压缩导致信息失真。 数万亿字的文本被压缩成几十 GB 的参数。这个压缩率是天文数字级别的——好比把一座图书馆的全部藏书压缩成一本笔记本。很多长尾知识、精确数字、具体细节在压缩过程中就丢失了。模型可能记住了”犀牛鸟是腾讯的开源计划”,但记不住”2026年的报名截止日期是几号”。
第三,没有来源追溯。 参数化记忆没有”书签”机制。当模型输出一句话时,它无法告诉你”这句话来自哪篇文档的第几段”。这意味着用户没有办法验证答案的来源,也意味着模型自己也分不清”我确信的事实”和”我猜测的可能”——它只会从概率最高的下一个词开始往下写。
用一句话总结:大模型是闭卷考试的考生。 它只能凭记忆答题,不能翻书、不能查资料、不能问同学。记得住的题答得好,记不住的就只能编一个看起来对的答案交上去。
1.2 幻觉不是Bug,是结构性问题
这里有一个常见误区需要澄清:很多人以为”模型升级了就不会幻觉了”。但幻觉不是一个可以通过增大参数量或增加训练数据来彻底消除的 bug,它是自回归语言模型的结构性问题——只要模型的工作方式是”基于已有文本预测下一个最可能的词”,它就永远有可能在缺乏事实支撑的情况下生成看似合理的内容。
GPT-4 比 GPT-3.5 幻觉更少,但仍然会幻觉。未来的 GPT-5 也一样。区别只在于频率和严重程度,不在于有没有。
这就引出了一个核心问题:如果闭卷考试永远会出错,那能不能让考生带参考资料入场?
答案就是 RAG。
二、RAG 是什么:从闭卷到开卷
2.1 日常类比:闭卷 vs 开卷
继续用考试的类比。闭卷考试要求考生全凭记忆作答——这就是纯大模型的工作方式。开卷考试允许考生带教材和笔记进考场——遇到拿不准的题可以翻书找答案。
RAG 做的事情,就是把大模型的闭卷考试变成开卷考试。
考生(大模型)的能力没有变——它依然擅长理解问题、组织语言、生成流畅的回答。变的是它获取信息的方式:不再只依赖脑子里记住的东西,而是可以在回答之前先翻阅一个”知识库”,找到和问题相关的材料,然后基于这些材料组织答案。
这个类比的边界在于:真正的开卷考试中,考生自己决定翻哪本书、翻到第几页。RAG 系统中,”翻书”这件事是由一个独立的检索器(Retriever) 来完成的——考生只管看到什么材料就基于什么材料答题。
2.2 正式定义
RAG 的全称是 Retrieval-Augmented Generation(检索增强生成)。这个概念最早由 Meta AI(前 Facebook AI)的 Patrick Lewis 等人在 2020 年提出,论文标题是 “Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks”。
名字本身就说清楚了它是什么:
- Retrieval(检索):从外部知识库中找到和用户问题相关的文档片段
- Augmented(增强):把检索到的内容作为额外上下文注入给大模型
- Generation(生成):大模型基于这些上下文生成最终回答
三个步骤串起来,就是 RAG 的基本流程:
用户提问
↓
检索器在知识库中搜索相关文档片段
↓
把检索到的文档片段 + 原始问题拼接成 Prompt
↓
大模型基于 Prompt 生成回答(有据可依)
↓
返回回答给用户
和纯大模型的区别一目了然:纯大模型的 Prompt 只有用户的问题,RAG 的 Prompt 里多了一段”参考材料”。大模型不再需要从记忆中硬挤出答案,而是可以”照着材料说”——这大幅降低了幻觉的概率,同时让回答可以追溯来源。
2.3 最简 RAG 管线:Python 代码
下面这段伪代码展示了一个最简单的 RAG 系统的完整流程。暂时不需要理解每一行的技术细节,只需要看清楚三个步骤是怎么串起来的:
from openai import OpenAI
from sentence_transformers import SentenceTransformer
import numpy as np
# 0. 准备"知识库"——只有三句话
knowledge_base = [
"2026年犀牛鸟开源人才培养计划于5月20日开放报名。",
"WeKnora 是腾讯开源的 RAG 知识库引擎,支持三路混合检索。",
"RAG 的全称是 Retrieval-Augmented Generation。",
]
# 1. 把知识库的每句话变成向量(一次性)
embedder = SentenceTransformer("BAAI/bge-small-zh-v1.5")
kb_vectors = embedder.encode(knowledge_base)
# 2. 用户提问 → 同样变成向量 → 计算相似度 → 找最相关的
question = "犀牛鸟2026什么时候报名?"
q_vector = embedder.encode([question])
scores = np.dot(kb_vectors, q_vector.T).flatten() # 余弦相似度(简化版)
best_idx = scores.argmax()
context = knowledge_base[best_idx] # 检索到最相关的一句
# 3. 把检索结果塞进 Prompt → 让大模型基于它回答
client = OpenAI()
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[
{"role": "system", "content": f"请仅根据以下参考资料回答。\n参考资料:{context}"},
{"role": "user", "content": question},
],
)
print(response.choices[0].message.content)
# → "2026年犀牛鸟开源人才培养计划于5月20日开放报名。"
这段代码只有 20 来行,但完整地展示了 RAG 的三个核心步骤:编码(Encode)→ 检索(Retrieve)→ 生成(Generate)。真实的 RAG 系统会在每个步骤上做大量优化——更好的向量模型、更智能的分块策略、更精细的重排序算法——但骨架就是这么简单。
2.4 常见误区
误区一:”RAG 就是向量搜索”。 向量搜索只是 RAG 中检索步骤的一种实现方式。检索也可以用关键词匹配(BM25)、知识图谱查询、甚至数据库 SQL 查询。本导读后面会详细讲到,WeKnora 就同时用了三种检索方式。
误区二:”有了 RAG 就不会幻觉了”。 RAG 大幅降低幻觉概率,但不能完全消除。如果知识库里的内容本身过时了,或者检索器没找到正确的文档,模型依然可能幻觉。RAG 是”减少幻觉的最有效手段”,不是”根治幻觉的银弹”。
误区三:”RAG 只适合问答场景”。 RAG 的本质是”让模型在生成之前先查资料”,这个模式适用于任何需要事实支撑的场景——报告撰写、代码生成、客服对话、合同审查等等。问答只是最直观的演示场景。
三、五大平台一句话定位
了解了 RAG 是什么之后,下一个问题是:市面上有哪些做 RAG 的开源项目?它们有什么区别?
2025-2026 年,RAG 从实验性技术变成企业基础设施。GitHub 上以 RAG 为标签的项目从 2024 年初的约 200 个增长到 2026 年中超过 2000 个。在这 2000 多个项目中,本导读聚焦 5 个最具代表性的全栈 RAG 平台:WeKnora、Dify、RAGFlow、FastGPT、AnythingLLM。
3.1 五家餐厅类比
把这 5 个项目比作 5 家餐厅,定位差异一目了然。
WeKnora = 米其林三星后厨。 每道菜三路备料——BM25 关键词检索、向量语义检索、知识图谱结构化查询,三路结果由主厨亲自用 RRF(Reciprocal Rank Fusion)算法调和,最后还有复合 Rerank 重排序做最终质检。这还没完,它还帮你巡检食材是否过期——知识库自维护 Wiki 功能能自动发现过时和矛盾的内容。预约难(部署复杂、依赖组件多),但出品质量无可挑剔。适合对检索精度有极致要求的团队。
Dify = 中央厨房(美食广场)。 什么菜系都有——RAG 是它的一道菜,但除此之外还有 Agent、工作流编排、LLMOps、模型管理、应用发布……你来这里不是冲着某一道菜,而是冲着”什么都能做”。GitHub 超过 14 万 Stars,是这个赛道星标最多的项目。可视化拖拽构建 AI 应用,产品经理也能用。RAG 模块本身不是最深的,但胜在平台生态完整、集成选择最多。
RAGFlow = 食材预处理中心(日料店)。 师傅花 80% 的时间处理食材——它的核心武器是自研的 DeepDoc 文档解析引擎,支持 20 多种格式,对 PDF 中的复杂表格、扫描件、嵌套布局的解析能力远超同行。RAGFlow 的哲学是”向上游要质量”:如果文档解析得足够好,后面的检索和生成自然不会差。刀工极细,每一口都能尝到食材的新鲜。
FastGPT = 连锁餐厅管理系统(企业食堂)。 有餐盘分配(权限管理)、有部门专区(原生多租户)、有固定套餐(工作流模板)。在中文社区最活跃,文档和社群都以中文为主。面向需要快速搭建知识库问答系统的企业客户,SaaS Ready,部署即可商用。味道不惊艳,但流程化运营效率最高。
AnythingLLM = 家庭厨房(便利店)。 24 小时营业、走两步就到——单文件部署,在自己的笔记本上跑起来只需要几分钟。隐私优先,所有数据不出本机。MIT 许可证,没有任何商业限制。你不会在这里办宴席,但凌晨两点只有它开着。适合个人用户、隐私敏感场景或快速原型验证。
3.2 快速对比表
| 项目 | 核心强项 | 主语言 | Stars |
|---|---|---|---|
| WeKnora | 三路混合检索 + 知识图谱 + 自维护 Wiki,检索质量极致 | Go | ~14.3K |
| Dify | 全栈 LLM 应用平台,可视化工作流 + RAG + Agent,生态最全 | TypeScript/Python | ~144K |
| RAGFlow | DeepDoc 深度文档解析,20+ 格式支持,向上游要质量 | Python/TypeScript | ~83K |
| FastGPT | 企业级知识库平台,中文社区最活跃,多租户 SaaS Ready | TypeScript | ~28K |
| AnythingLLM | 单文件部署,隐私优先,11 种向量库后端,MIT 许可 | JavaScript | ~61K |
一个值得注意的现象:Stars 最多的不一定检索质量最高。Dify 的 144K Stars 反映的是它作为”全栈 LLM 平台”的受欢迎程度,而非 RAG 能力的深度。WeKnora 的 14.3K Stars 在绝对数量上最少,但它在检索质量维度(三路混合检索 + 复合 Rerank + 知识图谱)上是 5 个项目中做得最深的。选项目不能只看 Stars,要看它解决的是什么问题。
四、本导读的定位
4.1 不是什么
本导读不是 API 文档——不会手把手教你调用某个项目的接口。
本导读不是部署教程——不会教你怎么在服务器上把项目跑起来。
本导读不是使用手册——不会教你怎么在 Dify 里创建一个应用、在 RAGFlow 里上传一份文档。
这些内容每个项目的官方文档都写得比我好,没有必要重复。
4.2 是什么
本导读要解决的是一个更根本的问题:为什么这些项目要这样设计?
当你看到 WeKnora 用三路检索而 AnythingLLM 只用一路,你需要理解的不是”三路的 API 怎么调”,而是”为什么三路比一路好?好在哪里?代价是什么?什么场景下一路就够了?”
当你看到 RAGFlow 在文档解析上投入巨大,你需要理解的不是”DeepDoc 的配置文件怎么写”,而是”为什么文档解析是 RAG 系统的瓶颈?解析质量差会怎样影响最终的回答质量?”
这种”为什么”层面的理解,是参加犀牛鸟竞赛、向开源项目贡献代码时最需要的——因为你需要判断自己的贡献方向是否合理,需要在代码审查中说服 maintainer 你的设计是对的。
4.3 读完10章你会收获什么
读完全部 10 章之后,你应该能做到以下几件事:理解 RAG 技术栈从文档解析到最终生成的完整链路,以及每个环节的核心 trade-off;说清楚 5 个开源项目各自的设计哲学和技术取舍,不是”哪个好”而是”各自好在哪里”;知道怎么用 RAGAS 等评估框架量化 RAG 系统的效果,不被主观感觉误导;能够针对 WeKnora 项目识别有价值的贡献方向,写出有技术深度的 proposal。
五、犀牛鸟竞赛背景
5.1 什么是犀牛鸟
腾讯犀牛鸟开源人才培养计划(Rhino-Bird Open-Source Training Program)是腾讯发起的面向高校学生的开源贡献项目。它的名字来源于犀牛鸟和犀牛的共生关系——犀牛鸟帮犀牛清理寄生虫,犀牛为犀牛鸟提供食物来源。在这里,”犀牛”是腾讯的开源项目,”犀牛鸟”是参赛的学生。学生通过为腾讯开源项目做实质性贡献来学习和成长,项目则获得新鲜的想法和代码——双方互利。
犀牛鸟计划从 2024 年开始举办,对标 Google Summer of Code(GSoC),但更侧重中文开源社区和腾讯生态。参赛学生需要选择一个腾讯开源项目(如 WeKnora、TARS 等),在导师指导下完成一个有意义的技术贡献——可以是新功能开发、性能优化、文档完善,或者测试框架建设。
5.2 2026 年竞赛结构
2026 年犀牛鸟计划(第三届)的大致流程分为几个阶段。首先是项目发布与学生报名阶段,腾讯公布参赛项目和课题列表,学生提交 proposal。然后是社区研讨阶段,入围学生与导师沟通,细化技术方案。接下来是集中开发阶段,这是最核心的阶段——学生在 2-3 个月内完成编码、测试、文档,定期和导师同步进展。最后是评审与结项阶段,导师和社区评估贡献质量,优秀者获得证书和奖金。
参赛项目覆盖多个技术方向,我们关注的 RAG/知识库赛道有 5 个项目:WeKnora、Dify、RAGFlow、FastGPT、AnythingLLM。本导读的研究范围就是这 5 个项目。
5.3 为什么聚焦 WeKnora
在 5 个项目中,WeKnora 值得特别关注,原因有三:
技术深度最高。 WeKnora 是唯一同时做了 BM25 + 向量检索 + 知识图谱三路混合检索的项目,并且在 Rerank 阶段引入了复合三信号(语义相关度 0.6 + 知识图谱关联度 0.3 + 来源可信度 0.1)的重排序机制。它还是唯一一个内建知识图谱自动构建(基于 PMI 算法)和知识库自维护 Wiki 巡检功能的项目。这意味着它的技术面最广,可挖掘的贡献方向最多。
代码量适中。 WeKnora 大约 800 多个文件,主语言是 Go。相比 Dify 的 5000+ 文件、RAGFlow 的 2000+ 文件,WeKnora 的代码库对个人参赛者来说更容易在竞赛周期内读懂和贡献。
贡献空间明确。 从技术挑战分析中可以看到,WeKnora 在三路检索延迟叠加、知识图谱构建成本、多模态 RAG 等方面都有明确的改进空间。这些不是臆想出来的”可以优化的地方”,而是社区已经意识到但尚未解决的真实问题。
5.4 什么是有价值的贡献
犀牛鸟竞赛评审看重的不是代码量,而是贡献的”影响力”和”技术深度”。一个好的贡献通常具备以下特征:解决真实问题——不是为了写代码而写代码,而是社区确实需要这个功能或修复;有技术判断——不是简单地实现需求,而是在多个方案中选择了最合适的,并能解释为什么;可验证——有测试、有 benchmark、有对比数据,maintainer 能确认你的改动确实改善了系统。
举个例子,”给 WeKnora 的 RRF 融合算法增加一个可配置的 k 参数”——这个贡献代码量可能只有几十行,但如果你能同时给出不同 k 值在标准数据集上的检索效果对比(消融实验),证明可配置 k 值确实比硬编码 k=60 更灵活,那这就是一个高质量的贡献。
反面例子:”给 README 翻译成英文”——这也是贡献,但技术深度有限,在竞赛评审中权重较低。
六、本章小结
回顾本章的核心内容:
大模型为什么会”说谎”。 大模型的参数化记忆有三个根本局限——训练数据截止、压缩导致信息失真、无法追溯来源。这使得它在面对超出训练数据范围的问题时,会”编造”看起来合理但实际不正确的答案。这不是 bug,是自回归语言模型的结构性问题。
RAG 的核心思路。 把大模型从”闭卷考试”变成”开卷考试”——在生成回答之前先从外部知识库检索相关文档,让模型”有据可依”地回答。三步流程:检索 → 注入 Prompt → 生成。Lewis et al. 2020 年提出这个范式,到 2026 年已经成为企业 AI 应用的标准架构。
五大平台各有所长。 WeKnora 三路检索质量极致、Dify 全栈平台生态最全、RAGFlow 文档解析最深、FastGPT 企业级 SaaS Ready、AnythingLLM 隐私优先部署最简。没有”最好的”,只有”最适合具体场景的”。
本导读帮你理解”为什么”。 不教 API 调用,不教部署配置。教你理解每个技术决策背后的 trade-off,这是参赛和贡献开源最需要的能力。
犀牛鸟竞赛看重影响力和技术深度。 代码量不重要,解决真实问题、有技术判断、可验证改进——这才是高质量贡献的标准。
下一章 Ch02: 阅读路线图与前置知识 将为你规划三条不同的阅读路径——竞赛冲刺路径(1 周)、全景学习路径(3 周)、生产实践路径(5 天),并列出需要提前了解的前置概念(向量、嵌入、余弦相似度等),帮你根据自己的目标和时间选择最高效的阅读方式。
章节自测
- 一个客服机器人用纯 LLM 回答”我的订单号 12345 发到哪了”——它会遇到什么问题?RAG 如何解决?这和微调(Fine-tuning)解决方案有什么本质区别?
- 假设你的文档库有 10 万份 PDF,用户问了一个跨 3 份文档才能回答的问题。仅靠”检索 top-5 片段 + 拼入 prompt”够吗?你会怎么改进?
- 五大平台(WeKnora / Dify / RAGFlow / FastGPT / AnythingLLM)中,如果你要为一个需要处理扫描件(图片 PDF)的内部知识库选平台,你会优先考虑哪个?为什么?
导读目录:README.md 下一章:Ch02: 阅读路线图与前置知识