本页面介绍了 AlloyDB AI 向量搜索策略,并说明了每种策略的使用时间。默认情况下,AlloyDB 使用 k 最近邻搜索 (KNN) 来查找与查询相似的向量。向量索引实现了一种称为近似最近邻 (ANN) 的搜索策略。创建向量索引时,AlloyDB AI 会使用 ANN,其性能优于 KNN。请注意,在选择向量索引时,您需要平衡查询延迟时间和召回率。
召回率用于衡量搜索如何有效地检索给定查询的所有相关项。例如,假设您有 100 个嵌入,每个嵌入表示数据库中的一个实体。您想查询具有目标向量的嵌入,并将其限制为 10 个结果。KNN 向量搜索使用暴力计算方法查找 10 个精确的最近向量,这可实现 100% 召回率。如果未创建或选择向量搜索索引,AlloyDB AI 会默认使用此方法。在 AlloyDB for PostgreSQL 中创建向量索引时,它通常会使用 ANN,这可能会根据相似度对向量进行分区,以便更快地检索。因此使用 ANN 时,前面的示例中返回的 10 个向量可能并非确切是距离上最接近的 10 个向量。如果检索到的 10 个向量中只有 8 个在空间上与查询向量最接近,则召回率为 80%。
查询延迟时间定义搜索结果的生成速度。例如,延迟时间是根据您提交查询后搜索返回向量所用的时间来计算的。
选择搜索策略
在 AlloyDB 中执行向量搜索时,请选择以下搜索策略之一:
搜索策略 | 说明 | 用例 |
K 最近邻 (KNN) |
用于查找相对于给定查询数据点的 k 个最近邻数据点的算法。如果您在未创建索引的情况下执行向量搜索,系统会默认执行 KNN 搜索。 为了进一步提高 KNN 搜索的性能,请将您的嵌入列和与查询相关的其他列添加到列式引擎中的列存储区。您可以手动添加列,也可以使用自动列式处理添加列。 |
|
近似最近邻 (ANN) | 用于查找近似最近的数据点的算法。ANN 根据相似度将现有客户数据点划分为较小的组。 |
|
Google 建议您创建向量索引,以优化向量搜索查询的性能。如需详细了解如何使用 ANN 索引进行相似度搜索,请参阅使用 ScaNN 创建索引。
如需加速过滤后的 KNN 搜索,请使用列式引擎。