向量数据库 首次出现于几年前,为基于神经网络的新一代搜索引擎提供动力。如今,它们扮演着新的角色:帮助组织部署基于 GPT4 等大型语言模型的应用程序。
向量数据库与标准关系数据库(例如 PostgreSQL)不同,后者是为了按行和列存储表格数据而构建的。它们也不同于以 JSON 形式存储数据的 MongoDB 等较新的 NoSQL 数据库。这是因为向量数据库旨在存储和检索一种类型的数据:向量嵌入。
向量嵌入是作为机器学习过程的训练阶段的输出而产生的训练数据的精炼表示。它们充当在推理过程中处理新数据的过滤器。
目前有哪些向量数据库解决方案可帮助您存储和检索高维向量?在我们继续回顾 15 个最有前途的载体数据库和库之前,让我们先澄清这两种技术之间的区别。
1.向量库与向量数据库
虽然专用向量数据库是为有效管理密集向量而开发的存储系统,但向量库集成到现有的数据库管理系统(DBMS)或搜索引擎中以提供相似性搜索。
向量库是静态数据应用(例如学术信息检索基准)的不错选择。向量数据库对于需要频繁更改数据的应用程序非常有用,例如电子商务建议、图像搜索和语义搜索。
您可以为您的项目选择的最佳向量数据库是什么? 当今市场上领先的向量数据库有哪些? 深入了解我们对市场上 15 个最流行的向量数据库的概述,以了解您的选择并为您的项目选择最佳工具。
2.2024 年您应该考虑的 15 个最佳向量数据库
2.1.Pinecone
松果:https: //www.pinecone.io/
开源?不
GitHub 星星:-
它解决什么问题?
Pinecone 是一个托管的云原生向量数据库,具有简单的 API,没有基础设施要求。用户可以启动、运行和扩展他们的人工智能解决方案,而无需任何基础设施维护、服务监控或算法故障排除。
该解决方案可以快速处理数据,并允许用户使用元数据过滤器和稀疏密集索引支持来实现高质量的相关性,从而保证在广泛的搜索需求中快速、准确地获得结果。
主要特征
· 检测重复项。
· 排名跟踪。
· 资料搜寻。
· 分类。
· 重复数据删除。
2.2.Milvus
风筝:https: //milvus.io/
开源?是的
GitHub 星数:21.1k
它解决什么问题?
Milvus 是一个开源向量数据库,旨在促进向量嵌入、高效相似性搜索和 AI 应用。它于 2019 年 10 月在开源 Apache License 2.0 下发布,现在是 LF AI & Data Foundation 赞助的研究生项目。
该工具简化了非结构化数据搜索,并提供独立于部署环境的统一用户体验。为了提高弹性和适应性,Milvus 2.0 重构版本中的所有组件都是无状态的。
Milvus 的用例包括图像搜索、聊天机器人和化学结构搜索。
主要特征
· 在几毫秒内搜索数万亿个向量数据集。
· 非结构化数据管理很简单。
· 始终可用的可靠向量数据库。
· 高度可扩展和适应性强。
· 搜索混合体。
· 统一的Lambda结构。
·得到社会各界的支持和业界的认可。
2.3.Chroma
色度:https: //www.trychroma.com/
开源?是的
GitHub 星数:7k
它解决什么问题?
Chroma DB 是一个开源的 AI 原生嵌入向量数据库,旨在通过使知识、事实和技能可插入法学硕士规模的机器学习模型,简化创建由自然语言处理支持的法学硕士应用程序的过程。以免出现幻觉。
许多工程师表达了对“ChatGPT 但数据”的渴望,Chroma 通过基于嵌入的文档检索提供此链接。它还提供了团队存储、嵌入和查询数据所需的一切“电池”,包括过滤等强大功能,以及即将推出的智能分组和查询相关性等更多功能。
主要特征
· 功能丰富:查询、过滤、密度估计以及许多其他功能。
·LangChain(Python 和 JavScript)、LlamaIndex 等将很快添加。
· 在 Python 笔记本中运行的相同 API 可以扩展到您的集群以进行开发、测试和生产。
2.4.Weaviate
Weaviate:https: //github.com/weaviate/weaviate
开源?是的
GitHub 星数:6.7k
它解决什么问题?
Weaviate 是一个云原生开源向量数据库,具有弹性、可扩展且快速的特点。该工具可以使用尖端的机器学习模型和算法将文本、照片和其他数据转换为可搜索的向量数据库。
它可以在个位数毫秒内对数百万个项目执行 10-NN 邻居搜索。工程师可以使用它在导入过程中对数据进行向量化或提交自己的向量,最终创建用于问答提取、汇总和分类的系统。
Weaviate 模块支持使用 OpenAI、Cohere 或 HuggingFace 等著名服务和模型中心,以及本地和定制模型。Weaviate 的设计考虑到了规模、复制和安全性。
主要特征
· 用于人工智能搜索、问答、将法学硕士与您的数据相结合以及自动分类的内置模块。
· 完整的CRUD能力。
· 云原生、分布式、随着您的工作负载而增长,并且在 Kubernetes 上运行良好。
· 使用此数据库将 ML 模型无缝传输到 MLOps。
2.5.Deep Lake
深湖:https: //github.com/activeloopai/deeplake
开源?是的
GitHub 星数:6.4k
它解决什么问题?
Deep Lake 是一个人工智能数据库,采用专有存储格式,专为利用自然语言处理的深度学习和基于法学硕士的应用程序而设计。它通过向量存储和一系列功能帮助工程师更快地部署基于 LLM 的企业级产品。
Deep Lake 可处理任何大小的数据,无服务器,并允许您将所有数据存储在单个位置。
它还提供工具集成来帮助简化您的深度学习操作。例如,使用 Deep Lake 和权重与偏差,您可以跟踪实验并实现完整的模型可重复性。该集成会自动将数据集相关信息(URL、提交哈希、视图 ID)传送到您的 W&B 运行中。
主要特征
· 存储所有数据类型(嵌入、音频、文本、视频、图像、pdf、注释等)。
· 查询和向量搜索,
· 大规模训练模型期间的数据流。
· 工作负载的数据版本控制和沿袭。
·与 LangChain、LlamaIndex、Weights & Biases 等工具集成。
2.6.Qdrant
Qdrant:https: //github.com/qdrant/qdrant
开源?是的
GitHub 星数:11.5k
它解决什么问题?
Qdrant 是一个开源向量相似性搜索引擎和数据库。它提供了一种生产就绪的服务,具有易于使用的 API,用于存储、搜索和管理具有额外负载的点向量和高维向量。
该工具旨在提供广泛的过滤支持。Qdrant 的多功能性使其成为神经网络或基于语义的匹配、分面搜索和其他应用的理想选择。
主要特征
· JSON 有效负载可以与向量连接,从而允许基于有效负载的存储和过滤。
·支持多种数据类型和查询条件,例如文本匹配、数值范围、地理位置等。
· 查询规划器利用缓存的有效负载信息来改进查询执行。
· 断电时预写,更新日志记录所有操作,可以轻松重建最新的数据库状态。
· Qdrant 的功能独立于外部数据库或编排控制器,从而简化了配置。
2.7.Elasticsearch
弹性搜索: https://www.elastic.co/elasticsearch/
开源?是的
GitHub 星数:64.4k
它解决什么问题?
Elasticsearch 是一个开源、分布式、RESTful 分析引擎,可以处理文本、数字、地理、结构化和非结构化数据。它基于 Apache Lucene,最初由 Elasticsearch NV(现为 Elastic)于 2010 年发布。Elasticsearch 是 Elastic Stack 的一部分,Elastic Stack 是一套用于数据获取、丰富、存储、分析和可视化的免费开放工具。
Elasticsearch 可以处理广泛的用例 - 它集中存储您的数据,以实现闪电般的快速搜索、微调的相关性以及可轻松扩展的复杂分析。它可以水平扩展以容纳每秒数十亿个事件,同时自动控制索引和查询如何在整个集群中分散以实现流畅的操作。
主要特征
· 集群和高可用性。
· 自动节点恢复和数据重新平衡。
· 水平可扩展性。
· 跨集群和数据中心复制,允许辅助集群作为热备份运行。
· 跨数据中心复制。
· Elasticsearch 识别错误以保持集群(和数据)的安全和可访问性。
· 在从头开始构建的分布式架构中工作,以提供持续的安心。
2.8.Vespa
维斯帕:https: //vespa.ai/
开源?是的
GitHub 星数:4.5k
它解决什么问题?
Vespa 是一个开源数据服务引擎,允许用户在服务时对海量数据进行存储、搜索、组织和机器学习判断。
巨大的数据集必须分散在众多节点上并并行检查,而 Vespa 是一个可以为您处理这些任务的平台,同时保持出色的可用性和性能。
主要特征
· 写入会被确认回客户端,当它们在查询中持久且可见时,会在几毫秒内发出它们。
· 在为请求提供服务时,可以以每秒每个节点数千到数万次的连续速率传送写入。
· 数据以可配置的冗余方式复制。
· 查询可以包括结构化过滤器、自由文本搜索运算符和向量搜索运算符以及巨大的张量和向量的任意组合。
· 可以根据查询定义对查询的匹配进行分组和聚合。
·所有比赛都包括在内,即使它们同时在多台机器上运行。
2.9.Vald
市政府:https: //vald.vdaas.org/
开源?是的
GitHub 星数:1274
它解决什么问题?
Vald 是一个分布式、可扩展且快速的向量搜索引擎。它在构建时考虑到了云原生,采用最快的 ANN 算法 NGT 来帮助找到邻居。
Vald 提供自动向量索引和索引备份以及水平缩放,使其能够搜索数十亿个特征向量数据。它使用简单且可配置性极强,例如,您可以自定义高度可配置的入口/出口过滤器以与 gRPC 接口配合使用。
主要特征
· Vald 通过对象存储或持久卷提供自动备份,从而实现灾难恢复。
·它将向量索引分发给众多代理,每个代理都保留一个唯一的索引。
· 该工具通过将每个索引存储在许多代理中来复制索引。当 Vald 代理出现故障时,自动重新平衡副本。
· 适应性强——您可以选择向量维数、副本数等。
· 支持 Python、Golang、Java、Node.js 等更多编程语言。
2.10.ScaNN
ScaNN:https: //github.com/google-research/google-research/tree/master/scann
开源?是的
GitHub 星星:-
它解决什么问题?
ScaNN(可扩展最近邻)是一种有效地大规模搜索向量相似性的方法。谷歌的ScaNN提出了一种全新的压缩方法,可以显着提高准确性。据ann-benchmarks.com称,这使得它的性能比其他向量相似性搜索库高出两倍。
它包括最大内积搜索的搜索空间修剪和量化,以及欧几里德距离等附加距离函数。该实现适用于支持 AVX2 的 x86 处理器。
2.11.pgvector
pgvector:https: //github.com/pgvector/pgvector
开源?是的
GitHub 星数:4.5k
它解决什么问题?
pgvector 是一个用于搜索向量相似度的 PostgreSQL 扩展。您还可以使用它来保留嵌入。最终,pgvector 可以帮助您将所有应用程序数据存储在一个位置。
它的用户可以从 ACID 合规性、时间点恢复、JOIN 以及我们喜爱 PostgreSQL 的所有其他出色功能中受益。
主要特征
· 精确和近似最近邻搜索
·L2 距离、内积和余弦距离
· 具有 PostgreSQL 客户端的任何语言
2.12.Faiss
Faiss :https: //github.com/facebookresearch/faiss
开源?是的
GitHub 星数:23k
它解决什么问题?
Faiss 由 Facebook AI Research 开发,是一个用于快速、密集向量相似性搜索和分组的开源库。它包括搜索任意大小的向量集的方法,直到那些可能无法装入 RAM 的向量集。它还附带用于评估和参数调整的代码。
Faiss 基于索引类型,该索引类型维护一组向量并提供使用 L2 和/或点积向量比较来搜索它们的功能。某些索引类型(例如精确搜索)是简单的基线。
主要特征
· 不仅返回最近邻居,还返回第二最近邻居、第三最近邻居和第 k 最近邻居。
· 您可以一次搜索多个向量,而不仅仅是一个(批处理)。
· 使用最大内积搜索而不是最小欧几里得搜索。
· 其他距离(L1、Linf 等)也得到较小程度的支持。
· 返回查询位置指定半径内的所有元素(范围搜索)。
· 您可以将索引保存到磁盘,而不是将其存储在 RAM 中。
2.13.ClickHouse
ClickHouse:https: //clickhouse.com/
开源?是的
GitHub 星数:31.8k
它解决什么问题?
ClickHouse是一个开源的面向列的DBMS,用于在线分析处理,使用户能够通过运行SQL查询来实时生成分析报告。实际的面向列的 DBMS 设计是 ClickHouse 独特性的核心。这种独特的设计提供了紧凑的存储,并且值中没有不必要的数据,从而显着提高了处理性能。
它使用向量来处理数据,这提高了CPU效率并有助于ClickHouse的卓越速度。
主要特征
· 数据压缩是一项可以显着提高 ClickHouse 性能的功能。
· ClickHouse 将低延迟数据提取与使用标准硬盘的成本效益相结合。
· 它使用多核和多服务器设置来加速大规模查询,这在列式 DBMS 中是罕见的功能。
· 凭借强大的 SQL 支持,ClickHouse 擅长处理各种查询。
· ClickHouse的持续数据添加和快速索引满足实时需求。
·其低延迟提供快速查询处理,这对于在线活动至关重要。
2.14.OpenSearch
开放搜索: https://opensearch.org/
开源?是的
GitHub 星星:-
它解决什么问题?
在其他向量数据库中,这是一个有趣的解决方案。使用 OpenSearch 作为向量数据库将经典搜索、分析和向量搜索的强大功能整合到一个解决方案中。OpenSearch 的向量数据库功能可最大限度地减少开发人员操作、管理和集成 AI 生成的资产所需的工作,从而有助于加快 AI 应用程序的开发。
您可以引入模型、向量和信息来启用向量、词汇和混合搜索和分析,并具有内置的性能和可扩展性。
主要特征
·作为向量数据库,OpenSearch 可用于多种目的,例如搜索、个性化、数据质量和向量数据库引擎。
· 在其搜索用例中,您可以找到多模态搜索、语义搜索、视觉搜索和 gen AI 代理。
· 您可以使用协作过滤技术创建产品和用户嵌入,并使用 OpenSearch 为您的推荐引擎提供动力。
· 为了帮助数据质量操作,OpenSearch 用户可以使用相似性搜索来自动执行数据中的模式匹配和复制。
· 该解决方案可让您创建一个具有 Apache 2.0 许可的集成向量数据库的平台,为嵌入和强大的向量搜索提供可靠且可扩展的解决方案。
2.15.Cassandra
阿帕奇卡桑德拉: https://cassandra.apache.org/
开源?是的
GitHub 星数:8.3k
它解决什么问题?
Cassandra 是一个免费、开源的分布式、宽列存储、NoSQL 数据库管理系统。它旨在处理跨多个商用服务器的大量数据,同时保持高可用性,无单点故障。
Cassandra 很快将配备向量搜索,这表明 Cassandra 社区致力于快速提供可靠的创新。Cassandra 在处理大数据的人工智能开发人员和企业中越来越受欢迎,因为它为他们提供了构建复杂的数据驱动应用程序的能力。
主要特征
· Cassandra 将拥有一种新的数据类型来促进高维向量的存储。这将允许操作和存储广泛用于人工智能应用程序的 Float32 嵌入。
· 该工具还将提供一个名为“VectorMemtableIndex”的新存储附加索引(SAI),以支持近似最近邻(ANN)搜索功能。
· 它将提供新的 Cassandra 查询语言 (CQL) 运算符 ANN OF,使用户可以更轻松地对其数据运行 ANN 搜索。
· Cassandra 的新向量搜索功能被设计为现有 SAI 框架的扩展,无需重新设计基本索引引擎。
3.如何为您的项目选择合适的向量数据库
为您的项目选择向量数据库时,请考虑以下因素:
· 您是否有工程团队来托管数据库,或者您是否需要完全托管的数据库?
· 您是否有向量嵌入,或者是否需要向量数据库来生成它们?
·延迟要求,例如批量或在线,
· 团队中的开发人员经验,
· 给定工具的学习曲线,
· 解决方案的可靠性,
· 实施和维护成本,
· 安全性和合规性。
随着人工智能继续席卷科技行业,向量数据库将变得司空见惯,我们很自然地会看到越来越多的工具出现在这个市场上。