什么是向量搜索?
想象一下,你在一个巨大的图书馆里找书。传统的搜索方式就像用关键词查找:你输入"编程",系统只能找到标题或描述里包含"编程"这两个字的书。
但向量搜索更聪明。它不仅能找到包含你输入关键词的内容,还能找到意思相近的内容。比如你搜索"编程",它也能找到"代码"、“软件开发”、"写程序"等相关内容。
为什么需要向量搜索?
传统搜索的局限
假设你想找一个"屏幕录制工具",但你输入的是"recorder"(录制器)。传统的文本搜索可能找不到,因为产品描述里写的是"screen recorder"(屏幕录制器),而不是你输入的"recorder"。
向量搜索的优势
向量搜索能够理解:
- “recorder” 和 “screen recorder” 是相关的
- “编程” 和 “写代码” 意思相近
- “AI工具” 和 “人工智能应用” 是同一类东西
向量搜索是如何工作的?
第一步:把文字变成数字(向量化)
电脑无法直接理解文字,但它很擅长处理数字。所以我们需要把文字转换成数字,这个过程叫做"向量化"。
举个例子:
假设我们要把"屏幕录制工具"这句话转换成数字。AI模型会分析这句话的含义,然后生成一串数字,比如:
[-0.055, 0.033, -0.042, -0.041, -0.041, 0.020, 0.071, ...]这串数字有384个(这个数字叫做"维度"),每个数字都代表了这句话的某个特征。
第二步:建立产品向量库
在搜索之前,我们需要先把所有产品的描述都转换成向量,建立一个"向量库"。
就像这样:
| 产品名称 | 产品描述 | 向量(简化版) |
|---|---|---|
| Onyx | Free, local-first 4K screen recorder | [0.074, 0.004, -0.022, …] |
| 产品A | AI编程助手 | [0.123, -0.045, 0.067, …] |
| 产品B | 视频编辑工具 | [-0.089, 0.156, -0.023, …] |
每个产品都有一个384维的向量,就像每个产品都有一个"数字身份证"。
第三步:计算相似度
当你输入搜索词(比如"recorder")时:
把你的搜索词也转换成向量
你的搜索:"recorder" 转换后的向量:[0.045, -0.009, 0.051, ...]计算你的向量和每个产品向量的相似度
这里用到一个叫做"余弦相似度"的数学方法。简单理解就是:两个向量的方向越接近,相似度越高。
生活化的比喻:
- 想象两个箭头,如果它们指向同一个方向,相似度就高
- 如果它们指向相反的方向,相似度就低(甚至是负数)
按相似度排序
相似度越高,说明产品越符合你的搜索意图。
余弦相似度:如何判断两个东西像不像?
简单理解
余弦相似度是一个0到1之间的数字(有时也可能是-1到1):
- 1.0= 完全一样
- 0.8-0.9= 非常相似
- 0.5-0.7= 比较相似
- 0.0= 完全不相关
- 负数= 意思相反
计算过程(简化版)
虽然计算过程涉及数学,但我们可以用简单的例子理解:
假设有两个向量:
- 向量A:[1, 2, 3]
- 向量B:[2, 4, 6]
计算步骤:
- 对应位置相乘后相加:1×2 + 2×4 + 3×6 = 2 + 8 + 18 = 28
- 计算每个向量的"长度"(范数)
- 用第一步的结果除以两个长度的乘积
结果越接近1,说明两个向量越相似。
实际应用示例
场景:搜索"屏幕录制工具"
步骤1:输入搜索词
用户输入:"recorder"步骤2:转换为向量
AI模型分析"recorder"的含义 生成向量:[0.045, -0.009, 0.051, 0.003, -0.113, ...] (共384个数字)步骤3:与产品向量库比较
系统会计算你的搜索向量与所有产品向量的相似度:
| 产品 | 相似度 | 说明 |
|---|---|---|
| Onyx (屏幕录制工具) | 0.365 | 很相关! |
| 产品A | 0.205 | 有点相关 |
| 产品B | 0.194 | 不太相关 |
| … | … | … |
步骤4:返回结果
系统会按照相似度从高到低排序,把最相关的产品展示给你。
为什么有时候搜索结果不理想?
1. 拼写错误
例子:你输入"recoder"(拼写错误),但产品描述里写的是"recorder"(正确拼写)
- 传统搜索:找不到(因为拼写不匹配)
- 向量搜索:可能找到,但相似度会降低(因为AI能理解这是拼写错误)
解决方案:检查拼写,使用正确的单词
2. 语义差异
例子:你搜索"recoder",但AI可能把它理解为"重新编码"而不是"录制器"
- 相似度可能是负数(-0.007),说明意思完全相反
- 排名会很低(第487位)
解决方案:使用更准确的搜索词,比如"screen recorder"而不是"recorder"
3. 向量质量
如果向量生成得不好,相似度计算就不准确。这通常是因为:
- 使用的AI模型不够好
- 产品描述不够详细
- 向量没有正确归一化(标准化)
向量归一化:为什么重要?
什么是归一化?
归一化就是把向量的"长度"调整到1。就像把不同长度的尺子都统一成标准长度。
为什么要归一化?
想象两个产品:
- 产品A的描述很长,向量"长度"是10
- 产品B的描述很短,向量"长度"是5
如果不归一化,描述长的产品总是会得到更高的相似度,这不公平。
归一化后,所有向量的长度都是1,这样比较才公平。
如何检查是否归一化?
计算向量的"范数"(长度):
- 如果范数 = 1.0,说明已经归一化
- 如果范数 ≠ 1.0,说明需要归一化
向量搜索 vs 传统搜索
| 特性 | 传统搜索 | 向量搜索 |
|---|---|---|
| 匹配方式 | 关键词完全匹配 | 语义相似匹配 |
| 拼写错误 | 找不到 | 可能找到 |
| 同义词 | 找不到 | 能找到 |
| 理解上下文 | 不能 | 可以 |
| 计算成本 | 低 | 高 |
| 准确性 | 依赖关键词 | 依赖向量质量 |
总结
向量搜索就像给电脑装了一个"理解语言"的大脑:
- 把文字变成数字:用AI模型把文字转换成向量
- 建立向量库:把所有产品都转换成向量存储起来
- 计算相似度:用余弦相似度找出最相关的产品
- 返回结果:按相似度排序,展示最匹配的产品
虽然技术很复杂,但使用起来很简单:你只需要输入你想找什么,系统就能理解你的意图,找到相关的产品。
常见问题
Q: 为什么搜索"recorder"找不到"screen recorder"?
A: 可能是因为:
- 拼写错误(“recoder” vs “recorder”)
- AI模型把"recoder"理解成了其他意思
- 相似度太低,被过滤掉了
建议:使用更准确的搜索词,比如"screen recorder"
Q: 相似度多少才算匹配?
A: 通常:
- > 0.3:比较相关
- > 0.5:很相关
- > 0.7:非常相关
- < 0.1:可能不相关
但具体阈值取决于你的应用场景。
Q: 向量搜索一定比传统搜索好吗?
A: 不一定。向量搜索适合:
- 需要理解语义的场景
- 处理同义词和拼写变化
- 需要找到"意思相近"的内容
传统搜索适合:
- 精确匹配关键词
- 需要快速响应
- 资源有限的情况
最好的方案是结合使用:先用向量搜索找到相关结果,再用传统搜索精确匹配。
本文基于 Product Hunt 每日热榜的向量搜索https://product-hunt-daily.vercel.app/实现编写,旨在帮助非技术用户理解向量搜索的基本原理。