Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >矢量数据库对比和选择指南

矢量数据库对比和选择指南

作者头像
deephub
发布于 2023-08-30 01:05:50
发布于 2023-08-30 01:05:50
1.3K0
举报
文章被收录于专栏:DeepHub IMBADeepHub IMBA

矢量数据库是为实现高维矢量数据的高效存储、检索和相似性搜索而设计的。使用一种称为嵌入的过程,将向量数据表示为一个连续的、有意义的高维向量。

本文将研究存储/检索向量数据和执行相似性搜索的实用方法,在我们深入研究之前,首先先介绍矢量数据库的两个关键功能:

1、执行搜索的能力

当给定查询向量时,向量数据库可以根据指定的相似度度量(如余弦相似度或欧几里得距离)检索最相似的向量。这允许应用程序根据它们与给定查询的相似性来查找相关项或数据点。

2、高性能

矢量数据库通常使用索引技术,比如近似最近邻(ANN)算法来加速搜索过程。这些索引方法旨在降低在高维向量空间中搜索的计算复杂度,而传统的方法如空间分解由于高维而变得不切实际。

简介

矢量数据库领域现在正在急速的扩展,如何权衡选择呢,这里我整理了5个主要的方向:

  • 像Pinecone这样的纯矢量数据库,比如Pinecone也是建立在下面的Faiss之上的
  • 全文搜索数据库,如ElasticSearch,以前是作为搜索引擎现在增加了矢量存储和检索的功能
  • 矢量库,如Faiss, Annoy和Hnswlib,还不能作为数据库,只是矢量的处理
  • 支持矢量的NoSQL数据库,如MongoDB、Cosmos DB和Cassandra,都是老牌的数据存储,但是加入了矢量的功能
  • 支持矢量的SQL数据库,如SingleStoreDB或PostgreSQL,与上面不同的是这些数据库支持SQL语句

除了上面提到的五种主要方法外,还有如Vertex AI和Databricks,它们的功能超越了数据库,我们不进行讨论。

1、纯矢量数据库

纯矢量数据库是专门为存储和检索矢量而设计的。包括Chroma, LanceDB, Marqo, Milvus/ Zilliz, Pinecone, Qdrant, Vald, Vespa, Weaviate等。数据是基于对象或数据点的向量表示来组织和索引。这些向量可以是各种类型数据的数字表示,包括图像、文本文档、音频文件或任何其他形式的结构化或非结构化数据

优点

  • 利用索引技术进行高效的相似度搜索
  • 大型数据集和高查询工作负载的可伸缩性
  • 支持高维数据
  • 支持基于HTTP和json的api
  • 原生支持向量运算,包括加法,减法,点积,余弦相似度

缺点

纯矢量数据库:纯矢量数据库可以存储矢量和一些元数据,但是其他就不行了。对于大多数用例,可能还需要包括诸如实体、属性和层次结构(图)、位置(地理空间)等描述的数据,这就要其他存储的整合。

有限或没有SQL支持:纯矢量数据库通常使用自己的查询语言,这使得很难对矢量和相关信息运行传统的分析,也很难将矢量和其他数据类型结合起来。

没有完整的CRUD:纯矢量数据库并不是真正为创建、更新和删除操作而设计的。所以必须首先对数据进行矢量化和索引,这些数据库的重点是获取向量数据,并基于向量相似度查询最近邻,而索引是很耗时的。索引矢量数据计算量大、成本高、耗时长。这使得基本上无法进行实时的操作。例如,Pinecone的IMI索引(反向多索引,人工神经网络的一种变体)会产生存储开销,并且是计算密集型。它主要是为静态或半静态数据集设计的,如果经常添加、修改或删除向量,基本上不太可能。而Milvus使用的索引被称为产品量化和分层可导航小世界(HNSW),这是一种近似的技术,在搜索准确性和效率之间进行权衡。它的索引需要配置各种参数,使用不正确的参数选择可能会影响搜索结果的质量或导致效率低下。

功能性不强:许多矢量数据库在基本特性上严重落后,包括ACID事务、灾难恢复、RBAC、元数据过滤、数据库可管理性、可观察性等。这可能会导致严重的业务问题,要解决这些问题,则需要我们自己来处理了这会导致开发量大增。

2、全文检索数据库

