カテゴリ:

文字列とバイナリ関数 (大規模言語モデル)

SEARCH_PREVIEW (SNOWFLAKE.CORTEX)

Cortex Searchのサービス名とクエリが指定されると、指定されたサービスからの応答を返します。

構文

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

引数

service_name

Cortex Searchサービスの名前。サービスが現在のセッションと異なるスキーマにある場合、完全修飾名を使用します。

query_parameters_object

サービスを呼び出すためのクエリパラメーターを指定する JSON オブジェクトを含む STRING

キー

説明

デフォルト

query

String

検索クエリ、サービス内のテキスト列を検索します。

これは必須です。

columns

配列

カンマ区切りのリストで、応答内の関連する結果ごとに返す列を指定します。これらの列は、サービスのソースクエリに含まれている必要があります。

サービス作成時に指定した検索列。

filter

オブジェクト

ATTRIBUTES 列のデータに基づいて結果をフィルタリングするためのフィルターオブジェクト。詳細な構文については、 フィルター構文 をご参照ください。

空のオブジェクト

limit

Integer

応答で返す結果の最大数。

10

フィルター構文

Cortex Searchは、 CREATE CORTEX SEARCH SERVICE コマンドで指定された ATTRIBUTES 列でのフィルタリングをサポートします。

Cortex Searchは2つのマッチング演算子をサポートしています。

  • 文字列の等質性: @eq

  • 配列が含まれる: @contains

これらのマッチング演算子は、さまざまな論理演算子と組み合わせることができます。

  • @and

  • @or

  • @not

これらの演算子は1つのフィルターオブジェクトにまとめることができます。以下に例を挙げます。

  • 文字列のような列 string_col が値 value と等しい行に対するフィルタリング。

    { "@eq": { "string_col": "value" } }
    
    Copy
  • ARRAY 列 array_col に値 value が含まれる行のフィルタリング。

    { "@contains": { "array_col": "arr_value" } }
    
    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

戻り値

Cortex Searchサービスからのクエリ結果と、一意のリクエスト ID を含む OBJECT を返します。 の出力例をご参照ください。

使用上の注意

  • この関数は、Python API を使うよりも遅延時間が長くなります。テスト/検証のみを目的として設計されています。低遅延を必要とするエンドユーザーアプリケーションで検索クエリを提供するために、この機能を使用しないでください。

  • この関数は、文字列リテラルのクエリに対してのみ動作します。テキストデータのバッチは受け入れません。

この例は、 test query を使用して sample_service という名前のサービスをクエリします。この例は、(最大でも)5つの結果を返し、 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"
}