今天学习了向量数据库
(guangzhengli.com),学习笔记总结如下:
向量数据库相似性搜索主要思想是通过两种方式提高搜索效率:
1. 减少向量大小——通过降维或减少表示向量值的长度。
2. 缩小搜索范围——可以通过聚类或将向量组织成基于树形、图形结构来实现,并限制搜索范围仅在最接近的中进行,或者通过最相似的分支进行过滤。
向量数据库主要会用到的一些搜索算法(搜索算法都是在速度和质量还有内存上做一个权衡,这些算法也被称为近似最相邻Approximate Nearest Neighbor,即ANN算法):
1. 聚类算法k-means,将向量拆分到K个聚类中心,通过先识别聚类中心来减小搜索范围。
2. 为了避免聚类边界处的最相似向量漏掉(搜索条件与搜索结果落入2个相邻的聚类中),引入的Faiss算法,在K-means基础上设置nprobe,即搜索最相近的n个聚类
3. 为了减少聚类算法所需维护的内存(聚类和向量、向量中心索引),引入了乘机量化算法(Product Quantization,即PQ):
1) 量化就是常见的有损压缩。通过码表维护向量到聚类中心的转换。
2)
针对高维向量的维度灾难,将高维向量拆分为多个低维子向量,每个子向量做聚类和码表,每个子向量分别搜索,最后将结果通过笛卡尔积组合还原回原始向量。
4. Hierarchical Navigable Small Worlds (HNSW)算法,用构建树或图的方式实现ANN。
1) 在向量入库的时候先找到它最相临的向量,将他们连接起来,构成图
2) 采用类似跳表的思想,将向量的连接图分层,约上层的节点越少,最底层包含所有节点
3) 通过上层图的搜索和逐层向下搜索来缩小搜索范围,用空间换时间。
5. 局部敏感哈希LSH(
向量数据库相似性搜索主要思想是通过两种方式提高搜索效率:
1. 减少向量大小——通过降维或减少表示向量值的长度。
2. 缩小搜索范围——可以通过聚类或将向量组织成基于树形、图形结构来实现,并限制搜索范围仅在最接近的中进行,或者通过最相似的分支进行过滤。
向量数据库主要会用到的一些搜索算法(搜索算法都是在速度和质量还有内存上做一个权衡,这些算法也被称为近似最相邻Approximate Nearest Neighbor,即ANN算法):
1. 聚类算法k-means,将向量拆分到K个聚类中心,通过先识别聚类中心来减小搜索范围。
2. 为了避免聚类边界处的最相似向量漏掉(搜索条件与搜索结果落入2个相邻的聚类中),引入的Faiss算法,在K-means基础上设置nprobe,即搜索最相近的n个聚类
3. 为了减少聚类算法所需维护的内存(聚类和向量、向量中心索引),引入了乘机量化算法(Product Quantization,即PQ):
4. Hierarchical Navigable Small Worlds (HNSW)算法,用构建树或图的方式实现ANN。
5. 局部敏感哈希LSH(
