NNdescent
NNDescent算法算法的目标是为数据集中每个点构建一个近似的 k-近邻图(k-NN graph),即每个点维护 k 个最近邻的 id。 为什么需要近似:如果对 n 个点做精确 kNN(暴力)代价是 $O(n^2 d)$,数据很大时不可行;NNDescent 用局部传播,大幅减少距离计算量,但通常能得到高质量近邻。 NNDescent的主要思想是“邻居的邻居也是邻居”,想象一下,你要在一个陌生的城市里找到最好的餐馆。你不会盲目地随机寻找,而是会: 先问几个朋友他们喜欢的餐馆(初始随机邻居) 然后问这些餐馆的老板,他们推荐附近还有什么好餐馆(探索邻居的邻居) 不断重复这个过程,你的餐馆清单就会越来越优质 这就是NNDescent算法的核心思想——通过朋友的朋友来发现高质量的关系。 算法流程: 初始化:为每个点随机选一些邻居(不是目标k,而是初始化选多一些 l),这些作为候选集。 迭代传播:重复下面过程多次(iter): 对每个点 i,从它的候选邻居中选出“new”和“old”(new 是最近一次新加入的候选),并对这些邻居做成对比较(neighbor-of-neighbor...
向量数据库简介
向量数据库简介向量数据库(Vector Database)是一种专门用于存储、管理和检索高维向量(High-Dimensional Vectors)的数据库。它与我们熟悉的传统关系型数据库(如 MySQL)有根本性的不同,传统数据库处理的是结构化的表格数据,通过精确匹配或范围查询来检索数据。而向量数据库处理的是非结构化的数据(如图片、文本、音频、视频)转换而来的向量,并通过计算向量之间的“相似度”来检索数据。 核心思想:将非结构化数据转换为计算机可以理解和处理的数据形式(向量),并通过相似性搜索来找到“意思上”或“内容上”相近的数据。向量数据库的核心价值就是实现高效的“相似性搜索”(Similarity Search)或“最近邻搜索”(Nearest Neighbor Search)。 人工智能和机器学习(AI/ML)的发展使得我们能够建立一种称为嵌入模型(Embedding Model)的机器学习模型。嵌入模型将各种类型的数据编码为向量,以便捕捉资产的意义和上下文。这使得我们能够通过搜索相邻的数据点来找到相似的资产。向量搜索方法提供了独特的体验,例如用智能手机拍照然后...