7个向量数据库对比:Milvus、Pinecone、Vespa、Weaviate、Vald、GSI 和 Qdrant

本文简要总结了当今市场上正在积极开发的7个量数据库,Milvus、Pinecone、Vespa、Weaviate、Vald、GSI 和 Qdrant 的详细比较。

我们已经接近在搜索引擎体验的基础层面上涉及机器学习:在多维多模态空间中编码对象。这与传统的关键字查找不同(即使通过同义词/语义进行了增强)——在许多有趣的方面:

  • 对象级别的集合级别相似性。您可以使用相似度函数(距离度量)而不是稀疏关键字查找来查找查询的邻居。在带有分片的 BM25/TF-IDF 方法中,您将获得来自不兼容的分片级集合的文档分数(除非您设置全局更新的IDF缓存)。
  • 将几何相似性的概念作为语义中的一个组成部分,而不仅仅是原始对象的特定属性(在文本的情况下——它的关键字/术语)。
  • 多模态:编码任何对象——音频、视频、图像、文本、基因组、软件病毒、一些复杂的对象(如代码),你有一个编码器和相似性度量——并在这些对象之间无缝搜索。

同时,关键字可以以互补的方式与相似度搜索相结合,尤其是当您面临长尾零命中问题(可能相当大,例如在电子商务领域)的情况下。

这篇博文总结了 7 个向量数据库之间的共性和差异,每个都提供商业云支持。7 人中有 5 人将他们的代码作为开源代码提供给您自己的主机。这篇文章不包括神经搜索框架(如Jina.AI、FAISS或 deepset 的Haystack),这些框架应该有自己的博客文章。此外,它并不专注于大型云供应商垂直搜索引擎,例如 Bing 或 Google 的向量搜索引擎。算法基准测试超出了范围,因为您始终可以求助于https://github.com/erikbern/ann-benchmarks查找有关单个算法性能和权衡的详细信息。

我冒昧地从以下五个角度考虑了每个搜索引擎:

  1. 价值主张。让整个向量搜索引擎脱颖而出的独特之处是什么?
  2. 类型。该引擎的通用类型:向量数据库、大数据平台。托管/自托管。
  3. 架构。高级系统架构,包括分片、插件、可扩展性、硬件细节(如果可用)等方面。
  4. 算法。这个搜索引擎采用了什么算法来进行相似度/向量搜索,它提供了哪些独特的功能?
  5. 代码:它是开源的还是闭源的?

每个搜索引擎都附有元数据:

🌍 链接到描述该技术的主页

💡 类型:自托管和/或托管

🤖 代码链接到可用的源代码

Milvus

🌍 链接:https ://milvus.io/

💡 类型:自托管向量数据库

🤖 代码:开源

  1. 价值主张:关注整个搜索引擎的可扩展性:如何高效地对向量数据进行索引和重新索引;如何缩放搜索部分。独特的价值是能够使用多种 ANN 算法对数据进行索引,以比较它们在您的用例中的性能。
  2. 架构

Milvus 实现了四层:接入层、协调服务、工作节点和存储。这些层是独立的,以实现更好的可扩展性和灾难恢复

3.算法:允许多个基于 ANN 算法的索引:FAISS、ANNOY、HNSW、RNSG。

Pinecone

🌍 链接:https ://www.pinecone.io/

💡 类型:托管向量数据库

🤖 代码:封闭源代码

  1. 价值主张:完全托管的向量数据库,以支持您的非结构化搜索引擎之旅。最近的2.0 版本带来了单阶段过滤功能:在一个查询中搜索您的对象(毛衣)并按元数据(颜色、尺寸、价格、可用性)进行过滤。
  2. 架构

Pinecone 是一个托管向量数据库,使用 Kafka 进行流处理,使用 Kubernetes 集群实现高可用性以及Blob 存储(向量和元数据的真实来源,用于容错和高可用性)

3.算法:由 FAISS 提供支持的 Exact KNN;ANN 由专有算法提供支持。支持所有主要距离度量:余弦(默认)、点积和欧几里得。

Vespa

🌍 链接:https ://vespa.ai/

💡 类型:托管/自托管向量数据库

🤖 代码:开源

  1. 价值主张:引用官方文档:“Vespa 是在大型数据集上进行低延迟计算的引擎。它存储和索引您的数据,以便可以在服务时执行对数据的查询、选择和处理。可以使用托管在 Vespa 中的应用程序组件来定制和扩展功能。” Vespa 提供了面向深度学习的深度数据结构,例如数据科学,例如张量。
  2. 架构

Vespa 架构图

3.算法:HNSW(针对实时CRUD和元数据过滤进行了修改);一套重新排序和密集检索方法。

Weaviate

🌍 链接:https ://www.semi.technology/developers/weaviate/current/

💡 类型:托管/自托管向量数据库

