# RAG 为什么搜不全？向量检索的数学上限

- URL: https://davidyin.dev/video/bv1ifui6he1t/
- 作者: David Yin
- 发布: 2026-08-11T12:03:32+08:00 · 更新: 2026-09-29
- 时长: 12:58
- 平台: B 站 https://www.bilibili.com/video/BV1iFui6HE1T · YouTube https://www.youtube.com/watch?v=UnSZ_MS80jg
- 标签: RAG、向量检索、embedding、BM25、AI搜索
- 摘要: RAG 为什么总说没找到？DeepMind 论文证明：「只存一串数字」的向量检索，固定维数里能装下的答案组合有数学上限——100 万文档、每问 1000 份答案，理论下限 3296 维。视频还讲清考卷结果、四条撞墙的路，以及查文件时该怎么用它。

## 这期讲了什么

- RAG 的捞法是「变成数字、比远近」：意思近的文字数字挨得近，但只挑最像的十份、二十份或一百份，挑不上的连出场资格都没有
- 数学上限：固定长度的数字串能塞下的「答案方向」有上限；100 万份文档、每问要 1000 份答案，理论下限就要 3296 维，而实际在用的多数不到 1000 维——有些答案从设计那天起就捞不出来
- 考卷结果：46 份文档的小考场，最强模型两下全中只有 54.3%、放宽到前 20 名也只有 97.7%；5 万份完整版前 100 名命中不到两成；而 1995 年出自论文的关键词老办法 BM25 拿到 93.6%，小考场直接满分
- 四条路都撞墙：加长数字串到 4096 维也只撑到 2.5 亿份文档；同领域微调前 10 名命中只有 2.8；通用榜单状元在这张卷子只有 4.8 分；换回关键词一遇同义词掉 89% 以上
- 半年后有人换存法翻了盘：一篇文档给每个词各存一串数字，同一张卷子做到 98.0%，证明天花板是「只存一串数字」这个做法的，不是搜索本身的

## 文字稿

### AI 怎么捞材料：把文字变成一串数字比远近

RAG，就是 AI 回答你之前，先去资料堆里捞一遍，再拿着捞回来的东西写答案。你把一堆文件丢给它，问一个你确定有答案的问题，它偏偏回你一句：没找到。换个说法再问，还是没找到。文件明明放在那儿，它翻来翻去，就是告诉你没有。可如果，问题根本不在你的问法上呢？

AI 找东西，不靠翻目录。它先把每段文字变成一串数字，意思越近的文字，数字挨得越近：「苹果」和「水果」离得近，「苹果」和「螺丝刀」离得老远。你问问题，它把问题也变成一串数字，挨个跟每份文件比远近，最近的就是它认为的答案。你换个说法问，比如「谁爱吃水果」，因为数字挨得近，它还是能找到提到苹果的那份文件。这正是它比搜关键词聪明的地方，可这份聪明是要拿东西来换的：它不会把全部文件摆出来，只挑最像的那几份，挑不上的连出场资格都没有。

这套捞法眼下最主流，但它只是捞法的一种。这是谷歌旗下 DeepMind 团队研究出来的结论，论文 2025 年 8 月放出、2026 年 3 月更新第二版，被 ICLR 2026 收录。第一作者 Orion Weller 同时在约翰霍普金斯大学做研究，论文标题直译就是「关于向量检索的理论局限」，搜这个名字能找到原文。更麻烦的是，捞不到的时候它往往不老实说没找到，而是拿不相关的材料硬凑一个像模像样的答案。

### 数学上限：一串数字装不下所有答案组合

文件一多，麻烦就来了。一组答案需要一个专门的方向：你问「谁喜欢苹果」，答案可能是乔恩；你问「谁喜欢苹果也喜欢夏威夷披萨」，答案就是乔恩和玛丽。答案一多，方向就要跟着多。每个方向都得跟别的方向保持距离，可空间就这么大，总有两组答案会挤在一起，谁也分不开谁。

而这串数字的长度是固定的。一个固定长度的数字串里，能塞下多少互不干扰的方向，是有上限的——这是被证明过的数学结论，跟模型努不努力、数据多不多都没关系。数字摆出来更直观：一百万份文档、每份答案要拿出一千份，光理论下限就要一串 3296 个数字，而真实在用的大多不到一千个。一个「只存一串数字」的搜索系统，从设计那天起，就有答不出来的题。

### 一张简单考卷：四条路全撞墙