这类数据库包括Elastic/Lucene、OpenSearch和Solr。

优点

  • 高可伸缩性和性能,特别是对于非结构化文本文档
  • 丰富的文本检索功能,如内置的外语支持,可定制的标记器,词干器,停止列表和N-grams
  • 大部分基于开源库(Apache Lucene)
  • 成熟的且有大型集成生态系统,包括矢量库

缺点

  • 没有优化向量搜索或相似匹配
  • 主要设计用于全文搜索,而不是语义搜索,因此基于它构建的应用程序将不具有检索增强生成(RAG)和其他的完整上下文。为了实现语义搜索功能,这些数据库需要使用其他工具以及大量自定义评分和相关模型进行增强。
  • 其他数据格式(图像、音频、视频)的有限应用
  • 基本上不支持GPU

一般选择这些库的原因都是因为在以前项目上增加新的功能,并且数据量小,对主业务也不会产生多大影响时使用。如果需要重新构架大型项目,不建议使用。

3、开源矢量库

对于许多开发者来说,Faiss、Annoy和Hnswlib等开源矢量库是一个很好的起点。Faiss是一个用于密集向量相似性搜索和聚类的库。Annoy (Approximate Nearest Neighbors Oh Yeah)是一个用于人工神经网络搜索的轻量级库。Hnswlib是一个实现HNSW ANN搜索算法的库。

优点

  • 快速近邻搜索
  • 为高维构建
  • 支持面向人工神经网络的索引结构,包括倒排文件,产品量化和随机投影
  • 支持推荐系统、图像搜索自然语言处理的用例
  • SIMD(单指令,多数据)和GPU支持,加快向量相似度搜索操作

缺点

  • 维护和集成麻烦
  • 与精确方法相比,可能会牺牲搜索准确性
  • 需要自己部署和维护:需要你构建和维护复杂的基础设施,为应用程序需求提供足够的CPU、GPU和内存资源。
  • 对元数据过滤、SQL、CRUD操作、事务、高可用性、灾难恢复以及备份和还原的支持有限或不支持

他们之所以称为库(或者包)而不是数据库是因为它们只提供了很少的但是却非常专业功能,如果你想入门学习或者做一个简单的demo,它们都是很好开始,但不建议直接应用到生产中。

4、支持矢量的NoSQL数据库

这些数据库包括:NoSQL数据库,如MongoDB, Cassandra/ DataStax Astra, CosmosDB和Rockset。还有像像Redis这样的键值数据库和其他特殊用途的数据库,如Neo4j(图数据库)

几乎所有这些NoSQL数据库都是最近才添加矢量搜索扩展而具备矢量能力的,所以如果要是用的话一定要做好测试。

优点

对于特定的数据模型,NoSQL数据库提供了高性能和可扩展性。Neo4j可以与llm一起用于社交网络或知识图谱。一个具有矢量能力的时间序列数据库(如kdb)可能能够将矢量数据与金融市场数据结合起来。

缺点

NoSQL数据库的矢量功能是基本的/新生的/未经测试的。今年,许多NoSQL数据库添加了向量支持。比如:

今年5月,Cassandra宣布了增加矢量搜索的计划。

4月,Rockset宣布支持基本矢量搜索,

5月Azure Cosmos DB宣布支持MongoDB vCore的矢量搜索。

DataStax和MongoDB在本月(6月)宣布了矢量搜索功能(都是预览版)!

NoSQL数据库的矢量搜索性能可能差别很大,这取决于所支持的矢量函数、索引方法和硬件加速。而且NoSQL数据库的查询效率本来就不高,再加上矢量的功能,一定不会快。

我的观点一直没有变,那就是如果复杂数据一定要存到关系型数据库中,像MongoDB这样的当作辅助存储是没问题,但当作主要存储和主要查询那是所谓的自称为“全栈”的前端干出来的事,因为什么都不懂,所以觉得什么都简单。

5、支持矢量的SQL数据库

这些库与上面的类似,但是它们基本都是关系型数据库并且支持sql查询,例如SingleStoreDB, PostgreSQL, Clickhouse和Kinetica的pgvector/Supabase Vector(测试版)。

在一个已建立的数据库中添加基本的矢量功能并不是一件难事。比如矢量数据库Chroma就是来自ClickHouse