🤖 代码:开源

  1. 价值主张:类 Graphql接口支持的表达查询语法。这允许您对丰富的实体数据运行探索性数据科学查询。该产品最重要的元素是向量搜索、对象存储和用于布尔关键字搜索的倒排索引的组合,以避免存储与对象/倒排索引分开的向量数据的不同数据库之间的数据漂移和延迟。Wow-effect:有一个令人印象深刻的问答组件——它可以带来一个令人惊叹的元素来演示作为现有或新产品的一部分的新搜索功能。
  2. 架构

这是Weaviate的系统级架构图。它显示了索引组合:您可以存储向量、对象和倒排索引数据,以混合和匹配适合您用例的搜索功能。支持用于不同任务的模块,例如问答。

系统级概览

使用虚拟分片将分片分布到节点上(受Cassandra 分片启发)

3.算法:自定义实现的 HNSW,调整到规模,并支持完整的 CRUD。只要能做CRUD ,系统就支持插件ANN算法。

Vald

🌍 链接:https ://vald.vdaas.org/

💡 类型:自托管向量搜索引擎

🤖 代码:开源

  1. 价值主张:Vald 用于十亿向量规模,提供云原生架构。来自官方文档:“Vald 具有自动向量索引和索引备份,以及用于从数十亿特征向量数据中进行搜索的水平缩放。” 该系统还允许使用 Egress 过滤器插入您的自定义重新排序/过滤算法。奖励:可以直接安装在 macOS 上。
  2. 架构

Vald 在 Kubernetes 集群之上运行以利用其 HPA 和分布式功能

3.算法:基于最快算法:NGT,比很多强算法,如Scann和HNSW都要快。

用于 Elasticsearch 和 OpenSearch 的 GSI APU 板

🌍 链接:https ://www.gsitechnology.com/APU

💡 类型: Elasticsearch / OpenSearch的向量搜索硬件后端

🤖 代码:封闭源代码

  1. 价值主张:十亿规模的搜索引擎后端,将您的Elasticsearch / OpenSearch功能扩展到相似性搜索。您可以实施高效节能的多模式搜索,增强关键字检索。它以本地APU 板和托管云后端的形式提供,通过插件与您的 Elasticsearch / OpenSearch 部署连接。
  2. 架构

GSI APU 驱动的 Elasticsearch 架构的架构(GSI Technology提供的屏幕截图)

APU板特点

3.算法:保持神经散列的汉明空间局部性。

Qdrant

🌍 链接:https ://qdrant.tech/

💡 类型:托管/自托管向量搜索引擎和数据库

🤖 代码:开源

  1. 价值主张:具有扩展过滤支持的向量相似度引擎。Qdrant 完全用 Rust 语言开发,实现了动态查询计划和有效负载数据索引。向量负载支持多种数据类型和查询条件,包括字符串匹配、数值范围、地理位置等。有效负载过滤条件允许您构建几乎任何应该在相似性匹配之上工作的自定义业务逻辑。
  2. 架构

集合级架构

3.算法: Rust 中的自定义HNSW 实现。

原文标题:Not All Vector Databases Are Made Equal

原文作者:Dmitry Kan

原文链接:https://towardsdatascience.com/milvus-pinecone-vespa-weaviate-vald-gsi-what-unites-these-buzz-words-and-what-makes-each-9c65a3bd0696

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/317239.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Android Studio个性化修改

Android Studio原始界面看着也太无趣了叭,话不多说跟步骤走就可以。 1.更改Android Studio主题及背景 1.背景修改 File->Settings->Plugins,搜索Sexy Editor 重启后,左侧边栏出现Other Settings选项,点击SexyEditor进行背…

K8S后渗透横向节点与持久化隐蔽方式探索

前言 通常在红蓝对抗中,我们可能会通过各种方法如弱口令、sql注入、web应用漏洞导致的RCE等方法获得服务器的权限;在当前云原生迅猛发展的时代,这台服务器很可能是一个容器,在后续的后渗透由传统的提权变为容器逃逸,内…

在程序中链接静态库 和 动态库

9. 链接库 在编写程序的过程中,可能会用到一些系统提供的动态库或者自己制作出的动态库 或者静态库文件,cmake中也为我们提供了相关的加载动态库的命令hehedalinux:~/Linux/loveDBTeacher-v3$ tree . ├── CMakeLists.txt ├── include │ └── …

Java合并两个有序链表

思路: 创建一个临时的节点,命名傀儡节点,可以理解成临时的头节点,newHead,list1和list2的两两元素比较,小的连接newHead(升序)newHead的路径(蓝色)就是连接后…

MySQL 基于 GTID 主从复制

GTID 定义 GTID 是 MySQL 事务标识,为每一个提交的事务都生成一个标识,并且是全局唯一的,这个特性是从 MySQL5.6 引进的。 组成 GTID 是由 UUID TID,UUID 是MySQL的唯一标识,每个MySQL实例之间都是不同的。TID是代表…

Servlet-执行流程生命周期

一、思考 在上一篇文章Servlet基本概念中,我们抛出了一个问题:我们定义一个类实现了Servlet接口后,是谁创建了这个类的对象呢,又是谁调用了类中的service方法呢?本篇我们将介绍Servlet的执行流程。 二、执行流程 根…

