向量数据库调研

向量数据库的优势

数据库类型

适用场景

典型数据库举例

关系型数据库(RDBMS)

处理结构化数据,擅长OLTP,如财务、人事管理等。

MySQL,Oracle,SQL Server

非关系型数据库(NoSQL)

存储大量非结构化或半结构化数据,擅长点查,如大数据分析、人工智能等。

MongoDB,Redis,Cassandra

对象数据库

数据存储结构比较复杂的应用场景

Versant Object Database,ObjectStore,ZopeDB

列式数据库

需要快速进行按列查询的应用场景,擅长OLTP查询,如数据仓库。

HBase,Cassandra,Amazon DynamoDB

图形数据库

存储和处理大型图形数据,一般使用GraphQL如社交网络、物联网等场景。

Neo4j,ArangoDB,JanusGraph

向量数据库

快速处理向量数据的应用场景,擅长算法聚类等,如图像识别、音频处理、自然语言处理等

Milvus,Faiss,Hive-Vector-Storage

全文搜索引擎(search db)

处理全文搜索和日志存储等应用场景

Elasticsearch,Apache Solr,Sphinx

在 db engines rank中,向量数据在最近一段时间得到很强的关注和发展。

向量数据库横向对比

Milvus、Pinecone、Vespa、Weaviate、Vald、GSI 和 Qdrant

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

类型

代码

算法

Milvus

自托管

开源

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

Pinecone

托管

闭源

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

Vespa

托管/自托管

开源

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

Weaviate

托管/自托管

开源

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

Vald

自托管

开源

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

GSI

ES OS的向量搜索硬件后端

闭源

保持神经散列的汉明空间局部性。

Qdrant

托管/自托管

开源

Rust 中的自定义HNSW 实现。

向量数据库依赖算法的优劣势

算法名称

算法优势

算法劣势

复杂度分析

Exact KNN

精确性高,可以保证正确性

对大型数据集的搜索较慢

搜索复杂度为O(N log N),其中N是数据库中向量的数量。对于高维数据和大量数据,复杂度可能会比较高

LSH

可以在大型数据集中实现快速近似KNN搜索

近似性较差,可能会导致搜索结果不够准确

查询复杂度主要是哈希函数的计算复杂度和哈希表的遍历复杂度,一般时间复杂度达到O(N^p),其中N是数据库中向量的数量。

Scann

快速和可扩展,特别适合大量高维向量的搜索

相比于精确KNN和其他近似KNN算法,精度可能会有所降低

预处理时间复杂度为O(N * D),其中N是数据库中向量的数量,D是向量的维度;查询复杂度为O(log N)。

KD树

计算快速,适合高维度空间的KNN搜索

对于包含稀疏数据的向量,性能可能会受到影响

预处理时间复杂度为O(N * log N),其中N是数据库中向量的数量;查询复杂度为O(log N)。

HNSW

可以在大型高维数据集中实现快速近似KNN搜索,且精度较高

查询速度较慢(不如LSH和SCANN)

构建时间复杂度为O(N * log N),其中N是数据库中向量的数量;查询复杂度为O(log N)。

RNSG

较快的最近邻搜索速度,且搜索结果较为准确

不适用于非欧几里得空间

时间复杂度主要是与K(最近邻数目)、N(向量数目)和D(向量空间维数)相关,因此时间复杂度能够低至O(log N)。

向量数据库分析

milvus

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

产品优势:

  • 支持私有化部署
  • 多版本:单机版(standalone)、集群版(cluster),支持部署在CPU和GPU上,弹性可扩展。
  • 易运维:采用云原生架构,使用docker和k8s能够快速安装和运维。
  • 实现场景多:能快速实现图搜图、语音搜索语音、文搜文。

参考资料

链接

  • 7个向量数据库对比:Milvus、Pinecone、Vespa、Weaviate、Vald、GSI 和 Qdrant - 墨天轮
  • 强大的向量数据库:Milvus - 知乎
  • Installation · milvus-io/milvus Wiki · GitHub
  • B站

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

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