优点

包含矢量搜索功能,如点积,余弦相似度,欧几里得距离和曼哈顿距离。

使用相似度分数找到k个最近邻

多模型SQL数据库提供混合查询,并且可以将向量与其他数据结合起来以获得更有意义的结果

大多数SQL数据库都可以作为服务部署,可以在云上进行完全管理。

缺点

SQL数据库是为结构化数据而设计的。而矢量是非结构化数据,如图像、音频和文本。虽然关系数据库通常可以存储文本和blob,但大多数数据库不会将这些非结构化数据矢量化以用于机器学习

大多数SQL数据库(还)没有针对向量搜索进行优化。关系数据库的索引和查询机制主要是为结构化数据设计的,而不是为高维矢量数据设计的。虽然用于向量数据处理的SQL数据库的性能可能不是特别好,但支持向量的SQL数据库可能会添加扩展或新功能来支持向量搜索。

传统的SQL数据库不能向外扩展,它们的性能会随着数据的增长而下降。使用SQL数据库处理高维向量的大型数据集可能需要进行额外的优化,比如对数据进行分区或使用专门的索引技术来保持高效的查询性能。

总结

所以,那么如何选择呢?

1、如果入门或者demo的话可以直接使用开源的矢量库,比如Faiss可以支持本地的亿级数据,但是无法提供对外服务。

2、对于产品,如果要开发新的功能并且上线,那就要将矢量存储和现有的存储分开,专业的人做专业的事,可选择纯矢量数据库或开源矢量库自行开发(如果功能简单的话),保证系统的稳定性。

3、如果非要在现有系统上使用矢量功能,比如Elastic、MongoDB 上存储和检索大量的矢量数据,那么一定要做好测试,并且自求多福吧,没准你遇到的问题不仅chatgpt不知道,stackoverflow上也没有。

4、现在矢量存储还是再发展阶段,所以有些功能还不完善,所以尽量使用成熟版本,对于生产环境不要冒险尝鲜。

最后说说架构的建议:

微服务架构是一种软件架构风格,其中应用程序被拆分为一组小型、独立的服务,每个服务都专注于提供特定的业务功能,每个微服务都应该专注于解决一个具体的业务问题或提供一项特定的功能。这种精细化的划分使得每个微服务可以根据需要进行独立的扩展、部署和维护。

矢量搜索也不例外应该独立成单独的服务,服务都独立了存储不是也应该独立吗。

