矢量搜索简介

本文档简要介绍了 BigQuery 中的矢量搜索。借助矢量搜索,您可以搜索嵌入以识别语义上相似的实体。

嵌入是表示给定实体(如一段文本或音频文件)的高维数字矢量。机器学习 (ML) 模型使用嵌入对此类实体的语义进行编码,以便更轻松地推断和比较实体。例如,聚类、分类和推荐模型中的常见操作是测量嵌入空间中矢量之间的距离,以查找语义上最相似的项。

如需执行矢量搜索,您可使用 VECTOR_SEARCH 函数,也可以选择使用矢量索引。当使用矢量索引时,VECTOR_SEARCH 会使用近似最近邻搜索技术来帮助提高矢量搜索性能,虽然降低召回率,但可返回更接近的结果。当矢量索引不可用时,您可使用暴力破解来返回精确的结果,即使在矢量索引可用时,您也可以选择使用暴力破解来获得精确的结果。

使用场景

嵌入生成和向量搜索的结合可以实现许多有趣的用例,其中检索增强生成 (RAG) 是最典型的用例。其他一些可能的用例如下:

  • 给定一批新的支持请求,为每项请求找到几个类似的已解决请求。将已解决的案例的相关信息传递给大语言模型 (LLM),以便在为新的支持请求总结和建议解决方案时用作上下文。
  • 给定审核日志条目,查找过去 30 天内最相符的条目。
  • 根据患者个人资料数据生成嵌入,然后使用向量搜索查找具有类似个人资料的患者,以探索为该患者同类群组制定的成功治疗方案。
  • 假定嵌入表示来自一个校车车队的所有传感器和摄像头的事故前时刻的嵌入,从车队中的所有其他车辆中查找类似时刻,以进一步分析、调优和重新训练用于管理安全功能互动的模型。
  • 给定一张图片,在 BigQuery 对象表中查找最相关的图片,并将这些图片传递给模型以生成字幕。

价格

CREATE VECTOR INDEX 语句VECTOR_SEARCH 函数使用 BigQuery 计算价格。对于 CREATE VECTOR INDEX 语句,在处理的字节中仅考虑编入索引的列。

当编入索引的表数据的总大小低于每个组织的限制时,构建和刷新矢量索引所需的处理是免费的。为支持超出此限制的索引,您必须提供自己的预留来处理索引管理作业。矢量索引在处于活跃状态时会产生存储费用。您可以在 INFORMATION_SCHEMA.VECTOR_INDEXES 视图中找到索引存储空间大小。如果矢量索引尚未达到 100% 覆盖率,您仍需要为 INFORMATION_SCHEMA.VECTOR_INDEXES 视图中报告的所有索引存储付费。

配额和限制

如需了解详情,请参阅矢量索引限制

限制

  • BigQuery BI Engine 无法加速包含 VECTOR_SEARCH 函数的查询。
  • BigQuery 数据安全和治理规则适用于 VECTOR_SEARCH 的使用。如需了解详情,请参阅 VECTOR_SEARCH 中的限制部分。这些规则不适用于矢量索引生成。

后续步骤