万卷楼答题记

一个关于检索与生成的寓言

京城有一座万卷楼,号称藏书百万,天下学问尽收其中。皇帝下旨,每月初一举办"御前问答",百官可就治国理政之难题向万卷楼的学士提问,答得好者重重有赏。

万卷楼的首席学士叫文渊,自幼过目不忘,熟读经史子集。他一直是御前问答的常胜将军,无论天文地理、历朝律法,张口便答,从无差错。

傲慢的代价

这一年,西域诸国遣使来朝,带来许多前所未闻的学问——异域星象、海外本草、远邦律法。文渊在御前问答中接连失手,把波斯历法说成了天竺历法,把阿拉伯数字的起源讲得驴唇不对马嘴。

百官窃窃私语,皇帝面色不悦。

文渊跪在殿前,满脸羞愧。他心中不服:我的学问明明比谁都渊博,怎么偏偏答不上来?

回到万卷楼,他把自己关在书房里生闷气。掌管藏书阁的老书吏端来一碗茶,听他抱怨完,慢悠悠地说:“文大人,您有没有想过——这世上记载的知识每天都在变,您一个人再怎么博学,能比得上万卷楼里那一百万卷书?”

文渊愣住了。

借书答题

老书吏继续说:“下次答题,您别光靠自己脑子想。先把问题拆开,看它涉及哪些方面,然后去藏书阁里把相关的书找出来,翻到对应的章节,看清楚再答。”

文渊半信半疑,但别无他法,决定试试。

下次御前问答,波斯使者问:“我朝商队经由丝绸之路前往长安,途中经过的绿洲城镇,以哪座最为繁华?此城镇在百年前曾被何人统治?”

文渊不再立刻作答。他深吸一口气,先在心里把问题拆成两部分:一是当前最繁华的绿洲城镇是哪座,二是百年前那座城镇的统治者是谁。

然后他向皇帝请准短暂离席,快步走到万卷楼的书架前。他凭借自己深厚的学识,迅速判断出这类问题应该查阅《西域风土志》和《丝路列国谱》。他从浩如烟海的藏书中抽出这两卷,翻到西域绿洲的章节,仔细阅读。

片刻之后,他回到殿上,从容作答:“最繁华者当属龟兹,百年前为突厥所据。” 条理清晰,引经据典,连波斯使者都连连点头。

皇帝龙颜大悦。

万卷楼的规矩

此后,文渊将这个方法固化为万卷楼答题的正式规矩——

  1. 理解问题:仔细听清问的是什么,把问题拆解为需要回答的要点。
  2. 检索文献:根据问题,判断需要查阅哪类书籍,从藏书阁中检索出最相关的几卷。
  3. 阅读参照:翻到对应章节,提取关键信息。
  4. 组织回答:结合自己的学识和检索到的内容,组织出准确、完整的回答。

万卷楼的学士们遵循此法,此后御前问答再未失手。


故事讲完了。

文渊在万卷楼里做的事,就是 AI 领域中 RAG(Retrieval-Augmented Generation,检索增强生成) 方法的精确写照。

大语言模型(LLM)就像文渊——拥有广博的知识,但知识有边界,且会随时间过时。当遇到超出训练数据范围的问题时,模型要么答不上来,要么一本正经地胡说八道(hallucination)。

RAG 的核心思路是:别光靠模型自己的"脑子",在生成回答之前,先去外部知识库里检索相关资料。

它的流程和万卷楼的规矩一一对应:

  1. Query(查询):将用户的输入转化为检索查询。
  2. Retrieve(检索):从向量数据库、文档库等外部数据源中检索最相关的内容。就像文渊从万卷楼中抽出《西域风土志》。
  3. Augment(增强):将检索到的内容作为上下文,和原始问题一起喂给模型。
  4. Generate(生成):模型基于增强后的上下文生成最终回答。

RAG 解决了纯 LLM 的几个根本问题:知识过时(训练数据有截止日期)、知识缺失(私有数据、最新数据不在训练集中)、幻觉问题(模型编造看起来合理但实际错误的内容)。

这也是为什么如今几乎所有企业级 AI 应用——客服机器人、法律助手、企业知识库——都采用了 RAG 架构。它让 AI 不再只依赖"脑子里的东西",而是像文渊一样,学会了"翻书"。

下次当你问 ChatGPT 一个关于最新事件的问题,看到它先"搜索网页"再回答的时候,你就知道——它也是万卷楼的文渊。