用 Milvus 构建向量检索实战
作者:程序员马丁
note
Ragent AI —— 从 0 到 1 纯手工打造企业级 Agentic RAG,拒绝 Demo 玩具!AI 时代,助你拿个offer。
向量:让计算机理解语义
1. 什么是向量
别被向量这个词吓到,它其实很简单:向量就是一组有序的数字。
举个例子,如果我们想用数字来描述一个人:
张三 = [身高175cm, 体重70kg, 年龄25岁]
= [175, 70, 25]
这个 [175, 70, 25] 就是张三的"向量",它是一个 3 维向量(因为有 3 个数字)。
同样的道理,我们也可以用一组数字来描述一段文字的"语义":
"今天天气真好" = [0.12, -0.34, 0.78, ..., 0.56] // 假设有 1024 个数字
"今天阳光明媚" = [0.11, -0.32, 0.80, ..., 0.55] // 数字很接近!
"明天股票大跌" = [-0.67, 0.89, -0.12, ..., -0.45] // 数字差很远
关键点来了:
语义相近的文字,转成向量后,这些数字也会很接近。
2. Embedding:把文字变成向量
那谁来负责把文字转成这一串数字呢?答案是 Embedding 模型(也叫"嵌入模型")。
你可以把 Embedding 模型理解成一个"翻译官":
- 输入:一段文字
- 输出:一组数字(向量)

作为工程师,你不需要关心模型内部怎么计算的,只需要知道:
- 调用 API 或者本地模型
- 传入文字,拿到向量
- 向量维度是固定的(比如 1024 维或 4096 维等)
3. 向量相似度搜索
有了向量,我们就可以用数学方法计算"两段文字的语义有多接近"。
这就是向量相似度搜索的核心思路:
- 建库阶段:把所有文档都转成向量,存起来
- 查询阶段:把用户问题也转成向量,找出最相似的文档向量

三种相似度度量方式
计算两个向量"有多接近",有几种不同的方法。你不需要记住公式,只要知道什么场景用什么方法就行。
1. L2(欧氏距离)
一句话理解:两点之间的直线距离。
向量A = [1, 2]
向量B = [4, 6]
L2距离 = √[(4-1)² + (6-2)²] = 5
特点:
- 数值越小,表示越相似
- 对向量的"长度"敏感