Dreamweaver CS 操作

服务器 在Windows 10中添加IIS 可以将自己的电脑设置为服务器,在Windows 10中添加IIS的步骤如下: 在开始按钮上点击右键,选择“控制面板”。从控制面板选择“程序”。然后选择“启用或关闭Windows功能”。在弹出的对话框中,找到…

【华为OD机试真题2023CD卷 JAVAJS】查找一个有向网络的头节点和尾节点

华为OD2023(C&D卷)机试题库全覆盖,刷题指南点这里 查找一个有向网络的头节点和尾节点 知识点图DFS搜索 时间限制:1s 空间限制:256MB 限定语言:不限 题目描述: 给定一个有向图,图中可能包含有环,图使用二维矩阵表示,每一行的第一列表示起始节点,第二列表示终止节…

Error: Failed to download template from registry: fetch failed

第一次构建Nuxt项目时,出现在这样的错误!!! 如果你也是这样得错误,修改hosts也没用。我试了 是因为你的npm安装了其他镜像源, 这个时候你就需要手动下载了: web端访问: https://ra…

x-cmd pkg | csview - 美观且高性能的 csv 数据查看工具

目录 介绍首次用户功能特点类似工具与竞品进一步阅读 介绍 csview 是一个用于在命令行中查看 CSV 文件的工具,采用 Rust 语言编写的,支持中日韩/表情符号。它允许用户在终端中以表格形式查看 CSV 数据,可以对数据进行排序、过滤、搜索等操作…

牛仔行头目标检测竞赛 李沐老师Kaggle(有代码有注释)

一、比赛地址 CowBoy Outfits Detection | Kaggle 二、数据介绍 这次比赛的数据集一共有4879个image,需要自己划分训练集和验证集。annotation的格式是json,因此如果用yolo系列的算法会涉及到json2txt这一步。当然如果不用yolo系列的就不要这段代码了。…

PyTorch Tutorial

本文作为博客“Transformer - Attention is all you need 论文阅读”的补充内容,阅读的内容来自于 https://pytorch.org/tutorials/intermediate/char_rnn_classification_tutorial.html#recommended-preparation 建议的准备流程。 Deep Learning with PyTorch: …

java实现局域网内视频投屏播放(五)视频搜索和投屏自动切换下一个

代码链接 这次对ui做了一些调整,整体分成了5个类别分别为 搜索设备播放任务已下载视频列表视频搜索下载任务列表 视频搜索 搜索 点击搜索后,会从执行所有VideoResolver实现类的search方法,将搜索到的结果汇总到一起,根据视频的…

Python爬虫---scrapy shell 调试

Scrapy shell是Scrapy提供的一个交互式shell工具,它可以帮助我们进行爬虫的开发和调试。可以使用它来测试xpath或css表达式,查看它们是如何工作的,以及它们从你试图抓取的网页中提取的数据。它允许你在编写spider时交互地测试表达式&#xff…

set -e的作用

今天看人家代码看到一个很有意思的命令 后面我搜索了一下,感觉还是很好用的 set -e 是一个调试用的好东西 比如test.sh echo "执行第一个命令" cd /aaa/bbb echo "执行第二个命令"结果如下 可以看到第二个命令是执行了,虽然我的第…

stm32学习笔记:DMA

每个DMA通道硬件触发源是不一样的,要使用某个外设的硬件触发源,就必须使用它连接的那个通道 12个独立可配置的通道:DMA1(7个通道),DMA2(5个通道) 每个通道都支持软件触发和特定的硬件触发 C8T6 DMA资源:DMA1 &#xff…

陶瓷碗口缺口检测-图像形态学

图像形态学 对得到的灰度图像,需要进行二值化处理和区域填充。二值化涉及两个步骤,第一,对图像行图像分割,将图像分割成目标和和背景;第二,对分割后图像进行区域填充。本例中的背景为黑色,可以…

前端工程化相关

工具方法: 知道软件包名,拿到源码或者路径的方法 在浏览器输入以下内容,就可以找到你想要的。。。 unpkg.com/输入包名 一、模块化 ESM特性清单: 自动采取严格模式,忽略“use strict”每个ESM模块都是单独的私有作用…

x-cmd pkg | csvkit - csv 实用工具集

目录 介绍首次用户功能特点类似工具与竞品进一步阅读 介绍 csvkit 是一个用Python编写的工具包,用于处理CSV文件。该工具包提供了一组命令行工具,可用于转换、查询和分析CSV文件。csvkit的主要命令包括csvcut(用于选择特定列)、c…

又涨了:net的域名铁定涨价

关注卢松松,会经常给你分享一些我的经验和观点。 又要涨价了,又要涨价了,又要涨价了!继.com域名涨价后,.net的域名也逐步涨价。最近一年来域名疯狂涨价,几个月内已经几乎翻番。 阿里云2月1日起上调.net英文域名价格…