当然如果非要把矢量存储和业务数据放在一起也可以,我没有任何意见,反正出问题又不是我来解决,我就看个热闹就行了😉

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-07-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DeepHub IMBA 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
解读向量数据库
不论是RAG,还是Agent,几乎每个LLM 驱动的应用程序都可能会用到向量数据库。那么,向量数据库是什么?与传统数据库有何不同? 又如何选择向量数据库呢? 本文是老码农关于向量数据库的学习笔记。
半吊子全栈工匠
2023/11/27
1.9K0
解读向量数据库
2023年7月Vector DB Bench向量数据库排行榜Top50
Vector DB Bench为主流矢量数据库和云服务提供无偏的矢量数据库基准测试结果,是您实现矢量数据库比较最终性能和成本有效性的首选工具。VectorDBBench的设计考虑到了易用性,旨在帮助用户,甚至非专业人士,重现结果或测试新系统,使在众多矢量数据库云服务 和开源矢量数据库 中寻找最佳选择变得轻而易举。
LCHub低代码社区
2023/08/03
2.5K0
2023年7月Vector DB Bench向量数据库排行榜Top50
AI项目的十大向量数据库解决方案
探索AI项目十大向量数据库:Pinecone、Chroma、Weviate、Milvus、Faiss等,涵盖开源的Qdrant、Pgvector、ClickHouse、OpenSearch和Deep Lake。它们利用ANN算法高效处理高维向量,应用于LLM、推荐系统、图像识别等云原生场景,助力企业实现AI驱动的数据分析与相似性搜索。
云云众生s
2025/03/18
4650
2024年精选推荐的16个向量数据库:提升你的AI应用性能
在人工智能时代,向量数据库已成为数据管理和AI模型不可或缺的一部分。向量数据库是一种专门设计用来存储和查询向量嵌入数据的数据库。这些向量嵌入是AI模型用于识别模式、关联和潜在结构的关键数据表示。随着AI和机器学习应用的普及,这些模型生成的嵌入包含大量属性或特征,使得它们的表示难以管理。这就是为什么数据从业者需要一种专门为处理这种数据而开发的数据库,这就是向量数据库的用武之地。
用户3578099
2024/05/18
13.6K0
2024年精选推荐的16个向量数据库:提升你的AI应用性能
向量数据库简介和5个常用的开源项目介绍
在人工智能领域,有大量的数据需要有效的处理。随着我们对人工智能应用,如图像识别、语音搜索或推荐引擎的深入研究,数据的性质变得更加复杂。这就是向量数据库发挥作用的地方。与存储标量值的传统数据库不同,向量数据库专门设计用于处理多维数据点(通常称为向量)。这些向量表示多个维度的数据,可以被认为是指向空间中特定方向和大小的箭头。
deephub
2023/09/14
5.4K0
向量数据库简介和5个常用的开源项目介绍
向量数据库?那咱们就浅谈一下吧
今年自己做了不少业余的 LLM demo/PoC 级的应用,前前后后使用了几种向量数据库(Vector Database),包括尚不能称之为向量数据库的 FAISS,玩票性质的 redisearch 和 pgvector,闭源的 SAAS 服务 pinecone,以及使用 Rust 构建的 qdrant 和 lancedb。这些向量数据库各有千秋,支持的索引技术不尽相同,但它们都试图解决传统数据库或者搜索引擎在搜索高维度信息时的力不从心的问题。
tyrchen
2023/09/27
2.7K0
向量数据库?那咱们就浅谈一下吧
开源向量数据库比较:Chroma, Milvus, Faiss,Weaviate
语义搜索和检索增强生成(RAG)正在彻底改变我们的在线交互方式。实现这些突破性进展的支柱就是向量数据库。选择正确的向量数据库能是一项艰巨的任务。本文为你提供四个重要的开源向量数据库之间的全面比较,希望你能够选择出最符合自己特定需求的数据库。
deephub
2024/04/25
25.6K1
开源向量数据库比较:Chroma, Milvus, Faiss,Weaviate
向量检索(RAG)之向量数据库研究
研究内容主要包括:是否开源,支持的功能有哪些(是否支持暴力检索,支持哪些索引),是否有可视化界面,是否支持标量过滤。
码之有理
2025/03/05
1.3K1
RAG 架构中的向量数据库与文档嵌入:核心原理与实例解析
在人工智能领域,检索增强生成(Retrieval-Augmented Generation,RAG)是一种结合了检索(Retrieval)与生成(Generation)的方法,旨在提高语言模型的准确性和可靠性。向量数据库是 RAG 架构的关键组成部分,它使得模型能够存储、检索和使用外部知识,从而提升文本生成的质量和准确性。
编程小妖女
2025/02/09
7630
RAG 架构中的向量数据库与文档嵌入:核心原理与实例解析
这7个矢量数据库你应该知道!
在人工智能(AI)、机器学习(ML)和数据工程这些日新月异的领域里,高效地存储和检索数据的能力极为关键。向量数据库因其在处理这些技术所依赖的复杂和高维数据方面的能力而成为一项至关重要的解决方案。本文[1]介绍了七种AI/ML/数据工程师必须了解的向量数据库,重点介绍了它们各自的特色以及它们是如何满足现代以数据为中心的应用需求的。
数据科学工厂
2024/07/26
6890
这7个矢量数据库你应该知道!
向量数据库技术原理及常见向量数据库介绍
向量数据库是一种专为高效存储和检索高维向量数据而设计的数据库系统。这些向量通常来源于机器学习和深度学习模型对非结构化数据(如文本、图像、音频、视频)的编码处理。通过将原始数据转化为密集的数值向量,向量数据库能够支持诸如相似性搜索、推荐系统、图像检索、语音识别等多种应用场景。
用户7353950
2024/06/04
1.3K0
向量数据库技术原理及常见向量数据库介绍
矢量数据库与LLM的集成:实践指南
通常,LLM会在各种各样的数据上进行训练,这使它们具有广泛的理解能力,但可能会导致在特定的知识领域存在差距。有时,它们甚至可能产生与目标无关或带有偏见的信息——这是从广阔但未经筛选的web学习的副产品。为了解决该问题,我们引入了向量数据库(Vector Database)的概念。这些数据库以一种称为"向量嵌入"的独特格式存储数据,可以让LLMs掌握和使用的信息更连贯和准确。
charlieroro
2024/03/16
4570
矢量数据库与LLM的集成:实践指南
一图文秒懂 向量数据库、数据库发展过程播
向量数据库是一种特殊的数据库,它专门用于存储和管理向量数据。向量数据是指由多个数值组成的数据,这些数值通常表示某种特征或属性。例如,一张图片可以表示为一个由像素值组成的向量,一个文本可以表示为一个由单词频率组成的向量。
用户10071055
2023/08/21
9480
深度解密大模型的“军火商”,向量数据库的八大技术方向!
2023年,科技圈最火的无疑是大模型。然而,大模型的真正商用落地还需要一定时间,但大模型的“上游”却已经感受到了火热的氛围。
数据猿
2023/09/15
9030
深度解密大模型的“军火商”,向量数据库的八大技术方向!
Milvus Cloud凭借AI原生,可视化优势荣登全球向量数据库性能排行榜VectorDBBench.com 榜首
在当今的大数据时代,随着人工智能技术的快速发展,向量数据库作为处理大规模数据的关键工具,其性能和效率越来越受到关注。最近,全球向量数据库性能排行榜 VectorDBBench.com 公布了一份最新的评估报告,引人瞩目的是,成立不到一年的新兴公司 Milvus Cloud 凭借其 AI 原生和可视化优势,成功荣登榜首。
LCHub低代码社区
2023/08/05
6360
Milvus Cloud凭借AI原生,可视化优势荣登全球向量数据库性能排行榜VectorDBBench.com 榜首
AI跑车引擎——向量数据库第二篇
在AI盛行的当下,Vector Search结合LLM的应用模式已经在应用领域逐渐成为主流,要想开好AI这辆跑车,那么首先需要有一款衬手的引擎,它就是向量数据库。这也是ChatGPT曝火后,很多向量数据库公司获得了数亿美元的融资的原因。
山行AI
2023/06/14
1.7K0
AI跑车引擎——向量数据库第二篇
毫秒级!千万人脸库快速比对,上亿商品图片检索,背后的极速检索用了什么神器? ⛵
互联网发展的数十年来,技术在飞速前进,伴随着海量结构化表格数据的存储,结构化数据上的商业智能分析挖掘发展,也有海量的非结构化数据散布于各个互联网平台:
ShowMeAI
2022/08/09
1.6K0
毫秒级!千万人脸库快速比对,上亿商品图片检索,背后的极速检索用了什么神器? ⛵
向量数据库基础:HNSW
了解分层可导航小世界索引,包括其优缺点以及如何通过 pgvector 在 PostgreSQL 中使用它们。
云云众生s
2024/08/16
3610
向量数据库基础:HNSW
Redis 7.2 加速AI应用与低延迟矢量处理的新利器
向量是数学、物理学和工程科学等多个自然科学中的基本概念,它是一个具有方向和长度的量,用于描述问题,如空间几何、力学、信号处理等。在计算机科学中,向量被用于表示数据,如文本、图像或音频。此外,向量还代表AI模型对文本、图像、音频、视频等非结构化数据的印象。
Tinywan
2023/09/18
5370
Redis 7.2 加速AI应用与低延迟矢量处理的新利器
.NET 原生驾驭 AI 新基建实战系列(六):Pinecone ── 向量数据库的云原生先锋
随着人工智能和机器学习技术的快速发展,向量数据在许多应用场景中变得越来越重要。从推荐系统到自然语言处理,再到图像搜索,向量搜索技术成为实现高效、精准匹配的核心。Pinecone 作为一个托管的向量数据库,为开发者提供了一种简单而强大的解决方案,能够高效地存储和查询高维向量数据。与此同时,微软的开源项目 Semantic Kernel 将 Pinecone 集成到其生态系统中,进一步增强了开发者构建智能应用的能力。
AI.NET 极客圈
2025/05/06
1180
.NET 原生驾驭 AI 新基建实战系列(六):Pinecone ── 向量数据库的云原生先锋
推荐阅读
相关推荐
解读向量数据库
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档