编程基础篇 · 大模型肚子里的数据结构

向量:RAG 检索是在「找最近的邻居」

学 RAG 时我们说过:Embedding 把一段话变成一串数字。这串数字到底是什么?答案简单得出奇——是坐标。给每句话发一个「语义地图」上的位置,意思越近、位置越近。于是「检索资料」这件事,就变成了小学生都会的游戏:在地图上找离你最近的邻居

先玩地图 · 语义相近 = 坐标相邻

下面是一张迷你语义地图:12 个词已经被 Embedding 安排好了座位,自然聚成三个「街区」。拖动黑色的 ❓ 查询点(或点击地图任意位置放置它),留意:连线永远指向最近的 3 个词,距离实时变化,最近的那个戴 👑。把 ❓ 拖到两个街区中间,看看邻居怎么换人。

试试把 ❓ 拖进「美食街区」,再拖去「科技街区」。
这就是 RAG 检索的全部原理。你的知识库里每段资料都被 Embedding 发了一个坐标(真实世界是 1536 维,不止 2 维,但道理一样);你提问时,问题也被发一个坐标;然后找离问题最近的几段资料,塞进上下文交给大模型。「语义搜索比关键词搜索聪明」的秘密,就是「奶茶」和「杨枝甘露」虽然一个字都不重叠,坐标却挨得很近。
再看速度 · 挨个算 vs 修高速公路

找最近的邻居,最笨的办法是把每个点都量一遍距离。60 个点无所谓,可 RAG 知识库动辄百万段、推荐系统动辄十亿条。下面同一张地图撒了 60 个点,🌟 是你的查询。先点「挨个算」数一数要几步,再点「HNSW 分层跳」对比——留意蓝色跳跃线是怎么「先大跳、再小跳」的。

🐢 挨个算(暴力遍历)
次距离计算
🚀 HNSW 分层跳
次距离计算
HNSW 的直觉:先修高速公路。除了底层的完整地图,再多存几层越来越稀疏的「捷径图」——查询时从最稀疏的高层出发,几大步锁定大区,逐层下降、越跳越细。又是一次空间换时间
60 个点是 60 次 vs 8 次,数据到亿级就是「等几分钟」和「毫秒」的区别。暴力遍历的次数跟着数据量一比一地涨;HNSW 每层跳几步就能砍掉一大片搜索范围,亿级向量也只要几十步。向量数据库(Milvus、Pinecone、FAISS 这些名字你迟早会遇到)卖的核心本事,就是把这几层「捷径图」建好、维护好。
这和 AI 有什么关系?
📚

RAG 检索

问题和资料都变坐标,找最近的几段资料塞给大模型——你每天用的「基于知识库回答」,底层就是本页这两个动画。

🖼

以图搜图

图片也能 Embedding 成坐标。拍张沙发照片搜同款,就是在几亿张图的语义地图上找你照片的邻居

🎯

猜你喜欢

你的口味是一个坐标,每首歌每部剧也是。推荐系统天天在做的事:找离你最近的那批内容,端上来。

✅ 这一课想和你分享的