本页介绍了 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 搜索。 |
|
近似最近邻 (ANN) | 一种用于查找大致最接近的数据点的算法。ANN 会根据相似性将现有客户数据点划分为小组。 |
|
Google 建议您创建向量索引,以优化向量搜索查询的性能。如需详细了解如何将 ANN 索引用于相似搜索,请参阅使用 ScaNN 创建索引和查询矢量。