什么是矢量数据库?

矢量数据库是指任何可让您存储和查询向量嵌入或非结构化数据(如文本、图像或音频)的数字表示形式并将其编入索引的数据库。

Google Cloud 将这些企业级功能直接集成到托管式服务中(包括 AlloyDB for PostgreSQLSpannerBigQuery),帮助您构建智能应用,而无需管理单独的基础设施。

支持向量的数据库:解锁语义搜索!

什么是向量嵌入?

向量嵌入是数据的数值表示法,通常定义为浮点数的数组。它们将复杂的非结构化数据(如文本、图片或音频)转换为机器学习模型可以处理的格式。

通过将此数据映射到向量空间,嵌入可以捕获语义含义;相似项的位置会更接近,而不相似项的位置会更远。此空间关系有助于系统根据上下文和含义(而不仅仅是关键字匹配)来识别数据点之间的联系。

其他受支持的数据类型

虽然一些专用数据库仅支持向量嵌入,但另一些数据库除了支持向量嵌入之外,还支持许多不同的数据和查询类型。这对于基于丰富的真实世界数据构建生成式人工智能应用至关重要。随着使用向量嵌入进行语义查询的优势越来越明显,大部分数据库都将添加矢量支持。未来,我们相信每个数据库都将是矢量数据库。

了解 Vertex AI 的向量搜索如何支持构建高性能生成式 AI 应用。Vertex AI 的 Vector Search 基于可伸缩最近邻搜索 (ScaNN),ScaNN 是 Google 研究团队开发的一种可伸缩且高效的矢量搜索技术,非常适合处理大型数据集,也可满足实时搜索需求。观看下方视频详细了解向量搜索和嵌入,并参考此快速入门指南以开始操作。

观看视频,了解如何使用嵌入、向量搜索和 RAG 构建依托 LLM 的应用。

矢量数据库的工作原理

高效查询大量向量需要专门的索引和搜索策略,这与传统的文本或数字字段不同。由于向量没有单一逻辑排序,向量数据库依赖以下机制来检索数据:

  • 最近邻搜索 (KNN):最常见的用例是识别与查询向量最接近的“k”个向量。这会使用点积、余弦相似度或欧几里得距离等距离指标,来测量向量空间中的邻近度。
  • 近似最近邻 (ANN):计算查询向量与每个其他向量之间的确切距离可能需要耗费大量的计算资源。为了帮助降低此成本,数据库使用了 ANN 算法。这些算法可以通过牺牲少量准确率(召回率)来显著提高搜索速度,对于大多数语义搜索应用来说,这是一个可以接受的折衷方案。
  • 向量索引:为了实现更快的查找,向量索引会整理数据,以便将邻近向量的集群分组在一起。常见的结构包括列表(表示向量集群)、图(将向量连接到近邻项)和树(其中分支表示集群的子集)。每种索引类型在查找速度、内存消耗和索引创建时间方面各有利弊。
  • 元数据过滤:大多数应用需要的不仅仅是语义相似度。例如,用户可能会搜索与“一条鱼的暖心故事”类似的书籍(向量搜索),但将结果限制为“20 美元以下”的商品(元数据过滤)。高级向量数据库将这些 SQL 谓词与向量相似度相结合,以执行强大的混合查询。

矢量数据库的使用场景

向量嵌入可捕获复杂数据的语义含义。结合提供高效索引和检索的向量数据库,开发者可以构建各种智能应用和数据处理工具。

开发者可以将向量数据库用作大语言模型 (LLM) 的外部知识库。通过在向模型发送提示之前检索相关的专有上下文,应用可以减少幻觉,并提供事实准确的、特定领域的回答。这对于构建 AI 赋能的支持智能体、法律文档分析器和内部知识管理系统至关重要。

借助向量数据库,开发者可以构建超越协同过滤的个性化系统。通过将用户行为和商品属性表示为向量,应用可以实时识别相似的商品,或将用户与符合其偏好的内容进行匹配。此架构支持电子商务产品建议、内容 Feed 和媒体流推荐。

与传统关键字搜索不同,向量数据库支持语义搜索应用,能够理解用户意图。开发者可以构建搜索体验,让用户能够按概念而非确切措辞进行查询。此外,由于向量可以在同一空间中表示不同的数据类型,因此您可以构建多模态搜索工具,让用户可以使用文本描述搜索图片,或使用输入图片查找相关文档。

