你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
开源矢量数据库
当开发人员选择矢量数据库时,开放源选项可提供许多优势。 “开放源代码”表示软件的源代码可供自由使用,使用户能够根据其特定需求自定义数据库。 这种灵活性有利于受独特数据监管要求约束的组织,如金融服务行业中的公司。
开源矢量数据库的另一个优势是享有强大的社区支持。 活跃的用户社区通常有助于开发这些数据库、提供支持和共享最佳做法,从而促进创新。
一些个人选择开放源代码向量数据库,因为它们是“免费”的,这意味着无需付费即可获取或使用相应软件。 另一种方法是使用托管矢量数据库服务提供的免费层。 这些托管服务不仅提供免费的访问权限(有特定的使用量限制),还通过处理维护、更新和可伸缩性来简化运营负担。 因此,如果使用托管矢量数据库服务的免费层,用户就可以节省成本,同时减少管理开销。 此方法使用户能够更专注于其核心活动,而不是数据库管理。
矢量数据库的工作机制
矢量数据库旨在存储和管理矢量嵌入(矢量嵌入是高维空间中数据的数学表示形式)。 在此空间中,每个维度对应于数据的一个特征,数万个维度可用于表示复杂的数据。 矢量在此空间中的位置表示其特征。 字词、短语或整个文档、图像、音频和其他类型的数据都可以矢量化。 这些矢量嵌入用于相似性搜索、多模式搜索、建议引擎、大型语言模型 (LLM) 等。
这些数据库的体系结构通常包括存储引擎和索引机制。 存储引擎会优化矢量数据的存储,以便高效检索和操作,而索引机制则会整理数据进行快速搜索和检索操作。
在矢量数据库中,根据矢量距离或类似性,通过矢量搜索算法对嵌入进行索引编制和查询。 确定最相关的数据需要一个可靠的机制。 一些已知的矢量搜索算法包括分层导航小型世界 (HNSW)、倒置文件 (IVF) 等。
矢量数据库用于分析和生成式 AI 中的许多领域和情况,包括自然语言处理、视频和图像识别、推荐系统、搜索等。例如,可以使用矢量数据库来执行以下操作:
- 根据内容、主题、情绪和样式识别类似的图像、文档和歌曲
- 根据特征、功能和用户组识别相似产品
- 根据个人偏好推荐内容、产品或服务
- 根据用户组的相似性推荐内容、产品或服务
- 从大型选择池中确定最适合的潜在选项以满足复杂要求
- 识别与主要模式或正常模式不同的数据异常或欺诈活动
- 为 AI 代理实现持久性内存 (PMEM)
- 启用检索增强生成 (RAG)
集成矢量数据库与纯矢量数据库
NoSQL 或关系数据库中有两种常见的矢量数据库实现类型:纯矢量数据库和集成矢量数据库。
纯矢量数据库旨在高效地存储和管理矢量嵌入,以及少量元数据;它独立于从中派生嵌入的数据源。
集成到高性能 NoSQL 或关系数据库中的矢量数据库提供了其他功能。 NoSQL 或关系数据库中的集成矢量数据库可以存储、索引和查询嵌入以及相应的原始数据。 此方法避免了在单独的纯矢量数据库中复制数据产生的额外成本。 此外,将矢量嵌入和原始数据保存在一起可以更好地促进多模式数据操作,并且可以实现更高的数据一致性、可伸缩性和性能。
选择最佳开源矢量数据库
选择最佳开源矢量数据库需要考虑多种因素。 数据库的性能和可伸缩性至关重要,因为它们会影响数据库是否可以处理特定的工作负载要求。 具有高效索引和查询功能的数据库通常会提供最佳性能。 另一个因素是数据库可用的社区支持和文档。 强大的社区和充足的文档可以提供有价值的帮助。 下面是一些常用的开源矢量数据库:
- 色度
- Milvus
- Qdrant
- Weaviate
不过,最受欢迎的选项不一定是最适合你的选项。 因此,你应该根据功能、支持的数据类型、与所使用的现有工具和框架的兼容性来比较不同的选项。 你还应该牢记开源矢量数据库的挑战(如下文所述)。
开源矢量数据库的挑战
大多数开源矢量数据库(包括上面列出的那些)都是纯矢量数据库。 换句话说,它们仅用于存储和管理矢量嵌入项,以及少量的元数据。 由于它们独立于从中派生嵌入项的数据源,因此,使用它们需要在服务集成之间发送数据,对于生产工作负载而言,这增加了额外的成本、复杂性和瓶颈。
它们也带来了开源数据库的典型挑战:
- 设置:用户需要深入了解才能安装、配置和操作,尤其是对于复杂的部署。 在纵向扩展操作时优化资源和配置需要密切监视和调整。
- 维护:用户必须管理自己的更新、修补程序和维护。 因此,ML 专业知识是不够的;用户还必须在数据库管理方面具有丰富的经验。
- 支持:与托管服务相比,官方支持可能有限,更多地需要依靠社区协助。
因此,虽然最初是免费的,但开放源代码矢量数据库在纵向扩展时会产生巨大的成本。 扩大运营需要更多的硬件、熟练的 IT 人员和先进的基础结构管理,这会导致硬件、人员和运营成本增加。 尽管缺少许可费用,但缩放开源矢量数据库在财务上可能要求很高。
解决开源矢量数据库的挑战
集成在高性能 NoSQL 或关系数据库中的完全托管矢量数据库避免了开源矢量数据库的额外成本和复杂性。 这种数据库将嵌入项与相应的原始数据一起存储、查询和编制索引。 此方法避免了在单独的纯矢量数据库中复制数据产生的额外成本。 此外,将矢量嵌入和原始数据保存在一起可以更好地促进多模式数据操作,并且可以实现更高的数据一致性、可伸缩性和性能。 同时,完全托管的服务帮助开发人员避免了设置、维护开源矢量数据库以及需要依赖社区援助所带来的麻烦。 而且,某些托管矢量数据库服务提供一个终身免费层级。
例如 Azure Cosmos DB for MongoDB 中的集成矢量数据库。 它允许开发人员享受与开源矢量数据库关联的相同财务权益,而由服务提供商处理维护、更新和伸缩。 要进行纵向扩展操作时,升级是快速而简单的,并可同时保持较低的总拥有成本 (TCO)。 此服务还可用于方便地缩放已在生产环境中的 MongoDB 应用程序。