相关文章

太阳系三体模拟器

介绍 《三体》是刘慈欣创作的长篇科幻小说,文中提到的三体问题比较复杂和无解。 该项目代码就是利用 Python 来模拟三体的运行,此项目代码完全共享,欢迎下载。 我们可以自己通过调整天体的初始坐标、质量和矢量速度等等参数来自定义各种场景…

使用Android Studio等idea工具开发flutter应用,必备的debug调试技能,非常好用

我们程序员不论开发什么软件,都需要一把锋利的调试工具,这是必不可少的,不然出现问题了,你都不知道问题是啥,出现在哪,就更别说怎么解决了。所以我这里就介绍一下android studio开发flutter必备的调试技能&…

全栈架构:从0开始,Vue的搭建与开发

尼恩说在前面 在40岁老架构师 尼恩的读者交流群(50)中,很多小伙伴拿到一线互联网企业、上市企业如阿里、网易、有赞、希音、百度、滴滴的面试资格。 然后,很多小伙伴平时聚焦CRUD,没有亮点项目, 黄金项目。 简历也写得是非常lo…

政务大数据能力平台建设方案:文件全文30页,附下载

关键词:智慧政务解决方案,智慧政务建设,智慧政务服务平台,智慧政务大数据,数字政务一体化平台。大数据,政务大数据建设 一、智慧政务建设需求 1、政务服务需求:智慧政务建设需要满足人民群众的…

2023年《环球科学》十大科学新闻

2023年3月的一篇重磅文章迅速将“室温超导”的话题送上各大媒体的头条,在惊呼一个新时代来临之余,很多科学家也提出了反对意见。于是,精彩的多方对垒几乎贯穿了这一整年。虽然最终以撤稿收尾,但这也让我们见识了众人对突破性技术的…

啊哈c语言——4.10(练习)

1&#xff0e;请尝试用for循环打印下面的图形。 #include <stdio.h> #include <stdlib.h> int main() {int a,b,c,d,e;for(a 1;a < 10;a){if(a < 5){b a * 2 - 1;c 5 - a;}else{b 9 - (a - 5) * 2;c a - 5;}for(d 0;d < c;d ){printf(" "…

HTML+CSS+JAVASCRIPT实战项目——新年快乐特效

生成动态视频 <!doctype html> <html> <head><meta charset"utf-8" name"viewport" content"widthdevice-width, initial-scale1.0, maximum-scale1.0, minimum-scale1.0, user-scalableno"/><title>2024新年快乐…

鸿蒙应用开发 应用内字体大小调节

1 数据管理概述 在移动互联网蓬勃发展的今天&#xff0c;移动应用给我们生活带来了极大的便利&#xff0c;这些便利的本质在于数据的互联互通。因此在应用的开发中数据存储占据了非常重要的位置&#xff0c;HarmonyOS 应用开发也不例外。 本文将为您介绍 HarmonyOS 提供的数据…

黑马程序员SSM框架-SpringBoot

视频连接&#xff1a;SpringBoot-01-SpringBoot工程入门案例开发步骤_哔哩哔哩_bilibili SpringBoot简介 入门程序 也可以基于官网创建项目。 SpringBoot项目快速启动 下面的插件将项目运行所需的依赖jar包全部加入到了最终运行的jar包中&#xff0c;并将入口程序指定。 Spri…

信号与线性系统翻转课堂笔记17——z变换及其性质

信号与线性系统翻转课堂笔记17——z变换及其性质 The Flipped Classroom17 of Signals and Linear Systems 对应教材&#xff1a;《信号与线性系统分析&#xff08;第五版&#xff09;》高等教育出版社&#xff0c;吴大正著 一、要点 &#xff08;1&#xff09;序列的z变换…

Unity 爱心血量效果

