人们是讨厌喜欢 RAG,还是喜欢讨厌 RAG,这很难说清。
根据最近在 X 和 HN 上的讨论,RAG 应该已经死了,再一次。这次,批评者们聚焦于大多数 RAG 框架的过度工程化,就像 @jeremyphoward @HamelHusain @Yampeleg 所展示的,用 20 行 Python 代码就能完成。
T H A N K Y O U ! ! !
— Yam Peleg (@Yampeleg) May 23, 2024
(v 2.0)
Full RAG in 20 lines.
This is how you implement semantic search in ~10 lines
Replace 𝚌𝚘𝚗𝚝𝚎𝚡𝚝𝚜 & 𝚚𝚞𝚎𝚜𝚝𝚒𝚘𝚗 with your own.
* the blurred code is for loading example contexts
(Everything from FastAI's guide:https://t.co/qBpU6T2Fd1) https://t.co/Or3eJEbSt9 pic.twitter.com/e2q70H6QaY
上一次有这种氛围是在具有超长上下文窗口的 Claude/Gemini 发布后不久。这次更糟的是,就连 Google 的 RAG 也产生了滑稽的结果,正如 @icreatelife @mark_riedl 所展示的那样。这很讽刺,因为在四月份的拉斯维加斯 Google Next 大会上,Google 还将 RAG 作为基础解决方案进行展示。
I couldn't believe it before I tried it. Google needs to fix this asap.. pic.twitter.com/r3FyOfxiTK
— Kris Kashtanova (@icreatelife) May 23, 2024
Yes! My website poisoning attack works on Google's new LLM-powered AI overviews! pic.twitter.com/nWyMtl7nMj
— Mark Riedl (@mark_riedl) May 22, 2024
tagRAG 的两个问题
我认为当前的 RAG 框架和解决方案存在两个问题。
tag仅有前向传播
首先,几乎所有的 RAG 框架只实现了"前向传播"路径,而缺乏"反向传播"路径。这是一个不完整的系统。我记得 @swyx 在 @latentspacepod 的某一集中说,RAG 不会被 LLMs 的长上下文窗口杀死,因为:
- 长上下文对开发者来说成本高昂
- 长上下文难以调试且缺乏可分解性
但如果所有 RAG 框架只关注前向路径,它又如何比 LLM 更容易调试呢?有趣的是,很多人对一些随机 POC 中 RAG 的自动魔法结果过度兴奋,完全忘记了在没有反向调优的情况下添加更多前向层是个糟糕的主意。我们都知道,给神经网络添加一层会扩展其参数空间,从而提高表示能力,使其能够做更多潜在的事情,但没有训练,这什么都不是。湾区有一些创业公司在做评估——本质上是在尝试评估前向系统的损失。这有用吗?是的。但它能帮助闭合 RAG 的循环吗?不能。
那么谁在研究 RAG 的反向传播呢?据我所知不多。我最熟悉的是来自 @stanfordnlp @lateinteraction 的 DSPy 库,它的使命就是致力于此。
但即使是 DSPy,主要关注点也是在优化少样本示例,而不是整个系统(至少从社区使用情况来看)。但为什么这个问题很难呢?因为信号非常稀疏,优化一个非微分的流水线系统本质上是一个组合问题——换句话说,极其困难。我在读博期间学习过一些子模块优化,我感觉这项技术在 RAG 优化中会派上用场。
tag真实环境中的基础化很难
尽管 Google 的搜索结果很滑稽,我仍然认为 RAG 是用于基础化的。基础化有两种类型:搜索底座化,使用搜索引擎扩展 LLMs 的世界知识,和检查基础化,使用私有知识(如专有数据)进行事实检查。
在这两种情况下,它都引用外部知识来提高结果的真实性,前提是这些外部资源是可信的。从 Google 的滑稽搜索结果中可以很容易看出,网络上并非所有内容都是可信的(是的,大惊喜,谁能想到!),这使得搜索底座化看起来很糟糕。但我相信你现在只能对此一笑置之。Google Search UI 背后有一些隐式反馈机制,收集用户对这些结果的反应,并权衡网站的可信度以实现更好的基础化。总的来说,这应该是暂时的,因为这个 RAG 只需要度过冷启动期,结果就会随着时间的推移而改善。



RAG 在 Google Next 大会上被作为一个基础解决方案进行了介绍。
tag我的观点
RAG 既不是死的也不是活的,所以别再争论它了。RAG 只是你可以使用的一种算法模式。但如果你把它当作唯一的算法并加以崇拜,那么你就是生活在自己创造的泡沫中,而这个泡沫终将破裂。





