向量数据库学习笔记(1) —— 基础概念
一、 嵌入模型 Embedding Models
嵌入模型是将复杂数据(如文本、图像、音频等)转换为向量表示的机器学习模型
1. 核心概念
-
嵌入(Embedding):将高维、非结构化的数据映射到低维、稠密的向量空间
-
向量表示:输出固定长度的数值向量(如256维、768维等)
-
语义保留:相似的数据在向量空间中距离相近
2. 嵌入模型案例
将狗向量化,每一个比较标准即是一个向量维度,例如下图是一个二维向量
当比较标准越多,对向量的比较(相似度、区分度)也就越高,例如下图是一个高维向量
3. 常见嵌入模型类型
依此标准,万物皆可向量化,例如文字、图片、音频、视频、多模态数据,均可以有自己的标准实现向量化。
嵌入模型将万物向量化,而向量数据库就用于存储、比较这些向量数据。
4. 向量存储案例
二、 向量的比较方法
1. 与普通数据库的差异
与普通数据库的“精确”匹配不同,向量比的是“相似性”。
例如我想搜索“广州”
- 普通数据库查询写法只能是 ='广州' 或者 like '%广州%'
- 向量搜索 输入可以是 “早茶”、“白云山”、“羊城”,返回结果依然有广州
2. 暴力搜索(平坦搜索)
即逐一比较,这是唯一能真正做到精确比较方法。
如果我们要求精确返回最相似的 top k个值,专业术语叫做 k-最近邻搜索 (k-Nearest Neighbors Search, k-NN Search),然而,对于高维向量而言,这不现实也没必要。
使用近似算法牺牲少量精度换取显著性能提升,是实际向量数据库中最常用的实现方式,专业术语叫做 近似最近邻搜索(Approximate Nearest Neighbors, ANN)。
3. 聚类搜索 IVFFlat
IVFFlat 即 Inverted File with Flat Compression 是向量数据库中常用的 ANN算法,由Facebook的FAISS团队提出,专门用于高效处理大规模向量相似性搜索。
其核心是将向量分为不同的群集,找到各个群集的中心点。这样,只需将向量与各中心点比较,即可大致找到与待查询向量最近的群集,然后在群集中搜索,大幅缩小查询范围
4. 图搜索
未完待续...