这里写自定义目录标题 1.准备爱心血条2.HeartUI 代码3.在Inspector窗口中绑定好对象4.在血量减少的地方&#xff0c;调用更新方法5.效果展示 1.准备爱心血条 准备好红色爱心和灰色爱心的图片 2.HeartUI 代码 using System.Collections; using System.Collections.Generic; u…

计算机缺失api-ms-win-crt-runtime-l1-1-0.dll要怎么解决

在Windows 7操作系统中&#xff0c;api-ms-win-crt-runtime-l1-1-0.dll是一个关键的运行时库文件&#xff0c;负责提供多种实用功能。许多用户在操作系统或软件使用过程中&#xff0c;可能会遇到api-ms-win-crt-runtime-l1-1-0.dll缺失的问题。那么&#xff0c;api-ms-win-crt-…

学习体系结构 - AArch64 异常模型

学习体系结构 - AArch64 异常模型 Learn the architecture - AArch64 Exception Model version 1.3 根据DeepL翻译 校准 1、Overview AArch64异常模型指南&#xff0c;介绍了Armv8-A和Armv9-A中的异常和特权模型。它涵盖了Arm架构中不同类型的异常以及处理器在处理异常时的行…

Halcon 膨胀dilation_circle

Halcon 膨胀 文章目录 Halcon 膨胀 膨胀是对选区进行“扩大”的一种操作。其原理是使用一个自定义的结构元素,在待处理的二值图像上进行类似于“滤波”的滑动操作&#xff0c;然后将二值图像对应的像素点与结构元素的像素进行对比&#xff0c;得到的并集为膨胀后的图像像素。图…

【数据结构——二叉树】二叉树及其应用2023(头歌习题)【合集】

目录 第1关&#xff1a;括号表示法创建二叉树任务描述相关知识编程要求测试说明完整代码 第2关&#xff1a;先序序列创建二叉树任务描述相关知识二叉树的前序遍历如何创建一颗二叉树伪代码如下&#xff1a; 二叉树的中序遍历 编程要求测试说明完整代码 第3关&#xff1a;计算二…

python编程从入门到实践(1)

文章目录 2.2.1命名的说明2.3字符串2.3.1使用方法修改字符串的大小写2.3.2 在字符串中使用变量2.3.3 制表符 和 换行符2.5.4删除空白2.5.5 删除前缀&#xff0b;后缀 2.2.1命名的说明 只能包含&#xff1a;字母&#xff0c;下划线&#xff0c;数字 必须&#xff1a;字母&#…

SpringIOC之ClassPathXmlApplicationContext

博主介绍&#xff1a;✌全网粉丝5W&#xff0c;全栈开发工程师&#xff0c;从事多年软件开发&#xff0c;在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战&#xff0c;博主也曾写过优秀论文&#xff0c;查重率极低&#xff0c;在这方面有丰富的经验…

.NET进阶篇06-async异步、thread多线程2

知识须要不断积累、总结和沉淀&#xff0c;思考和写做是成长的催化剂web 内容目录 1、线程Thread 一、生命周期 二、后台线程 三、静态方法 1.线程本地存储 2.内存栅栏 四、返回值 2、线程池ThreadPool 一、工做队列 二、工做线程和IO线程 三、和Thread区别 四、定时器 1、线…

2023年终总结丨很苦,很酷!

文章目录 个人简介丨了解博主写在前面丨博主介绍年终总结丨博主成就年终总结丨博主想说年终总结丨学习芝士年终总结丨未来展望写在后面丨新年快乐 个人简介丨了解博主 主页地址&#xff1a;https://blog.csdn.net/m0_68111267 荣誉身份 ⭐2022年度CSDN 社区之星 Top6 ⭐2023年…

app自动化测试(Android)–触屏操作自动化

导入TouchAction Python 版本 from appium.webdriver.common.touch_action import TouchActionJava 版本 import io.appium.java_client.TouchAction;常用的手势操作 press 按下 TouchAction 提供的常用的手势操作有如下操作&#xff1a; press 按下 release 释放 move…