30天从零开始学AI应用开发(Day 16):Embedding 是什么?用人话讲明白“向量检索”

发布时间:2026/10/4 5:24:39
30天从零开始学AI应用开发(Day 16):Embedding 是什么?用人话讲明白“向量检索” 这是系列的第 16 篇。整个系列写给零基础、想入行 AI 的朋友每天一篇30 天后你会做出 3 个能写进简历的项目。这篇解决什么问题昨天说 RAG 的核心是“先去资料里查出相关的内容”。可这里有个问题怎么查传统方法是搜关键词。你问“怎么报销差旅费”它就去文档里找有没有“报销”这两个字。这招有个致命缺陷换个说法就搜不到了。文档里写的是“差旅支出申请流程”你问“出差花的钱怎么报”关键词一个都不对搜出来一片空白。但人看得出来这两句话是一个意思。怎么让机器也看得出来答案是 Embedding。今天这篇可能有点抽象但我保证用人话能讲明白。一、先理解一件事把意思变成坐标思路是这样的既然机器看不懂文字那就把文字变成数字。不是随便变而是按“意思”来变。意思相近的句子变出来的数字也相近意思差很远的数字就差很远。最直观的理解方式是把它想成地图上的坐标。每个句子在“意思的地图”上有一个位置“怎么报销差旅费”“出差花的钱怎么报”“差旅支出申请流程”这三句话意思相近在地图上挨得很近聚成一小团。“今天中午吃什么”离它们就很远在另一片区域。这个“坐标”就是向量一长串数字。把文字转成向量的过程叫 Embedding。你不用管这串数字具体是多少也不用管它是怎么算出来的那是模型内部的事。你只需要知道意思相近坐标就相近。二、查资料变成了量距离有了坐标检索这件事就变成了小学几何题算出提问的坐标去地图上找离它最近的那几个点取出来。举例说明。假设库里存了三段资料提问是“出差怎么报销”资料内容和提问的“距离”结果差旅支出申请流程先填单……很近命中员工考勤管理规定……很远不相关差旅费标准高铁二等座……较近命中机器算的就是距离跟关键词一个字都对不上也没关系因为比的是意思不是字面。记住这个比喻整个 RAG 就通了Embedding 给每句话发了个坐标检索就是在地图上找最近的邻居。三、动手感受一下算两句话有多像光看比喻还是虚跑一遍代码就有感觉了。Embedding 也是调用 API 拿到的写法你早就熟了fromopenaiimportOpenAI clientOpenAI(api_key你的密钥,base_urlhttps://api.deepseek.com)defget_embedding(text):把一句话变成一串数字向量responseclient.embeddings.create(modelembedding-model-name,# 换成你所用平台的 embedding 模型名inputtext)returnresponse.data[0].embedding# 试三句话aget_embedding(怎么报销差旅费)bget_embedding(出差花的钱怎么报)cget_embedding(今天中午吃什么)print(向量的长度,len(a))# 通常是一千多个数字你会看到打印出来的长度是一千多也就是说每句话被变成了一千多个坐标值。这是高维空间我们画不出来但距离的计算逻辑和平面上一模一样。接下来算相似度。数学上一般用余弦相似度你不用记公式知道它输出 0 到 1越接近 1 越像就行importnumpyasnpdefsimilarity(v1,v2):算两个向量的相似度结果越接近 1 越相似returnfloat(np.dot(v1,v2)/(np.linalg.norm(v1)*np.linalg.norm(v2)))print(意思相近的两句,similarity(a,b))# 会比较高比如 0.85print(毫不相关的两句,similarity(a,c))# 会低很多比如 0.3跑完你会亲眼看到意思相近的两句相似度明显更高虽然它们一个字都不一样。这就是“机器理解意思”的实现方式一点都不神秘。这段用到了 numpy如果没装执行 pip install numpy 就行。四、一个新手必知的坑Embedding 的模型和对话的模型是两回事别搞混。对话模型负责说话deepseek-chat 这类Embedding 模型专门负责把文字变成向量名字通常带 embedding 或 bge 之类。有些平台这两个是分开的你需要单独看文档确认模型名有的平台甚至要单独开通。另外生成向量和检索必须用同一个 Embedding 模型。如果存库时用的是 A 模型查询时换了 B 模型两边的坐标系都不一样算出来的距离毫无意义。这个坑新手很容易踩因为报错很不明显只是搜索结果乱。五、为什么这一篇值得花一天因为“向量检索”是现代 AI 应用的基础技术之一它不是 RAG 独有的搜图、搜视频本质是把图片也变成向量推荐系统算的是用户和商品在向量空间里的距离去重和聚类也是靠算相似度你今天搞懂的这个思路以后遇到很多技术都能对号入座。面试时被问到“RAG 怎么检索的”你能从“把意思变成坐标再找最近的邻居”讲起比背术语强得多。今天的作业跑一遍上面的代码试试你自己想测的三句话把两两的相似度数字贴到评论区。建议你测一组反例比如“我要请假”和“我想请几天假”看看相似度是多少感受一下这个方法的靠谱程度。明天预告Day 17《ChromaDB 上手给本地文档建一个“外挂大脑”》。今天学会了怎么把文字变坐标明天就有地方存它们了。ChromaDB 是最好上手的向量数据库轻量、不用装服务、几行代码就能用。明天我们把一批文档真的塞进去并且实现“提问就返回最相关的段落”。————————————————*系列目录30天从零开始学AI应用 开发