向量数据库可以帮助识别海量数据集中的异常模式。通过建立代表“正常”行为或交易的向量空间,开发者可以以编程方式检测远离已建立集群的离群值。此功能对于构建金融欺诈检测系统、网络安全监控工具和 IT 基础设施健康检查至关重要。

在数据工程工作流中,向量数据库可以帮助清理和统一不同的数据集。通过比较客户记录或商品详情的嵌入,系统可以识别重复条目,即使文本略有不同(例如“Main St.”与“Main Street”)。这有助于组织维护单一、准确的数据视图。

Google Cloud 上的向量数据库

AlloyDB for PostgreSQL

AlloyDB for PostgreSQL 将 PostgreSQL 的兼容性与 Google 的可扩缩基础设施相结合。它通过标准 pgvector 扩展程序内置了对向量嵌入的支持,并使用 Google 的 ScaNN 索引进行了增强。这可以加快向量查询速度,并实现“内嵌过滤”,从而同时评估向量相似度和元数据过滤条件,帮助优化混合搜索,提升性能。

示例:房地产混合搜索

一个房地产应用,用户想要根据“氛围”(例如,“拥有自然光的中世纪现代风格”)查找房屋,同时严格遵守一些硬性限制条件(例如,“3 间卧室”“价格低于 80 万美元”“位于 A 学区”)。

  • 挑战:标准向量搜索可能会返回一套售价 200 万美元的“中世纪”房屋,或返回一套错误学区的“中世纪”房屋;标准 SQL 查询可以按价格进行过滤,但无法理解“中世纪氛围”
  • 解决方案:AlloyDB 的内嵌过滤功能可在一次扫描中同时扫描向量索引并检查 SQL 元数据过滤条件(价格、位置)
  • 结果:该应用可在几毫秒内返回符合审美和预算的房屋,且不会像后过滤那样降低性能。

Google Cloud 将向量搜索功能直接集成到核心数据库服务中,帮助您使用现有数据和工作流实现生成式 AI 的运营。

Spanner

Google 的全球分布式数据库 Spanner 支持事务型应用的向量搜索。它可以使用精确最近邻算法和近似最近邻算法提供高度可用、可扩缩的向量搜索。这使全球应用能够实现实时推荐或语义搜索等功能,同时保持严格的一致性和可靠性。

示例:为电子商务提供实时推荐

一家全球电子商务平台想要构建一个商品推荐引擎,该引擎能够处理模糊的用户搜索(例如“适合雨天穿的最佳登山靴”),同时确保立即提供商品。

  • 挑战:传统的关键字匹配会遗漏相关但未包含完全相同的搜索字词的商品(例如,描述中包含“防水”的商品可能无法与“下雨”的搜索字词匹配);此外,在流量高峰期,跨单独的向量数据库验证库存状况会造成延迟,并带来数据一致性风险
  • 解决方案:该平台向现有的 Spanner 商品表添加了一个向量列,并使用 Vertex AI 通过 SQL 生成嵌入;它们使用 Spanner 的向量搜索来运行混合查询,以查找语义相似的商品,同时执行严格的库存检查 (InventoryCount > 0)
  • 结果:客户收到准确的个性化商品推荐,保证有货,并以低延迟和全球一致性交付,满足实时交易的必要条件

BigQuery

BigQuery 可让您对海量数据集执行向量分析,而无需将数据移出数据仓库。使用 VECTOR_SEARCH 函数,您可以使用标准 SQL 执行相似度搜索。这对于分析用例尤其有用,例如根据行为对客户进行聚类,或在数十亿行数据中识别相似的产品趋势。

示例:大规模检测网络安全威胁

安全团队需要分析 PB 级服务器日志,以识别恶意活动。攻击者通常会稍微修改代码,以规避完全匹配关键字搜索。

  • 挑战:关键字搜索会遗漏已知攻击的细微变化(例如,恶意脚本中变量名称的更改)
  • 解决方案:该团队使用 BigQuery 为数十亿条日志条目生成嵌入;然后运行 VECTOR_SEARCH 查询,查找在语义上与已知漏洞利用签名相似的所有日志,从而识别出攻击的新变体
  • 成果:他们可以使用简单的 SQL 在多年的历史数据中检测和聚类零日漏洞威胁,而无需将数据移动到专用向量数据库

利用 Google Cloud 解决业务难题

新客户可获得 $300 赠金,用于抵扣 Google Cloud 的费用。
与 Google Cloud 销售专员联系,详细讨论您的独特挑战。

更进一步

获享 $300 赠金以及 20 多种提供“始终免费”用量的产品,开始在 Google Cloud 上构建项目。