向量数据库:RAG 应用的关键技术选型与对比
数据库领域的发展日新月异,已涵盖众多细分市场和应用场景。如今,一个全新的数据库类别——向量数据库,正在迅速崛起。这一创新得益于生成式人工智能技术的飞速进步,以及大语言模型在各行各业的广泛应用。向量数据库的出现,无疑将引领数据处理的变革,为我们带来前所未有的可能性。本文将围绕向量数据库,详细介绍向量存储的高级分类,并尝试从在企业规模上构建生成式人工智能应用程序的角度来审视这个新市场。
向量存储选型
向量存储分类

向量库(Vector Libraries)
一些知名的开源库可以直接在应用程序代码中使用,用于存储和搜索向量。这些库通常使用计算机的内存空间,从企业数据库的可扩展性角度来考虑的话不适用,但适用于小型项目或原型验证。
最受欢迎的向量库包括 Meta 发布的 FAISS、Spotify 的 Approximate Nearest Neighbor Oh Yeah (ANNOY)、Non-Metric Space Library (NMSLIB) 和 Scalable Nearest Neighbors (ScaNN) 等等。
单一向量数据库(Vector-Only Databases)
单一向量数据库通常仅用于向量场景,其中开源和商业可用的产品都有。单一向量数据库的缺点是,在多数情况下,这些数据库通常无法在某一点之上进行扩展,并且缺乏企业级功能,例如多部署选项(本地部署、混合部署和云端部署)、灾难恢复(DR)、ACID 合规性、数据安全和治理以及多 AZ 部署等。对于较小的项目和原型,这种方法效果就很好,因为可以快速启动,用于搜索 PDF 或其他非结构化数据文件。
还有需要注意的是查询效率问题,这些数据库仅存储有关数据本身的少量元数据,因此为了检索完整的文本或文件时需要进行两次调用:第一次是向量数据库获取搜索结果,然后根据元数据进行第二次调用以获取实际数据。这取决于应用程序的复杂性以及数据是否分布在多个数据库中,这些会迅速增加延迟。
企业级向量数据库(Enterprise Databases with Vectors)
除了向量数据库和单一向量数据库外,目前几乎所有主流数据库都增加了向量功能。包括 MongoDB、Neo4j、CouchDB 和 Postgres 等。在超大规模数据库方面,AWS 在 OpenSearch Service、Redis 的 MemoryDB、Amazon DocumentDB 和 Amazon DynamoDB 中引入了向量支持。同样,Google 通过开源扩展 pgvector 在 PostgreSQL 的 AlloyDB 中引入了向量。自 2017 年以来已经具备向量功能并支持精确关键字匹配的企业数据库之一是 SingleStore。在 2023 年,他们也宣布支持向量索引。
不过,传统巨头 Oracle 和 SQL Server 还没有支持向量存储,但很可能会在接下来的几个月内增加对原生向量的支持。在数据仓库类别中,Databricks 也于 2023 年 11 月起增加了对向量的支持。
企业级向量数据库的优势:
- 更广泛的数据处理:这些数据库提供向量处理功能,同时还具备传统数据库的功能,比如支持 SQL 或 JSON 数据。这意味着公司不需要再购买另一个数据库导致数据架构进一步复杂化。
- 在 RAG 中的多功能性:结构化和向量数据检索的结合可以为生成模型提供更丰富的上下文语境,从而基于上下文感知实现更准确的响应。

主流向量存储方案详解
FAISS (Facebook AI Similarity Search)
FAISS 是 Facebook (现 Meta) 的 AI 团队开发的开源库,专门用于高效相似性搜索和密集向量的聚类。它特别适用于大规模向量搜索任务,在 AI 研究中被广泛用于图像和视频检索等任务。FAISS 擅长处理高维数据,但不直接支持 SQL 或 JSON 等结构化、半结构化数据类型。它是一个向量库,而不是一个完整的数据库,并且不提供托管或云服务。


