召回率用于衡量搜索如何有效地检索给定查询的所有相关项。例如,假设您有 100 个嵌入,每个嵌入表示数据库中的一个实体。您想查询具有目标向量的嵌入,并将其限制为 10 个结果。KNN 向量搜索使用暴力计算方法查找 10 个精确的最近向量,这可实现 100% 召回率。如果未创建或选择向量搜索索引,AlloyDB AI 会默认使用此方法。在 AlloyDB Omni 中创建向量索引时,它通常会使用 ANN,这可能会根据相似度对向量进行分区,以便更快地检索。因此使用 ANN 时,前面的示例中返回的 10 个向量可能并非确切是距离上最接近的 10 个向量。如果检索到的 10 个向量中有 9 个在空间上与查询向量最接近,则召回率为 90%。如需了解详情,请参阅衡量向量查询召回率。
查询延迟时间定义搜索结果的生成速度。例如,延迟时间是根据您提交查询后搜索返回向量所用的时间来计算的。
选择搜索策略
在 AlloyDB Omni 中执行向量搜索时,请选择以下搜索策略之一:
| 搜索策略 | 说明 | 使用场景 |
| K 最近邻 (KNN) |
用于查找相对于给定查询数据点的 k 个最近邻数据点的算法。如果您在未创建索引的情况下执行向量搜索,系统会默认执行 KNN 搜索。 为了进一步提高 KNN 搜索的性能,请将您的嵌入列和与查询相关的其他列添加到列式引擎中的列存储区。您可以手动添加列,也可以使用自动列式处理添加列。 |
|
| 近似最近邻 (ANN) | 用于查找近似最近的数据点的算法。ANN 根据相似度将现有客户数据点划分为较小的组。 |
|
AlloyDB Omni 的两种常见基于 ANN 的向量索引类型是 ScaNN 和 HNSW。请按照以下准则确定哪种索引类型最适合您的使用情形:
| 指数类型 | 适用场景 | 优势 | 列式引擎加速 |
| ScaNN |
通常非常适合低维数据或超出内存容量的海量数据集。 可很好地扩展到 100 亿个向量。 |
与标准 PostgreSQL 上的 HNSW 相比,具有以下优势:
|
AlloyDB Omni 列式引擎可加速使用 ScaNN 索引进行的向量搜索。如需了解详情,请参阅使用列式引擎加速向量搜索。 |
| HNSW |
通常非常适合大部分可放入内存中缓存的高维数据。 可很好地扩容至 1,000 万到 2,000 万个向量。 |
AlloyDB Omni 中经过 pgvector 列式引擎加速的 HNSW 索引的向量查询速度最高比标准 PostgreSQL 快 4 倍 | AlloyDB Omni 列式引擎可加速使用 HNSW 索引的向量搜索。如需了解详情,请参阅使用列式引擎加速向量搜索。 |
Google 建议您创建向量索引,以优化向量搜索查询的性能。如需详细了解如何使用 ANN 索引进行相似度搜索,请参阅使用 ScaNN 创建索引。
如需加速过滤后的 KNN 搜索,请使用列式引擎。