Blog

如何向普通人解释什么是 RAG

Cover Image for 如何向普通人解释什么是 RAG
ZD
ZD

TL;DR 警告:如果亲爱的读者你是 AI 的行家里手,请直接关闭本页面。作者本人不直接从事 AI 有关工作,本文内容也仅仅是作者自己的粗浅理解,科普,谈资,无他。

如题,还真不容易,这也是一次充分实践费曼学习法的机会。当然,前提是自己已经充分掌握了这一话题的方方面面,才有可能输出的游刃有余。

这次正好遇到一个很好的契机:一个朋友正面临半年度绩效考核评估的折磨。上一次遇到这样的思考,还是 10 多年前了,当时是莫名其妙的给云计算和保管箱组了个 CP。

没错,我愣是将 KPI 总结和 RAG 结合了起来,并且让该朋友深刻的理解和记住了,甚至更进一步,push 对方再用费曼学习法教给我(用一句话解释什么是 RAG),从而加强理解和记忆。

那么我是怎么做到的呢?

KPI 是怎么做的

方法1: 通过直接回忆过去半年干了哪些要紧事草拟一下 KPI 考核事项。

我们一起帮助这位朋友完成这该死的绩效自评吧。既然是半年度的绩效,那么过了半年了,相比已经记性不怎么好的朋友们此时已经要崩溃了,什么都想不起来,没错,我也是这样。因此,这里就卡住了,然后就开始拖延,拖延,痛苦的拖延。

方法2: 每天日记救你一命

幸好这位朋友在几个月之前就开始实践 Obsidian 记录每日行动,因此有了宝贵的第一手材料来帮助回忆过去这半年都干了什么。每日行动的记录大体是在每天的一些关键时间点记录刚刚完成了什么值得记录的事情。每天即便只记录 5 条,半年度下来也是一个很大的数量。要从日记中总结半年度工作,就要讲究一些方法了。

为了从每天日记中炼出我们的 KPI 报告,我们将分成三步走。

首先让这位朋友快速过一遍每天日记,将标签 #KPI/25H1 打在与 KPI 有关的记录中。这一步需要花费一些时间,大约用了 2 个番茄钟。

然后,通过 tag 视图过滤出半年来所有的标记了 #KPI/25H1 的记录,大约有 160 条。根据这些记录,提取汇总到每一个月的总结中。经过这一步,就从 160 条零碎的记录汇总成了 6 篇小短文。这一步大约花费 1 个番茄钟。

最后,将 6 篇小短文再进一步汇总提炼出半年度的 KPI 总结。这一步大约花费 0.5 个番茄钟。

也就是说,这位朋友花费了 3.5 个番茄钟,基本上就完成了绩效报告的草拟。与方法1不同的是,此时拟定的草稿有理有据,除了多花了点时间,几乎找不到破绽。

RAG 是什么

Google 给出 RAG 定义:

RAG,全称Retrieval-Augmented Generation,即检索增强生成。它是一种将大型语言模型(LLM)与外部知识库相结合的技术,以提高LLM生成答案的准确性、相关性和时效性。

为什么出现莫名其妙的 RAG 呢?难道是作者我要蹭一下 AI 的热度么?非也!碰巧这位朋友在 KPI 的模版中出现了 RAG 有关的绩效,这不巧了么?

按照上一章 KPI 的组织结构,我们也分为两个方法来讲解。

解释一下几个名词:

  • LLM 大语言模型,大模型:指的是模型的技术参数特别大,简单理解就是什么都能干,什么问题都能回答。甚至帮你写作业。
  • RAG 检索增强生成:这样的缩写词多半以英文中拼凑缩写的恶心。一种用来帮助大模型准确回答特定领域问题技术手段。常用在客户问答,知识库等领域。

方法1: 直接向大模型说:“总结一下我的半年度 KPI”

方法1 很好理解,找一个大模型,向它提问:“总结一下我的半年度 KPI”。根据大模型智力的水平不同,回答的弱智程度也有所不同。但是无论回答了什么,多半不会是你想要的的内容。

背后的原因也很简单,大模型能回答“土豆烧茄子这道菜怎么做?” 是因为无论谁问它,它都给同样的答案。但是你要是问它“我张三过去半年做了什么?”显然无法回答,因为每一个人得到答案应该都不一样,且不说这种属于个人的隐私是否可能被大模型学习到,就算是学习到了,这个大模型的体积也会庞大到无法实现的程度。

这就是我前面说的 “特定领域的问题”,因为大模型缺乏这个领域的知识储备。正如你,我的朋友,每天只是干完活就跑路的话,半年下来,恐怕也是脑袋空空,回忆不起来多少 KPI 的细节了。

结论: 依靠回忆直接动笔写KPI = 直接向大模型提问

方法2: 带上你的 RAG 一起向大模型说:“总结一下我的半年度 KPI”

方法2 就不一样了,俗话说的好,好记性不如烂笔头,虽然我记不住,但是我写了下来。通过打标签,提取 KPI 相关的记录,再进一步汇总的过程,我们就具备了回答 “总结一下我的半年度 KPI” 这一特定领域问题的前提条件。

RAG 正是为了解决大模型不能准确回答特定领域问题而诞生。例如我们的智能客服使用大模型回答客户的各种问题,“我的账户余额还够下个月包月么?”

类比 KPI 的总结过程,RAG 的三步走如下:

首先让这位朋友过一遍每天日记,将标签 #KPI/25H1 打在与 KPI 有关的记录中。这一步需要花费一些时间,大约用了 3 个番茄钟。

首先,根据问题 “总结一下我的半年度 KPI” 找到你的半年度有关的文字记录,也就是 RAG 中的 R (Retrieval),召回。

然后,通过 tag 视图过滤出半年来所有的标记了 #KPI/25H1 的记录,大约有 160 条。根据这些记录,提取汇总到每一个月的总结中。经过这一步,就从 160 条零碎的记录汇总成了 6 篇小短文。这一步大约花费 2 个番茄钟。

然后,将找到的所有记录进行汇总和提炼,在 AI 可能会是 Re-writer 的一过程,就将用户的问题根据找到的内容,重新改写一些,期望能得到更准确的答案。

最后,将 6 篇小短文再进一步汇总提炼出半年度的 KPI 总结。这一步大约花费 0.5 个番茄钟。

最后,将改写和拼接后的问题发给 AI 大模型,大模型生成了符合你预期的 KPI 总结报告。这一步对应了 RAG 中的 AG (增强和生成)

示例的问题改写过程

原始问题

总结一下我的半年度 KPI

经过 RAG 增强的问题

## 人设

你是一个 XXXX 的,你需要用专业而准确的语言,根据给定的事实,依据模版,总结半年 KPI 报告。

## 规则

1. 严格遵循模版的格式行文
2. 不得有任何编造内容

## 模版

(模版内容省略了)

## 事实
我在 XXXX 年上半年中,按照时间顺序完成了下面的事项:

XXXX 年 1 月:
- 某事,某进度,某问题
- 某事,某进度,某问题

对比前后两个问题的提问,差别就在于后者除了问题,还提供了与该问题有关的准确信息,这样 AI 大模型才能利用它已经习得的技能(例如语言总结)准确地回答你的问题。

跑个题,这个过程其实也像是去医院看医生。如果你直接问医生你为啥不舒服,医生除了望闻问切,就是连蒙带猜。给你治成什么样,天知道。但是你带着病历、各种检查报告再去看医生,此时医生就可以根据这些材料(RAG的过程)结合你的症状(你的问题)给出准确的诊断结果。

结论: 查找日记有关内容总结而成的 KPI 报告 = RAG 加持的大模型问答