类别:

:doc:`/sql-reference/functions-string`(大型语言模型)

SEARCH_PREVIEW (SNOWFLAKE.CORTEX)

给定 Cortex Search 服务名称和查询,从指定的服务返回响应。

语法

SNOWFLAKE.CORTEX.SEARCH_PREVIEW(
    '<service_name>',
    '<query_parameters_object>'
)
Copy

实参

service_name

Cortex Search 服务的名称。如果服务位于与当前会话不同的架构中,则使用完全限定名称。

query_parameters_object

STRING 包含 JSON 对象,该对象指定用于调用服务的查询参数。

类型

描述

默认值

query

字符串

您的搜索查询,用于搜索服务中的文本列。

这是必需的。

columns

数组

列的以逗号分隔列表,用于返回响应中每个相关结果的列。这些列必须包含在服务的源查询中。

创建服务时指定的搜索列。

filter

对象

筛选对象,用于根据 ATTRIBUTES 列中的数据筛选结果。有关详细语法,请参阅 筛选器语法

空对象

limit

整数

要在响应中返回的最大结果数。

10

筛选器语法

Cortex Search 支持对 CREATE CORTEX SEARCH SERVICE 命令中指定的 ATTRIBUTES 列进行筛选。

Cortex Search 支持四种匹配运算符:

这些匹配运算符可以由各种逻辑运算符组成:

  • @and

  • @or

  • @not

以下使用说明适用:

  • 对源查询中 ``NaN``(“非数字”)值的匹配按 特殊值 中所述进行处理。

  • 超过 19 位数的 定点 数值(不包括前导零)不适用 @eq@gte@lte,也不会由这些运算符返回(尽管使用 @not 时,整个查询仍可以返回此类数值)。

  • TIMESTAMPDATE 筛选器接受 YYYY-MM-DD 形式的值,对于时区感知型日期,可接受:YYYY-MM-DD+HH:MM。如果未指定时区偏移量,则以 UTC 解析日期。

这些运算符可以组合成一个筛选器对象。

示例

  • 筛选字符串类列 string_col 等于值 value 的行。

    { "@eq": { "string_col": "value" } }
    
    Copy
  • 筛选 ARRAY 列 array_col 包含值 value 的行。

    { "@contains": { "array_col": "arr_value" } }
    
    Copy
  • 在 NUMERIC 列 numeric_col 处于 10.5 和 12.5(含)之间的行上进行筛选:

    { "@and": [
      { "@gte": { "numeric_col": 10.5 } },
      { "@lte": { "numeric_col": 12.5 } }
    ]}
    
    Copy
  • 在 TIMESTAMP 列 timestamp_col 处于 2024-11-19``2024-12-19``(含)之间的行上进行筛选。

    { "@and": [
      { "@gte": { "timestamp_col": "2024-11-19" } },
      { "@lte": { "timestamp_col": "2024-12-19" } }
    ]}
    
    Copy
  • 用逻辑运算符组成筛选器:

    // Rows where the "array_col" column contains "arr_value" and the "string_col" column equals "value":
    {
        "@and": [
          { "@contains": { "array_col": "arr_value" } },
          { "@eq": { "string_col": "value" } }
        ]
    }
    
    // Rows where the "string_col" column does not equal "value"
    {
      "@not": { "@eq": { "string_col": "value" } }
    }
    
    // Rows where the "array_col" column contains at least one of "val1", "val2", or "val3"
    {
      "@or": [
          { "@contains": { "array_col": "val1" } },
          { "@contains": { "array_col": "val1" } },
          { "@contains": { "array_col": "val1" } }
      ]
    }
    
    Copy

返回

返回 OBJECT,其中包含 Cortex Search 服务的查询结果和唯一请求 ID。请参阅 `示例`_ 中的示例输出。

使用说明

  • 与使用 Python API 相比,此函数会带来更多延迟。其设计仅用于测试/验证目的。您不应该使用此函数在需要低延迟的最终用户应用程序中提供搜索查询。

  • 此函数仅对字符串字面量查询进行操作。它不接受一批文本数据。

示例

此示例使用 test query 查询名为 sample_service 的服务。该示例返回五个结果(最多),并包括 col1col2 列中的数据。

SELECT
  SNOWFLAKE.CORTEX.SEARCH_PREVIEW (
      'mydb.mysch.sample_service',
      '{
          "query": "test query",
          "columns": ["col1", "col2"],
          "limit": 3
      }'
  );
Copy
{
  "results":[
      {"col1":"text", "col2":"text"},
      {"col1":"text", "col2":"text"},
      {"col1":"text", "col2":"text"}
  ],
  "request_id":"a27d1d85-e02c-4730-b320-74bf94f72d0d"
}
语言: 中文