Batch Cortex Search¶
Batch Cortex Search 函数是一个表函数,可让您向 Cortex Search Service 提交一批查询。它适用于具有高吞吐量要求的离线用例,例如实体解析、删除重复项或群集任务。
使用 CORTEX_SEARCH_BATCH 函数提交到 Cortex Search Service 的作业会利用额外的计算资源,从而提供比交互式 API 搜索查询界面(Python、REST 或 SEARCH_PREVIEW)显著更高的吞吐量(每秒查询数)。
语法¶
使用以下语法,通过 CORTEX_SEARCH_BATCH 表函数以批处理模式查询 Cortex Search Service:
参数¶
CORTEX_SEARCH_BATCH 函数支持以下参数:
- ``service_name``(字符串,必填)
要查询的 Cortex Search Service 的完全限定名称。
- ``query``(字符串,可选)
包含用于搜索服务的查询字符串的列。
- ``multi_index_query``(变体,可选)
一个对象,指定一个或多个向量或关键字查询输入,以根据服务索引进行搜索。请参阅 multi_index_query,了解有关如何构造此参数的详细信息。
备注
出于性能原因,
multi_index_query目前最多支持查询数组中的一个向量索引条目。- ``filter``(变体,可选)
包含要应用于搜索结果的筛选器对象的列。
- ``limit``(整数,可选)
每个查询返回的最大结果数。默认值:None。10.
- ``options``(变体,可选)
包含 VARIANT 对象的列,带有可选的每查询设置。支持的顶级键包括:
scoring_config``(对象,可选):结构与交互式 Cortex Search 查询(Python、REST 或 ``SEARCH_PREVIEW)的scoring_config参数相同。使用它来为该行的批量查询自定义排名。请参阅 Customizing Cortex Search scoring。``replicas``(整数,可选):为该行批量查询提供服务的搜索索引副本数量。默认值:None。2.较高的值可以提高吞吐量,但服务成本也会随副本数量成比例增加。
``experimental``(对象,可选):为实验性或预览性搜索行为保留的对象。字段和语义可能会发生变化,恕不另行通知。仅在 Snowflake 文档或支持团队指示您设置特定键时使用。
备注
必须至少指定 query、multi_index_query 或 filter 之一。
使用说明¶
批量搜索函数的吞吐量可能会有所不同,具体取决于查询的 Cortex Search Service 中索引的数据量和搜索查询的复杂性。对少量查询运行该函数,以测量特定工作负载的吞吐量。一般来说,对具有更多筛选条件的较大服务的查询会导致较低的吞吐量。
批量搜索功能的吞吐量(即每秒处理的搜索查询数)不受用于查询的仓库大小的影响。
由于批量搜索会启动专用资源来为每个作业提供服务,因此会产生额外的启动延迟。如果您需要运行的查询少于 2,000 个,通常可以使用交互式 Cortex Search API 更快地获得结果(Python 或 REST API),而不是使用批量搜索。
与交互式 Cortex Search API 不同,批量搜索功能可以查询当前暂停提供的服务。
可以同时以交互和批处理模式查询单个 Cortex Search Service ,而不会降低交互查询性能或吞吐量。单独的计算资源用于提供交互式查询和批处理查询。
成本注意事项¶
批量搜索的成本由三个部分组成:
- 服务成本
根据搜索索引数据的大小和批量搜索作业的持续时间(不包括启动时间)收费。该费用还反映了
options中的replicas值(默认为 2);请参阅上方的replicas选项。- 查询嵌入成本
根据输入查询结果嵌入的词元数量收费。与交互式 Cortex Search 不同,批量搜索的查询嵌入不是免费的。
- 虚拟仓库
用于运行批处理作业的虚拟仓库计算费用。
有关使用情况跟踪,请参阅 CORTEX_SEARCH_BATCH_QUERY_USAGE_HISTORY Account Usage 视图。有关 Cortex Search 成本的更多信息,请参阅 成本注意事项。
区域可用性¶
批处理搜索在所有提供 Cortex Search 的区域均可用。请参阅 区域可用性 获取有关受支持区域的完整列表。
示例用法¶
在此示例中,将用户提交的订单中的产品与“黄金”产品目录进行匹配。CORTEX_SEARCH_BATCH 调用使用 options,因此在计算嵌入时不带默认搜索查询前缀;请参阅 Disabling query prefix for vector embeddings。仅在评估了对结果质量的影响后,再使用该设置。
以下示例使用 multi_index_query 提交预先计算的嵌入作为查询输入,而不是原始文本。此处,源表 my_db.my_schema.product_embeddings 包含具有预先计算向量的 embedding 列,而 Cortex Search Service my_db.my_schema.golden_product_service 是使用自带向量 (BYOV) 配置创建的。有关构造的详细信息 multi_index_query,请参阅 multi_index_query。