光说数学没感觉，作者就做了张考卷，简单到可笑：文档就是「乔恩喜欢苹果」这种一句话，爱好是程序随机分配的。小考场 46 份文档配 1000 个问题，46 份里挑 2 份当答案有 1035 种挑法。结果，能两下全中的只有 54.3%；最好的模型放宽到前 20 名也只有 97.7%，给了 20 次机会还是做不到全对。换成 5 万份文档的完整考场更难看：所有「只存一串数字」的模型，命中率都不到 20%，放宽到前 100 份也不到两成。考卷的数据和代码都公开了，谁都能自己下载跑一遍。

那有没有一个办法能捞出来？还真有一个：只会认关键词的老办法，出自 1995 年的一篇论文，是检索领域用了三十多年的老基准。它认字不认意思，在这张卷子上拿到 93.6%，小考场直接满分——一堆最聪明的新模型，输给了一个不知道「意思」是什么的老古董。

接下来四条路都试了。加大数字串？就算拿标准答案去优化，4096 个数字也就撑到 2.5 亿份文档，而且串越长越占地方、越慢，只是把崩盘点往后推。多训练？同领域数据微调一遍，前 10 名命中率从几乎为零涨到 2.8。换更强的模型？通用检索榜单的状元在这张卷子上只有 4.8，直接垫底。回到关键词？把卷子里的词全换成同义词，老办法的成绩直接掉了 89% 以上，反而比新模型还差。四条路都堵上了，剩下的可能只有一个：这套「一串数字」的做法，本身装不下那么多答案。

### 半年后翻盘，和你以后该怎么用

半年后，还是那张考卷，有人换了个做法：一篇文档不只存一串数字，而是存一排，每一个词都有自己的数字串。同一张卷子他们做到 98.0%，成了第一个在语义检索上超过关键词老办法的模型，成绩公布在公司官方博客里，同期几家头部厂商最强的模型全都不到 10 分。代价当然有：一排数字占的地方大得多。但至少证明了，那个天花板是「只存一串数字」这个做法的天花板，不是搜索本身的。这张考卷还被收进了业界最常用的评测榜单，成了新模型绕不开的必考题。

对普通人来说，最值钱的是几条能直接用的判断。第一，AI 说「没找到」未必是你的问题，有些答案组合数学上就是表达不出来，别对着同一个问题改措辞改到天亮。第二，带编号、型号、错误码的东西别指望它按意思找，像 ERR-502 这种错误码本来就是关键词的活，语义搜索会成批漏掉；合同条款、产品规格、政策文件这种半结构化内容最容易踩坑。第三，「同时满足好几个条件」的问法最容易翻车，比如找一份 2024 年 Q3 华东区、还签了按效果付费条款的合同，不如拆成几步、每问只碰一个条件。第四，重要的事自己再核一遍，检索漏掉文件时，AI 可能一本正经给你编一个像模像样的答案。第五，选 AI 工具时多问一句：是纯数字比较，还是混了关键词？后者在查文件、编号、条款上可靠得多——有工程师分享过公司的做法，两套各跑一遍再合起来，照做就行。

说到底，AI 说「没找到」，是它那套捞法天生装不下某些答案。摸清这块盲区，它就是顺手的工具；摸不清，你就被一句「没找到」反复折磨。

## 常见问题

### RAG 搜不到是问法不对吗？

不一定。DeepMind 的论文证明，「把文字变成一串数字比远近」这种向量检索，固定维数能表达的答案组合有数学上限——有些答案换一百种问法也捞不出来。所以「没找到」未必是你的问题，也未必是 AI 笨，是那套捞法天生装不下某些答案。

### 向量检索为什么有理论上限？

因为固定长度的数字串里，能塞下多少互不干扰的「答案方向」是有上限的。每组答案需要一个专门指向它的方向，方向多了必然挤在一起。论文算过：100 万份文档、每问要 1000 份答案，理论下限要 3296 维，而实际在用的多数不到 1000 维。

### BM25 为什么能赢最聪明的模型？

BM25 是 1995 年出自论文的关键词检索方法，认字不认意思。在 DeepMind 那张 46 份文档的合成考卷上它拿 93.6%、小考场满分，因为答案恰好靠字面对应。但它不是万能钥匙：把卷子里的词换成同义词，它的成绩直接掉 89% 以上，反而比新模型还差。

### 用 AI 搜文件时应该注意什么？

带编号、型号、错误码的内容别指望语义搜索，那是关键词的活；「同时满足好几个条件」的问题拆成几步问；重要的事自己再核一遍——检索漏文件时 AI 可能一本正经编答案；选工具时优先选「语义加关键词」混跑的方案。

> 视频不在本站托管，正片见上方平台链接；本页是目录与注解。
