向量搜索库
向量搜索库是一种专门用于存储、索引和查询高维向量的数据库,高维向量是特征或属性的数学表示。向量搜索库可以用于实现向量相似性搜索,即根据距离度量找出最接近的向量。向量搜索库可以应用于各种场景,如推荐系统、图像检索、语音识别、自然语言处理等。
目前,有几款比较流行的开源向量搜索库,如Faiss、Milvus、Proxima、Vearch、Jina等。它们各有特点和优势,具体可以参考以下链接:
- Faiss:https://github.com/facebookresearch/faiss
- Milvus:https://milvus.io/
- Proxima:https://github.com/proximasearch/proxima
- Vearch:https://github.com/vearch/vearch
- Jina:https://github.com/jina-ai/jina
向量搜索库的原理是什么?
向量搜索库的原理是利用一种索引结构来存储和查询高维向量,高维向量是特征或属性的数学表示。向量搜索库的目的是找出与给定向量最相似的向量,即最近邻搜索。向量搜索库的核心问题是如何减少候选向量集和降低单个向量计算的复杂度。
一般来说,向量搜索库有两种索引结构:精确索引和近似索引。精确索引是指能够保证找到真正的最近邻的索引,如哈希表、树结构等;近似索引是指能够在牺牲一定精度的情况下,提高搜索效率的索引,如局部敏感哈希、乘积量化、倒排多索引等。
FAISS Annoy HNSW SPTAG Proxima vearch Jina
FAISS
FAISS(Facebook AI Similarity Search)是一个开源库,针对高维空间中的海量数据,提供了高效且可靠的检索方法。它可以让开发者快速地搜索出相似的多媒体文档的嵌入向量。它解决了传统的基于哈希的搜索引擎的局限性,提供了更可扩展的相似度搜索功能。FAISS用C++编写,并提供与Numpy完美衔接的Python接口。FAISS支持十亿级别向量的搜索,是目前最为成熟的近似近邻搜索库。
简单来说,Faiss的工作,就是把我们自己的候选向量集封装成一个index数据库,它可以加速我们检索相似向量TopK的过程(https://zhuanlan.zhihu.com/p/357414033)
FAISS 的核心原理是什么?
FAISS 的核心原理其实就两个部分:Product Quantizer (PQ) 和 Inverted File System (IVF)。¹³
- PQ 是一种向量量化方法,它将高维的向量分解成若干个低维的子向量,并对每个子向量进行聚类,得到一个码本(codebook)。然后,每个原始向量就可以用若干个码本中的编码来表示,从而实现数据压缩和降维。⁵⁶
- IVF 是一种倒排索引结构,它将向量空间划分成若干个单元(cell),并将每个单元中的向量存储在一个列表中。然后,对于一个查询向量,只需要在它所属的单元和相邻的单元中进行搜索,从而减少搜索范围和时间。¹⁶
FAISS 还支持其他的向量检索算法,如 HNSW、LSH 等,但是它们都是基于 PQ 和 IVF 的改进或扩展。²⁴
源: 与必应的对话, 5/2/2023 (1) 一文搞懂faiss计算 - 知乎 - 知乎专栏. https://zhuanlan.zhihu.com/p/133210698. (2) Faiss-facebook开源框架入门教程 - 知乎 - 知乎专栏. https://zhuanlan.zhihu.com/p/164888905. (3) faiss原理(Product Quantization) - 知乎 - 知乎专栏. https://zhuanlan.zhihu.com/p/534004381. (4) Faiss流程与原理分析 - yhzhou - 博客园. https://www.cnblogs.com/yhzhou/p/10568728.html. (5) 搜索召回 | Facebook: 亿级向量相似度检索库Faiss原理+应用 - 知乎. https://zhuanlan.zhihu.com/p/432317877. (6) 浅析Faiss在推荐系统中的应用及原理 - 知乎 - 知乎专栏. https://zhuanlan.zhihu.com/p/138311261.
FAISS有哪些应用场景?
FAISS有很多应用场景,主要是在需要对海量的高维向量进行相似度搜索或聚类的情况下。例如,在推荐系统中,可以用FAISS对用户和物品的嵌入向量进行快速匹配,从而实现个性化推荐;在人脸识别中,可以用FAISS对人脸特征向量进行实时检索,从而实现人脸识别;在自然语言处理中,可以用FAISS对文本或词语的嵌入向量进行相似度计算,从而实现文本分类、语义检索、文本生成等任务。
FAISS如何构建索引?
向量数据库 FAISS 是 Facebook 开源的一个高效的向量检索框架,它可以用于构建大规模的相似度搜索引擎。¹
要使用 FAISS 构建索引,首先需要选择一个合适的索引类型,比如 Flat、IVF、PQ 等,然后调用 index_factory 函数来创建索引对象。²
接下来,需要对索引进行训练和添加向量。训练是为了学习向量空间的分布,以便进行压缩和划分。添加向量是将原始的向量数据存储到索引中。³
训练和添加向量的代码示例如下:
import faiss
import numpy as np
# 生成一些随机向量
d = 64 # 向量维度
n = 10000 # 向量数量
xb = np.random.random((n, d)).astype('float32')
# 创建一个 IVF + PQ 的索引
index = faiss.index_factory(d, "IVF64,PQ8")
# 训练索引
index.train(xb)
# 添加向量
index.add(xb)
构建好索引后,就可以使用 search 或 search_and_reconstruct 方法来进行查询了。²
源: 与必应的对话, 5/2/2023 (1) 一文入门Facebook开源向量检索框架Faiss - 知乎 - 知乎专栏. https://zhuanlan.zhihu.com/p/266589272. (2) Faiss入门及应用经验记录 - 知乎 - 知乎专栏. https://zhuanlan.zhihu.com/p/357414033. (3) 搜索召回 | Facebook: 亿级向量相似度检索库Faiss原理+应用 - 知乎. https://zhuanlan.zhihu.com/p/432317877. (4) 笔记︱几款多模态向量检索引擎:Faiss 、milvus、Proxima、vearch、Jina等 - 知乎. https://zhuanlan.zhihu.com/p/364923722. (5) 向量数据库入坑:传统文本检索方式的降维打击,使用 Faiss 实现向量语义检索 - 知乎. https://zhuanlan.zhihu.com/p/563128188. (6) 向量检索速度慢?看看这个Faiss索引实操 - 知乎. https://zhuanlan.zhihu.com/p/530958094.
FAISS与其他相似度搜索库有什么区别?
FAISS 与其他相似度搜索库的区别主要有以下几点:
- FAISS 是 Facebook AI 团队开源的一个专注于向量检索和聚类的库,它支持多种向量检索算法,如 Flat、IVF、PQ、HNSW 等,可以根据不同的需求选择合适的算法。¹²
- FAISS 支持 CPU 和 GPU 计算,可以提高暴力搜索和 IVF 等算法的性能。¹⁴
- FAISS 支持 Python 和 C++ 调用,可以与 Numpy 完美衔接。²⁵
- FAISS 不支持动态更新索引,需要重新训练和添加向量。³⁶
- FAISS 不支持自定义的相似度度量,只支持欧式距离和内积。³⁶
- FAISS 不支持多模态的向量检索,如文本、图像、音频等。⁴⁶
其他相似度搜索库有:
- Milvus 是一款开源的特征向量相似度搜索引擎,它集成了 FAISS、SPTAG 等开源库,并提供了更友好的 API 和界面,支持动态更新索引和多模态检索。⁴
- ScaNN 是 Google 开源的一个高效的近似最近邻搜索库,它使用了一种新颖的数据压缩和分区技术,可以在保证高召回率的同时提高检索速度和降低内存占用。⁴
- Jina 是一个基于神经网络的云原生搜索框架,它支持多种数据类型和模型,可以快速构建端到端的搜索应用。⁴
源: 与必应的对话, 5/2/2023 (1) 搜索召回 | Facebook: 亿级向量相似度检索库Faiss原理+应用 - 知乎. https://zhuanlan.zhihu.com/p/432317877. (2) FAISS 教程 - 知乎. https://zhuanlan.zhihu.com/p/320653340. (3) 笔记︱几款多模态向量检索引擎:Faiss 、milvus、Proxima、vearch、Jina等 - 知乎. https://zhuanlan.zhihu.com/p/364923722. (4) Faiss入门及应用经验记录 - 知乎 - 知乎专栏. https://zhuanlan.zhihu.com/p/357414033. (5) 使用Faiss进行海量特征的相似度匹配 - 知乎 - 知乎专栏. https://zhuanlan.zhihu.com/p/210736523. (6) 一文搞懂faiss计算 - 知乎 - 知乎专栏. https://zhuanlan.zhihu.com/p/133210698.
FAISS有什么优缺点?
FAISS 的优势和缺点主要取决于它的索引类型和参数设置。¹²³
一般来说,FAISS 的优势有:
- 支持多种向量检索算法,如 Flat、IVF、PQ、HNSW 等,可以根据不同的需求选择合适的算法。
- 支持数据压缩和降维,可以减少空间占用和加快检索速度。
- 支持 GPU 加速,可以提高暴力搜索和 IVF 等算法的性能。
- 支持分布式索引构建和查询,可以处理海量的向量数据。
FAISS 的缺点有:
- 不支持所有的向量检索算法在 GPU 上运行,如 HNSW 等。
- 不支持动态更新索引,需要重新训练和添加向量。
- 不支持自定义的相似度度量,只支持欧式距离和内积。
- 不支持多模态的向量检索,如文本、图像、音频等。
源: 与必应的对话, 5/2/2023 (1) Faiss入门及应用经验记录 - 知乎 - 知乎专栏. https://zhuanlan.zhihu.com/p/357414033. (2) 一文搞懂faiss计算 - 知乎 - 知乎专栏. https://zhuanlan.zhihu.com/p/133210698. (3) 有人用过faiss吗? - 知乎. https://www.zhihu.com/question/310799733. (4) Faiss on GPU/CPU - 知乎. https://zhuanlan.zhihu.com/p/438753577. (5) 基于文本语义的智能问答系统 - 知乎 - 知乎专栏. https://zhuanlan.zhihu.com/p/309736804. (6) Faiss在推荐系统中的应用 - 知乎 - 知乎专栏. https://zhuanlan.zhihu.com/p/279163893.
Annoy
Annoy(Approximate Nearest Neighbors Oh Yeah)是一个带有Python绑定的C++库,用于搜索空间中给定查询点的近邻点¹。它还会创建基于文件的只读数据结构,并将其映射到内存中,以便许多进程可以共享相同的数据¹。Annoy是一种近似最近邻搜索算法,它通过构建多颗随机切分的二叉树来加速查询过程³。Annoy不支持批量插入和查询,仅支持一种索引类型,单步查询速度快²。
源: 与必应的对话, 5/2/2023 (1) 一文带你了解Annoy! - 知乎 - 知乎专栏. https://zhuanlan.zhihu.com/p/109633593. (2) 近似最近邻搜索算法 ANNOY(APPROXIMATE NEAREST NEIGHBORS OH YEAH) - 知乎. https://zhuanlan.zhihu.com/p/454511736. (3) 推荐系统的向量检索工具: Annoy & Faiss - 知乎 - 知乎专栏. https://zhuanlan.zhihu.com/p/402823379. (4) 笔记︱几款多模态向量检索引擎:Faiss 、milvus、Proxima、vearch、Jina等 - 知乎. https://zhuanlan.zhihu.com/p/364923722. (5) 超平面多维近似向量查找工具annoy使用总结 - 知乎. https://zhuanlan.zhihu.com/p/50604120. (6) 强大的向量数据库:Milvus - 知乎 - 知乎专栏. https://zhuanlan.zhihu.com/p/405186060.
为什么要使用Annoy?
使用Annoy的原因是它可以快速地在高维空间中搜索给定查询点的近邻点,而不需要遍历所有的数据点²。Annoy还可以创建基于文件的只读数据结构,并将其映射到内存中,以便许多进程可以共享相同的数据¹⁵。Annoy还可以最小化内存占用,使得索引非常小⁵。Annoy支持多种距离度量,如欧氏距离、曼哈顿距离、余弦距离、汉明距离或点积距离⁵。
源: 与必应的对话, 5/2/2023 (1) K近邻算法哪家强?KDTree、Annoy、HNSW原理和使用方法介绍 - 知乎. https://zhuanlan.zhihu.com/p/152522906. (2) 一文带你了解Annoy! - 知乎 - 知乎专栏. https://zhuanlan.zhihu.com/p/109633593. (3) annoy向量检索算法_annoy算法_I am stupid的博客-CSDN博客. https://blog.csdn.net/zhongqiqianga/article/details/103484987. (4) 超平面多维近似向量查找工具annoy使用总结 - 知乎. https://zhuanlan.zhihu.com/p/50604120. (5) ANNOY & HNSW - 知乎. https://zhuanlan.zhihu.com/p/432883160. (6) 机器/深度学习Milvus、Annoy、Vearch、sk-dist介绍 - CSDN博客. https://blog.csdn.net/yimenglin/article/details/105359172.
Annoy和Faiss有什么区别?
Annoy和Faiss的区别主要有以下几点¹:
- Annoy不支持批量插入和查询,仅支持一种索引类型,单步查询速度快;Faiss支持批量插入和查询,支持100%召回、量化压缩等多种索引类型,并且能够使用GPU加速¹。
- Annoy通过构建多颗随机切分的二叉树来加速查询过程,Faiss通过对向量进行聚类和量化来降低内存占用和提高检索效率²⁴。
- Annoy可以创建基于文件的只读数据结构,并将其映射到内存中,以便许多进程可以共享相同的数据;Faiss可以在磁盘上生成索引,以便为不适合内存的大型数据集建立索引⁵。
源: 与必应的对话, 5/3/2023 (1) 推荐系统的向量检索工具: Annoy & Faiss - 知乎 - 知乎专栏. https://zhuanlan.zhihu.com/p/402823379. (2) 推荐系统的向量检索工具: Annoy & Faiss - CSDN博客. https://blog.csdn.net/sgyuanshi/article/details/119878434. (3) Faiss入门及应用经验记录 - 知乎 - 知乎专栏. https://zhuanlan.zhihu.com/p/357414033. (4) 一文搞懂faiss计算 - 知乎 - 知乎专栏. https://zhuanlan.zhihu.com/p/133210698. (5) 从sklearn-knn到faiss到annoy到milvus到kgraph,etc(待续) - 知乎. https://zhuanlan.zhihu.com/p/408172743. (6) Red Arcade - YouTube. https://www.youtube.com/channel/UCHZZo1h1cI1vg4I9g2RqOUQ.
Annoy适用于哪些场景?
Annoy适用于以下场景¹²³:
- 需要在高维空间中快速地搜索给定查询点的近邻点,而不需要遍历所有的数据点;
- 需要创建基于文件的只读数据结构,并将其映射到内存中,以便许多进程可以共享相同的数据;
- 需要最小化内存占用,使得索引非常小;
- 需要支持多种距离度量,如欧氏距离、曼哈顿距离、余弦距离、汉明距离或点积距离;
- 适用于推荐系统、搜索引擎、图像检索、自然语言处理等领域。
源: 与必应的对话, 5/3/2023 (1) 推荐系统的向量检索工具: Annoy & Faiss - 知乎 - 知乎专栏. https://zhuanlan.zhihu.com/p/402823379. (2) Annoy小结 - 知乎. https://zhuanlan.zhihu.com/p/94941667. (3) 一文带你了解Annoy! - 知乎 - 知乎专栏. https://zhuanlan.zhihu.com/p/109633593. (4) 推荐系统的向量检索工具: Annoy & Faiss - CSDN博客. https://blog.csdn.net/sgyuanshi/article/details/119878434. (5) 笔记︱几款多模态向量检索引擎:Faiss 、milvus、Proxima、vearch、Jina等 - 知乎. https://zhuanlan.zhihu.com/p/364923722. (6) 应用场景是什么?怎样判断、描述一个产品的应用场景? - 知乎. https://www.zhihu.com/question/20515576.
HNSW
向量搜索库 HNSW 是一种基于图的近似最近邻搜索算法,它利用分层图提高图的导航性,减少无效计算,从而降低搜索时间¹。HNSW 的全称是 Hierarchical Navigable Small World,即“可导航小世界网络”²。它的基本思想是在不同的层次上构建不同密度的图,然后从高层向低层搜索,最终找到与查询向量最相似的目标向量⁴。HNSW 是一种高效且通用的向量索引算法,可以用于多种场景,如图像检索、文本检索、推荐系统等³。
源: 与必应的对话, 5/3/2023 (1) Milvus 揭秘| 向量索引算法HNSW和NSG的比较 - 知乎. https://zhuanlan.zhihu.com/p/105594786. (2) ANN召回算法之HNSW - 知乎 - 知乎专栏. https://zhuanlan.zhihu.com/p/379372268. (3) HNSW学习笔记 - 知乎. https://zhuanlan.zhihu.com/p/80552211. (4) 笔记︱几款多模态向量检索引擎:Faiss 、milvus、Proxima、vearch、Jina等 - 知乎. https://zhuanlan.zhihu.com/p/364923722. (5) HNSW算法开源库对比 - 知乎 - 知乎专栏. https://zhuanlan.zhihu.com/p/511599309. (6) 向量数据库是如何检索的?基于 Feder 的 HNSW 可视化实现 - 知乎. https://zhuanlan.zhihu.com/p/560557044.
HNSW 核心原理
HNSW的核心原理是利用分层图来构建和搜索向量索引。分层图的思想是在不同的层次上构建不同密度的图,每一层都是一个可导航小世界网络,即任意两个节点之间都可以通过少数几步到达²。HNSW的构建过程是从底层开始,随机地为每个节点分配一个层数,然后在每一层中用一种贪心的启发式算法为节点找到合适的邻居,并连接起来⁴。HNSW的搜索过程是从最高层开始,从一个固定的入口节点出发,沿着与查询向量最相似的方向移动,直到达到局部最优,然后切换到下一层,重复这个过程,直到到达最底层,最后返回与查询向量最相似的K个节点¹。
源: 与必应的对话, 5/3/2023 (1) HNSW的基本原理及使用 - 知乎 - 知乎专栏. https://zhuanlan.zhihu.com/p/264832755. (2) ANN召回算法之HNSW - 知乎 - 知乎专栏. https://zhuanlan.zhihu.com/p/379372268. (3) HNSW算法原理 - 知乎. https://zhuanlan.zhihu.com/p/441470968. (4) HNSW学习笔记 - 知乎. https://zhuanlan.zhihu.com/p/80552211. (5) 一文看懂HNSW算法理论的来龙去脉 - CSDN博客. https://blog.csdn.net/u011233351/article/details/85116719. (6) NSW Health. https://www.health.nsw.gov.au/.
HNSW如何确定每个节点的层数?
HNSW如何确定每个节点的层数是通过一种随机的方式。具体来说,HNSW为每个节点分配一个层数L,L的概率分布是一个几何分布,即P(L=l) = 1/2^(l+1),其中l是从0开始的非负整数²。这样做的目的是使得高层的图更稀疏,低层的图更密集,从而提高搜索效率¹。HNSW的最高层是L_max,它是动态变化的,随着节点的插入而增加⁴。
源: 与必应的对话, 5/3/2023 (1) HNSW学习笔记 - 知乎. https://zhuanlan.zhihu.com/p/80552211. (2) HNSW的基本原理及使用 - 知乎 - 知乎专栏. https://zhuanlan.zhihu.com/p/264832755. (3) ANN召回算法之HNSW - 知乎 - 知乎专栏. https://zhuanlan.zhihu.com/p/379372268. (4) HNSW算法原理 - 知乎. https://zhuanlan.zhihu.com/p/441470968. (5) 相似度检测——hnsw参数选择 - 知乎 - 知乎专栏. https://zhuanlan.zhihu.com/p/98028479. (6) 一文看懂HNSW算法理论的来龙去脉 - CSDN博客. https://blog.csdn.net/u011233351/article/details/85116719.
HNSW 有什么优势和缺点?
HNSW是如何构建分层图的是通过以下步骤:
- 首先,为每个节点随机分配一个层数,然后从底层开始,按照插入顺序将节点加入到图中¹。
- 其次,在每一层中,为每个节点找到最近的efConstruction个邻居,然后将节点和邻居相互连接¹。邻居的选择是通过一种贪心的启发式算法进行的,即从一个固定的入口节点出发,沿着与插入节点最相似的方向移动,直到达到局部最优⁴。
- 最后,当所有节点都插入完毕后,再对每一层的图进行优化,删除一些多余的边,使得图更加稀疏和高效²。优化的方法是对每个节点进行局部修剪,即如果一个节点的邻居中有两个节点之间的距离小于该节点与它们的距离,那么就删除该节点与其中一个邻居的边³。
源: 与必应的对话, 5/3/2023 (1) HNSW的基本原理及使用 - 知乎 - 知乎专栏. https://zhuanlan.zhihu.com/p/264832755. (2) HNSW学习笔记 - 知乎. https://zhuanlan.zhihu.com/p/80552211. (3) ANN召回算法之HNSW - 知乎 - 知乎专栏. https://zhuanlan.zhihu.com/p/379372268. (4) Milvus 揭秘| 向量索引算法HNSW和NSG的比较 - 知乎. https://zhuanlan.zhihu.com/p/105594786. (5) K近邻算法哪家强?KDTree、Annoy、HNSW原理和使用方法介绍 - 知乎. https://zhuanlan.zhihu.com/p/152522906. (6) 一文看懂HNSW算法理论的来龙去脉_hnsw图_CNU小学生的博客-CSDN博客. https://blog.csdn.net/u011233351/article/details/85116719.
HNSW 和其他向量索引算法有什么区别?
HNSW和其他向量索引算法的区别主要有以下几点:
- HNSW是一种基于图的算法,它利用分层图的结构来提高搜索效率和精度,与其他基于图的算法如KGraph、NSG、NGT等相比,HNSW的优势在于构建过程更快速,搜索过程更灵活,支持增量索引¹²。
- HNSW与基于局部敏感哈希(LSH)的算法如Annoy、FALCONN等相比,HNSW的优势在于搜索时间更短,召回率更高,内存占用更小³。LSH算法的缺点是难以处理高维数据,且需要调节很多参数⁴。
- HNSW与基于倒排索引的算法如FAISS-IVF等相比,HNSW的优势在于不需要预先聚类数据,不受数据分布的影响,不需要重新训练索引⁵。倒排索引的缺点是需要大量的内存和计算资源,且对数据分布敏感⁶。
源: 与必应的对话, 5/3/2023 (1) Milvus 揭秘| 向量索引算法HNSW和NSG的比较 - 知乎. https://zhuanlan.zhihu.com/p/105594786. (2) ANN召回算法之HNSW - 知乎 - 知乎专栏. https://zhuanlan.zhihu.com/p/379372268. (3) 高维空间最近邻逼近搜索算法评测 - 知乎 - 知乎专栏. https://zhuanlan.zhihu.com/p/37381294. (4) 论文赏析:十亿级别单机向量检索方案 DiskAnn - 知乎. https://zhuanlan.zhihu.com/p/394393264. (5) Faiss入门及应用经验记录 - 知乎 - 知乎专栏. https://zhuanlan.zhihu.com/p/357414033. (6) 「向量召回」相似检索算法——HNSW - 墨天轮 - modb. https://www.modb.pro/db/103254.
HNSW有什么缺点或局限性?
HNSW有什么缺点或局限性是一个很好的问题。HNSW虽然是一种高效且通用的向量索引算法,但是它也有一些不足之处,例如:
- HNSW的构建过程是随机的,因此每次构建的结果可能不一致,也可能不是最优的。
- HNSW的搜索过程是贪心的,因此可能会陷入局部最优,导致召回率下降。
- HNSW的参数选择是经验性的,因此需要根据不同的数据和场景进行调节,没有一个统一的标准。
- HNSW的内存占用虽然比其他基于图的算法小,但是仍然比基于倒排索引的算法大,因此在内存受限的场景下,可能无法处理大规模的数据。
HNSW如何解决这些缺点或局限性?
HNSW如何解决这些缺点或局限性是一个很有挑战的问题。目前,有一些方法可以尝试改善或缓解HNSW的不足之处,例如:
- HNSW的构建过程可以通过一些启发式的方法来提高图的质量,比如在每一层中选择更多的邻居,或者在构建完成后进行一些优化和修剪。
- HNSW的搜索过程可以通过一些策略来避免陷入局部最优,比如在每一层中选择多个候选节点,或者在搜索过程中进行一些回溯和扩展。
- HNSW的参数选择可以通过一些实验或评估来确定,比如根据数据的维度、密度、分布等特征来选择合适的参数,或者根据搜索的时间、精度、内存等指标来评估参数的效果。
- HNSW的内存占用可以通过一些技术来降低,比如使用压缩或量化等方法来减少向量的大小,或者使用磁盘或分布式等方式来存储图结构。
HNSW有没有什么优点或优势?
HNSW有没有什么优点或优势是一个很容易回答的问题。HNSW有很多优点或优势,例如:
- HNSW的构建过程是快速的,因为它不需要预先聚类数据,也不需要重新训练索引。
- HNSW的搜索过程是灵活的,因为它可以根据不同的查询需求来调整搜索参数,比如efSearch、K等。
- HNSW的支持增量索引,因为它可以动态地向图中插入新的节点,而不影响已有的节点和边。
- HNSW的适用于多种场景,因为它是一种通用的向量索引算法,可以处理任意维度和分布的数据,也可以应用于多种领域,如图像检索、文本检索、推荐系统等。
HNSW适用于什么样的数据和场景?
HNSW适用于什么样的数据和场景是一个很实用的问题。HNSW适用于以下类型的数据和场景:
- HNSW适用于高维数据,因为它可以利用分层图的结构来降低搜索的复杂度,也可以使用压缩或量化等方法来减少内存占用。
- HNSW适用于动态数据,因为它可以支持增量索引,也可以根据不同的查询需求来调整搜索参数。
- HNSW适用于相似性检索的场景,因为它可以在保证高召回率的同时,提高搜索速度和精度,也可以应用于多种领域,如图像检索、文本检索、推荐系统等。
HNSW有哪些开源实现和应用?
HNSW有哪些开源实现和应用是一个很有价值的问题。HNSW有以下一些开源实现和应用:
- HNSW有一个官方的C++库,叫做hnswlib¹,它提供了Python和Java的接口,也支持多线程和增量索引。
- HNSW也被集成到了一些其他的向量搜索引擎中,比如Milvus²,Lucene³,DiskAnn⁴等,它们提供了更多的功能和优化。
- HNSW也被应用到了一些实际的场景中,比如图像检索⁵,文本检索⁶,推荐系统等,它们展示了HNSW的高效性和通用性。
源: 与必应的对话, 5/3/2023 (1) lucene源码系列(一):HNSW实现 - 掘金 - 稀土掘金. https://juejin.cn/post/7082580555337826317. (2) Milvus 揭秘| 向量索引算法HNSW和NSG的比较 - 知乎. https://zhuanlan.zhihu.com/p/105594786. (3) 相似度检测——hnsw参数选择 - 知乎 - 知乎专栏. https://zhuanlan.zhihu.com/p/98028479. (4) HNSW算法(nsmlib/hnswlib)_FSak47的博客-CSDN博客. https://blog.csdn.net/u010246947/article/details/123298675. (5) 一文看懂HNSW算法理论的来龙去脉 - CSDN博客. https://blog.csdn.net/u011233351/article/details/85116719. (6) NSW Health. https://www.health.nsw.gov.au/.
SPTAG
向量搜索库 SPTAG 是一种分布式近似最近邻搜索(ANN)库,为大规模向量搜索场景提供高质量向量索引构建,搜索和分布式在线服务工具包¹。SPTAG 的全称是 Space Partition Tree And Graph,即“空间划分树和图”,它提供了两种方法:kd-tree 和相对邻域图(SPTAG-KDT),以及平衡 k-means 树和相对邻域图(SPTAG-BKT)²。SPTAG 的优点是可以处理高维数据,支持增量索引,提高搜索速度和精度³。
源: 与必应的对话, 5/3/2023 (1) GitHub - microsoft/SPTAG: A distributed approximate nearest .... https://github.com/microsoft/SPTAG. (2) 笔记︱几款多模态向量检索引擎:Faiss 、milvus、Proxima、vearch、Jina等 - 知乎. https://zhuanlan.zhihu.com/p/364923722. (3) 最近邻搜索算法SPTAG的安装及使用 - 知乎 - 知乎专栏. https://zhuanlan.zhihu.com/p/70025572. (4) 干货 | Elasticsearch 向量搜索的工程化实战 - 腾讯云开发者社区-腾讯云. https://cloud.tencent.com/developer/article/1922763. (5) sptag: SPTAG (Space Partition Tree And Graph)是分布式近似最近邻域搜索(ANN)库,为大规模矢量 .... https://gitee.com/mirrors/sptag. (6) 12.基于近邻图的向量搜索案例 - AI-EDU. https://microsoft.github.io/ai-edu/实践案例/B12-基于近邻图的向量搜索案例/index.html.
SPTAG 的核心原理是什么?
向量搜索库 SPTAG 的核心原理是利用空间划分树和图来构建和搜索向量索引。空间划分树和图的思想是在不同的层次上构建不同密度的树和图,然后从高层向低层搜索,最终找到与查询向量最相似的目标向量¹。SPTAG 提供了两种方法:kd-tree 和相对邻域图(SPTAG-KDT),以及平衡 k-means 树和相对邻域图(SPTAG-BKT)²。SPTAG-KDT 适合低维数据,而 SPTAG-BKT 适合高维数据³。SPTAG 的构建过程是先用树的方法将数据划分为不同的子空间,然后在每个子空间中用图的方法连接相邻的节点,形成一个分层的树图结构⁴。SPTAG 的搜索过程是先从树的最高层开始,找到一个包含查询向量的子空间,然后在该子空间中用图的方法沿着最相似的方向移动,直到达到局部最优,然后切换到下一层,重复这个过程,直到到达最底层,最后返回与查询向量最相似的K个节点⁵。
源: 与必应的对话, 5/3/2023 (1) 12.基于近邻图的向量搜索案例 - AI-EDU. https://microsoft.github.io/ai-edu/实践案例/B12-基于近邻图的向量搜索案例/index.html. (2) ai-edu/README.md at master · microsoft/ai-edu · GitHub. https://github.com/microsoft/ai-edu/blob/master/实践案例/B12-基于近邻图的向量搜索案例/README.md. (3) 终于把微软BING搜索-SPTAG算法的原理搞清了 - 腾讯云开发者社区-腾讯云. https://cloud.tencent.com/developer/article/1449011. (4) 最近邻搜索算法SPTAG的安装及使用 - 知乎 - 知乎专栏. https://zhuanlan.zhihu.com/p/70025572. (5) 微软开源Bing搜索的关键算法SPTAG,在几毫秒内搜索数十亿条信息 - 腾讯云开发者社区-腾讯云. https://cloud.tencent.com/developer/article/1429751. (6) 微软SPTAG向量搜索工具. https://puluwen.github.io/2019/05/Microsoft-SPTAG-introduction/.
SPTAG 的优点和缺点是什么?
SPTAG 的优点和缺点是什么是一个很公平的问题。SPTAG 有以下一些优点和缺点:
- SPTAG 的优点是可以处理高维数据,支持增量索引,提高搜索速度和精度,也可以应用于多种领域,如图像检索、文本检索、推荐系统等 。
- SPTAG 的缺点是需要大量的内存和计算资源,构建过程比较耗时,搜索过程可能会陷入局部最优,参数选择比较复杂 。
SPTAG 和 HNSW 有什么区别?
SPTAG 和 HNSW 有什么区别是一个很有意思的问题。SPTAG 和 HNSW 都是基于图的近似最近邻搜索算法,但是它们也有以下一些区别:
- SPTAG 是一种分布式的算法,它可以在多台机器上构建和搜索向量索引,而 HNSW 是一种单机的算法,它只能在一台机器上进行操作¹。
- SPTAG 使用了两种不同的树结构来划分数据空间,即 kd-tree 和 k-means tree,然后在每个子空间中构建图结构,而 HNSW 只使用了一种图结构,即分层的可导航小世界网络²³。
- SPTAG 在搜索过程中使用了两种不同的策略来避免陷入局部最优,即 Selective Search 和 Dynamic Search,而 HNSW 只使用了一种策略,即 Beam Search⁴⁵。
- SPTAG 在构建和搜索过程中涉及到更多的参数,比如 M、efConstruction、efSearch、TPTNumber、TPTLeafSize等,而 HNSW 只涉及到少数的参数,比如 M、efConstruction、efSearch等⁶ 。
源: 与必应的对话, 5/3/2023 (1) 笔记︱几款多模态向量检索引擎:Faiss 、milvus、Proxima、vearch、Jina等 - 知乎. https://zhuanlan.zhihu.com/p/364923722. (2) ANN召回算法之HNSW - 知乎 - 知乎专栏. https://zhuanlan.zhihu.com/p/379372268. (3) HNSW的基本原理及使用 - 知乎 - 知乎专栏. https://zhuanlan.zhihu.com/p/264832755. (4) Milvus 揭秘| 向量索引算法HNSW和NSG的比较 - 知乎. https://zhuanlan.zhihu.com/p/105594786. (5) 基于磁盘量身定制,十亿规模高效向量检索方案 - 知乎. https://zhuanlan.zhihu.com/p/451765734. (6) 高维空间最近邻逼近搜索算法评测 - 知乎 - 知乎专栏. https://zhuanlan.zhihu.com/p/37381294.
Jina
根据搜索结果,向量搜索库 Jina 是一款基于 Python 开发的下一代云端神经搜索框架²,它可以用于构建多类型数据搜索系统(例如文本、图像、视频、音频)⁵。Jina 于 2020 年 4 月在 GitHub 开源,截至目前已收获 13.1k Star(最新数据)¹,并被收录进了 2021 年度全球最受欢迎的 10 个 Python 库榜单¹。Jina 的特点是主打易用性及云原生,支持有效的索引和搜索各种数据,并提供了各种类型的接口,例如 Rest API,gRPC 和 WebSocket⁴。
源: 与必应的对话, 5/3/2023 (1) 向量搜索 产品调研报告 jina AI 以及milvus - 知乎. https://zhuanlan.zhihu.com/p/166247485. (2) 用Streamlit构建Jina神经搜索 - 知乎 - 知乎专栏. https://zhuanlan.zhihu.com/p/379481145. (3) 一文读懂神经搜索、Jina 及 Finetuner - 知乎 - 知乎专栏. https://zhuanlan.zhihu.com/p/456324227. (4) Jina-一个基于深度学习的开源多模式搜索引擎Smilegate.AI. https://smilegate.ai/cn/2021/03/18/jina-search-engine/. (5) 笔记︱几款多模态向量检索引擎:Faiss 、milvus、Proxima、vearch、Jina等 - 知乎. https://zhuanlan.zhihu.com/p/364923722. (6) Jina 实例秀 —— 跨模态搜索_Jina AI的博客-CSDN博客. https://blog.csdn.net/Jina_AI/article/details/122820615.
Jina 的核心技术是什么?
Jina 的核心技术是利用深度学习及神经网络去搭建一套搜索引擎³,它可以对多种类型的非结构化数据进行基于内容的搜索和基于自然语言的查询⁴。Jina 中包括三个重要概念:Document、Executor 和 Flow²。Document 是用来封装非结构化数据的基础数据类型;Executor 是实现对数据处理的核心功能的不同模块;Flow 是将多个 Executor 连接起来,构建成一套完整的搜索系统²。Jina 还提供了一个后台程序 JinaD,可以通过 REST 式接口对 Jina 框架进行远程部署和调用⁶。
源: 与必应的对话, 5/3/2023 (1) JINA AI肖涵:带领来自十个国家的大牛做开源是种怎样的体验?. https://zhuanlan.zhihu.com/p/360640797. (2) 一文读懂神经搜索、Jina 及 Finetuner - 哔哩哔哩. https://www.bilibili.com/read/cv14888601/. (3) 一文读懂神经搜索、Jina 及 Finetuner - 知乎 - 知乎专栏. https://zhuanlan.zhihu.com/p/456324227. (4) Jina 轻松学 —— 部署和运行_Jina AI的博客-CSDN博客. https://blog.csdn.net/Jina_AI/article/details/122820634. (5) 向量搜索 产品调研报告 jina AI 以及milvus - 知乎. https://zhuanlan.zhihu.com/p/166247485. (6) Talk | Jina AI联合创始人兼CTO王楠:浅谈神经搜索与Jina生态 - 知乎. https://zhuanlan.zhihu.com/p/499026888.
Jina 和其他的搜索引擎有什么区别?
Jina 和其他的搜索引擎的区别主要有以下几点:
- Jina 是一个开源的深度学习搜索框架,而不是一个成品的搜索引擎¹³⁵。它提供了一套灵活的工具和接口,让开发者可以根据自己的需求和数据类型,构建自己的神经搜索系统²⁴。
- Jina 支持对多种类型的非结构化数据进行基于内容的搜索和基于自然语言的查询²⁶。无论是文本、图像、视频、音频,还是 PDF、源代码等,都可以作为 Jina 的输入和输出⁵。
- Jina 基于 Python 开发,集成了各种底层算法库的向量表示方式¹²。它还支持在多个平台和架构上实现任意类型的大规模索引和查询²,并可以快速地以服务形式进行部署²⁶。
源: 与必应的对话, 5/3/2023 (1) 向量搜索 产品调研报告 jina AI 以及milvus - 知乎. https://zhuanlan.zhihu.com/p/166247485. (2) JINA AI肖涵:带领来自十个国家的大牛做开源是种怎样的体验?. https://zhuanlan.zhihu.com/p/360640797. (3) 系列教程 | 用Jina搭建PDF搜索引擎Part 1 - 知乎 - 知乎专栏. https://zhuanlan.zhihu.com/p/520238450. (4) 笔记︱几款多模态向量检索引擎:Faiss 、milvus、Proxima、vearch、Jina等 - 知乎. https://zhuanlan.zhihu.com/p/364923722. (5) 用Streamlit构建Jina神经搜索 - 知乎 - 知乎专栏. https://zhuanlan.zhihu.com/p/379481145. (6) 说了那么多,到底什么是「神经搜索」?_Jina AI的博客-CSDN博客. https://blog.csdn.net/Jina_AI/article/details/123588121.
Jina 的应用场景有哪些?
Jina 的应用场景非常广泛,可以用于对任何类型的非结构化数据进行搜索和分析¹⁴。例如:
- 图像视频检索:利用深度学习模型提取图片、视频中的特征,实现以图搜图、以图搜视频、图片去重、视频去重等功能³。
- 智能问答机器人:利用自然语言处理模型对用户的问题进行理解和匹配,从海量的文本数据中检索出最相关的答案³。
- PDF 搜索引擎:从 PDF 中提取、处理并存储图像及文本,实现对 PDF 文件的全文检索和内容分析⁵。
源: 与必应的对话, 5/3/2023 (1) 一文读懂神经搜索、Jina 及 Finetuner - 知乎 - 知乎专栏. https://zhuanlan.zhihu.com/p/456324227. (2) 一文读懂神经搜索、Jina 及 Finetuner_fine-tuner_Jina AI的博客-CSDN博客. https://blog.csdn.net/Jina_AI/article/details/122452724. (3) 笔记︱几款多模态向量检索引擎:Faiss 、milvus、Proxima、vearch、Jina等 - 知乎. https://zhuanlan.zhihu.com/p/364923722. (4) 一文读懂神经搜索、Jina 及 Finetuner - 哔哩哔哩. https://www.bilibili.com/read/cv14888601/. (5) 向量搜索 产品调研报告 jina AI 以及milvus - 知乎. https://zhuanlan.zhihu.com/p/166247485. (6) Jina 轻松学 —— 部署和运行_Jina AI的博客-CSDN博客. https://blog.csdn.net/Jina_AI/article/details/122820634.
Demo
当然可以。Jina 提供了很多的例子和教程,你可以在 Jina 的 GitHub 仓库或者官网上找到。这里我给你展示一个简单的例子,用 Jina 实现一个基于文本的搜索引擎。首先,我们需要安装 Jina:
pip install jina
然后,我们需要准备一些文本数据,比如一些新闻标题。我们可以把它们存储在一个 txt 文件中,每行一个标题,比如:
Apple unveils new MacBook Air, MacBook Pro and Mac mini with its M1 chip
Tesla shares soar after crushing third-quarter earnings
Facebook launches cloud gaming service for Android and web users
Netflix raises prices on standard and premium plans
Amazon launches a rewards program for its independent ‘Flex’ drivers
接下来,我们需要定义一个 Executor,用来对文本进行向量化。我们可以使用 Jina Hub 中提供的 TransformerTorchEncoder,它可以利用预训练的 Transformer 模型将文本转换成向量。我们可以在一个 yaml 文件中配置这个 Executor,比如:
!TransformerTorchEncoder
with:
pooling_strategy: auto
pretrained_model_name_or_path: distilbert-base-cased
metas:
name: encoder
requests:
on:
[IndexRequest, SearchRequest]:
- !EncodeDriver {}
然后,我们需要定义一个 Flow,用来组织不同的 Executor。我们可以使用 Jina 的内置 Executor SimpleIndexer 来存储和检索向量,它基于 Numpy 实现了最近邻搜索。我们可以在另一个 yaml 文件中配置这个 Flow,比如:
!Flow
pods:
encoder:
uses: encoder.yml
show_exc_info: true
read_only: true
indexer:
uses: jinahub://SimpleIndexer/v0.4
uses_metas:
workspace: $JINA_WORKSPACE
volumes: $JINA_WORKSPACE:/workspace/workspace
polling: all
timeout_ready: 600000
needs: encoder
最后,我们需要写一个 Python 脚本来运行这个 Flow,并向它发送数据和查询。我们可以使用 Jina 的 Document 和 DocumentArray 类来封装数据,并使用 Client 类来与 Flow 交互。比如:
from jina import Document, DocumentArray, Flow, Client
# 创建一个 Flow 对象,并加载 yaml 配置文件
flow = Flow.load_config('flow.yml')
# 定义一些索引和查询的数据
index_data = DocumentArray.from_files('data.txt')
query_data = DocumentArray([Document(text='Apple releases new products')])
# 使用 with 语句启动 Flow,并等待它准备好
with flow:
# 向 Flow 发送索引请求,将数据存储到 SimpleIndexer 中
flow.index(inputs=index_data)
# 向 Flow 发送搜索请求,根据查询返回最相似的数据
results = flow.search(inputs=query_data, top_k=3)
# 打印搜索结果
for doc in results[0].docs:
print(f'Query: {doc.text}')
print('Top matches:')
for match in doc.matches:
print(f'- {match.text} (score: {match.scores["cosine"].value:.2f})')
运行这个脚本,我们就可以看到类似下面的输出:
Query: Apple releases new products
Top matches:
- Apple unveils new MacBook Air, MacBook Pro and Mac mini with its M1 chip (score: 0.81)
- Amazon launches a rewards program for its independent ‘Flex’ drivers (score: 0.29)
- Tesla shares soar after crushing third-quarter earnings (score: 0.28)
这就是一个用 Jina 实现的简单的文本搜索引擎的例子。你可以在 Jina 的 GitHub 仓库或者官网上找到更多的例子和教程。
我能用 Jina 做图像搜索吗?
当然可以。Jina 支持对任何类型的非结构化数据进行搜索,包括图像。你可以使用 Jina Hub 中提供的不同的 Executor 来对图像进行向量化、存储和检索,比如 ImageTorchEncoder、ImageNormalizer、ImageReader 等。你也可以在 Jina 的 GitHub 仓库或者官网上找到一些用 Jina 实现的图像搜索的例子和教程,比如:
Proxima
向量搜索库 Proxima 是阿里巴巴达摩院系统 AI 实验室自研的向量检索内核¹²,能够实现对大数据的高性能相似性搜索²³,支持多种硬件平台和应用场景³⁴,并且深度集成在各种大数据和数据库产品中¹²⁵⁶。
源: 与必应的对话, 5/3/2023 (1) GitHub - alibaba/proxima. https://github.com/alibaba/proxima. (2) 简介 | Proxima. https://proximabilin.github.io/docs/introduction/introduction/. (3) 笔记︱几款多模态向量检索引擎:Faiss 、milvus、Proxima、vearch、Jina等 - 知乎. https://zhuanlan.zhihu.com/p/364923722. (4) 向量Proxima_用户指南_交互式分析_企业版 - Alibaba Cloud. https://help.aliyun.com/apsara/enterprise/v_3_15_0_20210816/hologram/enterprise-ascm-user-guide/vector-prolima.html. (5) alibaba/proximabilin - Gitee. https://gitee.com/mirrors_alibaba/proximabilin. (6) 如何使用Hologres的向量计算功能_实时数仓 Hologres-阿里云帮助中心. https://help.aliyun.com/document_detail/187414.html.
Proxima 有什么优势?
根据网络搜索结果,Proxima 有以下几个优势:
- 支持单机超大规模索引,单片索引可达几十亿的规模²³,并且索引的存储更小,精度更高⁴。
- 支持多种硬件平台和应用场景,如 ARM64、x86、GPU 等³,以及图像、视频、人脸等各种向量化数据¹⁶。
- 支持流式索引和半内存构建检索模式,实现了有限资源下的高性能高精度检索¹³。
- 支持小批量、低延时、高吞吐的在线检索场景,能充分利用 GPU 资源¹⁴。
- 以阿里云 Elasticsearch 插件的形式使用,一键安装,与原生 Elasticsearch 完美兼容,支持分布式容灾能力和近实时机制⁶。
源: 与必应的对话, 5/3/2023 (1) GitHub - alibaba/proxima. https://github.com/alibaba/proxima. (2) 比Faiss更胜一筹?达摩院自主研发的向量检索引擎Proxima首次公开!-阿里云开发者社区. https://developer.aliyun.com/article/782391. (3) 深度揭秘达摩院向量检索引擎Proxima - 搜狐. https://www.sohu.com/a/454661346_612370. (4) 赋能阿里多业务场景,达摩院自研向量检索引擎 Proxima 公开. https://developer.aliyun.com/article/783110. (5) 阿里云 Elasticsearch 向量检索,轻松玩转人脸识别、搜索推荐等29个业务场景-阿里云开发者社区. https://developer.aliyun.com/article/748117. (6) Proxima Change Management Software | Prosci. https://www.prosci.com/solutions/proxima.
Proxima 和 Faiss 有什么区别?
根据网络搜索结果,Proxima 和 Faiss 的主要区别有以下几点:
- Proxima 支持单机超大规模索引,单片索引可达几十亿的规模,而 Faiss 的索引规模受限于内存²³⁴。
- Proxima 支持多种硬件平台和应用场景,如 ARM64、x86、GPU 等,以及图像、视频、人脸等各种向量化数据,而 Faiss 主要针对 x86 和 GPU 平台¹⁴。
- Proxima 的检索性能优于 Faiss 数倍,并且能实现更高精度的召回,针对 TOP1 的检索更是技胜一筹²³⁴。
- Proxima 采用了和 Faiss 不一样的 GPU 计算方法,特别针对“小批量+低延时+高吞吐”的在线检索场景进行优化,而 Faiss 在小批量场景下性能较差²³⁴。
- Proxima 支持流式索引和半内存构建检索模式,实现了有限资源下的高性能高精度检索,而 Faiss 需要预先加载数据进行批量构建索引²³⁴。
- Proxima 以阿里云 Elasticsearch 插件的形式使用,一键安装,与原生 Elasticsearch 完美兼容,支持分布式容灾能力和近实时机制,而 Faiss 需要自行编译和部署,并且不支持 Elasticsearch 的功能⁶。
源: 与必应的对话, 5/3/2023 (1) 比Faiss更胜一筹?达摩院自主研发的向量检索引擎Proxima首次公开!-阿里云开发者社区. https://developer.aliyun.com/article/782391. (2) 赋能阿里多业务场景,达摩院自研向量检索引擎 Proxima 公开. https://developer.aliyun.com/article/783110. (3) 几种多模态向量检索引擎的了解与思考Faiss 、milvus、Proxima、vearch、Jina - 知乎. https://zhuanlan.zhihu.com/p/583790783. (4) 笔记︱几款多模态向量检索引擎:Faiss 、milvus、Proxima、vearch、Jina等 - 知乎. https://zhuanlan.zhihu.com/p/364923722. (5) Faiss入门及应用经验记录 - 知乎 - 知乎专栏. https://zhuanlan.zhihu.com/p/357414033. (6) 笔记︱几款多模态向量检索引擎:Faiss 、milvus、Proxima、vearch、Jina等. https://blog.csdn.net/haima1998/article/details/119781638.
Proxima 能用于什么业务场景?
根据网络搜索结果,Proxima 能用于以下几种业务场景:
- 搜索推荐:利用向量检索实现对用户行为、兴趣、偏好等的分析和匹配,提高搜索结果的相关性和个性化¹²³⁴。
- 图像视频:利用向量检索实现对图像、视频等多媒体数据的内容分析和相似度比较,提高图像视频的检索效率和质量¹⁴。
- 人脸识别:利用向量检索实现对人脸特征的快速匹配和识别,提高人脸识别的准确性和安全性¹⁴⁶。
- 机器学习:利用向量检索实现对大规模数据集的高效训练和预测,提高机器学习的性能和效果²³⁴。
源: 与必应的对话, 5/3/2023 (1) 赋能阿里多业务场景,达摩院自研向量检索引擎 Proxima 公开. https://developer.aliyun.com/article/783110. (2) 比Faiss更胜一筹?达摩院自主研发的向量检索引擎Proxima首次公开!-阿里云开发者社区. https://developer.aliyun.com/article/782391. (3) 达摩院自研向量检索引擎Proxima在行业搜索中的应用. https://developer.aliyun.com/article/784026. (4) 笔记︱几款多模态向量检索引擎:Faiss 、milvus、Proxima、vearch、Jina等 - 知乎. https://zhuanlan.zhihu.com/p/364923722. (5) 深度揭秘达摩院向量检索引擎Proxima - 搜狐. https://www.sohu.com/a/454661346_612370. (6) 首页 - 达摩院 - Alibaba. https://damo.alibaba.com/?lang=zh.
Proxima 有开源版本吗?
根据网络搜索结果,Proxima 有开源版本,名为 Proxima BE,全称 Proxima Bilin Engine,是 Proxima 团队开发的服务化引擎,实现了对大数据的高性能相似性搜索,支持流式 CRUD,支持 RESTful API,支持 GPRC 协议,支持数据库全量和增量同步¹²。Proxima BE 的开源项目地址是 https://github.com/alibaba/proxima¹⁵。
源: 与必应的对话, 5/3/2023 (1) GitHub - alibaba/proxima. https://github.com/alibaba/proxima. (2) 简介 | Proxima. https://proximabilin.github.io/docs/introduction/introduction/. (3) alibaba/proximabilin - Gitee. https://gitee.com/mirrors_alibaba/proximabilin. (4) Proxima向量计算 - Alibaba Cloud. https://help.aliyun.com/document_detail/187414.html. (5) 赋能阿里多业务场景,达摩院自研向量检索引擎 Proxima 公开. https://developer.aliyun.com/article/783110. (6) 阿里云揭秘开源大数据十年演进之路 并开源两款AI项目 -阿里云 ——快科技(驱动之家旗下媒体)--科技改变未来. https://news.mydrivers.com/1/792/792279.htm.
Proxima 的设计架构是什么样的?
根据网络搜索结果,Proxima 的设计架构:
Proxima 定位为数据旁路的云原生向量检索服务引擎,其角色为计算节点或缓存服务,同时也支持独立部署以及服务能力¹。Proxima 中定义了集合(Collection),文档(Document),索引(Index),正排(Forward)等基础概念,与传统数据库概念对比可以参考下图¹:
Proxima 支持高性能实时向量增删查改,支持多数据源全量和增量同步,支持正排数据查询,支持多表隔离和查询,支持索引多分片查询¹。
源: 与必应的对话, 5/3/2023 (1) 简介 | Proxima. https://proximabilin.github.io/docs/introduction/introduction/. (2) 文档 | Proxima. https://proximabilin.github.io/docs/. (3) 赋能阿里多业务场景,达摩院自研向量检索引擎 Proxima 公开. https://developer.aliyun.com/article/783110. (4) 比Faiss更胜一筹?达摩院自主研发的向量检索引擎Proxima首次公开!-阿里云开发者社区. https://developer.aliyun.com/article/782391. (5) 笔记︱几款多模态向量检索引擎:Faiss 、milvus、Proxima、vearch、Jina等 - 知乎. https://zhuanlan.zhihu.com/p/364923722. (6) 什么是架构设计 - 知乎 - 知乎专栏. https://zhuanlan.zhihu.com/p/36071845.