矢量搜索简介
本文档简要介绍了 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
中的限制部分。这些规则不适用于矢量索引生成。
后续步骤
- 详细了解如何创建矢量索引。
- 完成使用向量搜索来搜索嵌入教程,了解如何创建向量索引,然后分别使用和不使用索引来执行嵌入的向量搜索。
完成执行语义搜索和检索增强生成教程,了解如何执行以下任务:
- 生成文本嵌入。
- 在嵌入上创建向量索引。
- 使用嵌入执行向量搜索,以搜索类似文本。
- 使用向量搜索结果执行检索增强生成 (RAG),以增强提示输入并改善结果。
请尝试学习在检索增强生成流水线中解析 PDF 文件教程,了解如何根据解析的 PDF 内容创建 RAG 流水线。