CREATE CORTEX SEARCH SERVICE

新しい Cortex Search サービス を作成するか、既存のものを置き換えます。

構文

CREATE [ OR REPLACE ] CORTEX SEARCH SERVICE [ IF NOT EXISTS ] <name>
  ON <search_column>
  ATTRIBUTES <col_name> [ , ... ]
  WAREHOUSE = <warehouse_name>
  TARGET_LAG = '<num> { seconds | minutes | hours | days }'
  [ EMBEDDING_MODEL = <embedding_model_name> ]
  [ INITIALIZE = { ON_CREATE | ON_SCHEDULE } ]
  [ COMMENT = '<comment>' ]
  AS <query>;
Copy

必須パラメーター

name

Cortex Search Service用のノートブックの識別子(つまり、名前)を指定する文字列。ノートブックが作成されるスキーマに対して一意にする必要があります。

また、識別子はアルファベット文字で始まる必要があり、識別子文字列全体が二重引用符で囲まれていない限り、スペースや特殊文字を含めることはできません(例: "My object")。二重引用符で囲まれた識別子も大文字と小文字が区別されます。

詳細については、 識別子の要件 をご参照ください。

ON search_column

検索したいベース・テーブルのテキスト列を指定します。この列はテキスト値である必要があります。

ATTRIBUTES col_name [ , ... ]

サービスにクエリを発行する際にフィルタリングしたいベーステーブルの列のリストをカンマ区切りのリストで指定します。属性列は、明示的な列挙またはワイルドカード(*)を使用して、ソース・クエリに含める必要があります。

WAREHOUSE = warehouse_name

ソースクエリを実行し、検索インデックスを構築し、 TARGET_LAG ターゲットに従って更新し続けるために使用するウェアハウスを指定します。

TARGET_LAG = 'num { seconds | minutes | hours | days }'

Cortex Search Serviceのコンテンツがソースクエリで指定されたベーステーブルの更新から遅れる最大時間を指定します。

オプションのパラメーター

EMBEDDING_MODEL = <embedding_model_name>

Cortex Search Serviceで使用する埋め込みモデルを指定するオプションパラメーター。このプロパティは、Cortex Search Serviceを作成した後に変更することはできません。プロパティを変更するには、 CREATE OR REPLACE CORTEX SEARCH SERVICE コマンドでCortex Search Serviceを再作成します。

一部の埋め込みモデルは、Cortex Searchの特定のクラウドリージョンでのみ利用可能です。リージョン/モデル別の可用性リストについては、 Cortex Searchリージョン別可用性 をご参照ください。

入力トークンが100万件処理されるごとに、各モデルに異なるコストが発生する場合があります。100万トークンあたりのクレジット単位での各コストについては、 Snowflakeサービス利用テーブル をご参照ください。

EMBEDDING_MODEL が指定されていない場合は、デフォルトのモデルが使用されます。デフォルトモデルは Snowflake-arctic-embed-m-v1.5 です。

INITIALIZE

Cortex Search Serviceの初期 更新 の動作を指定します。このプロパティは、サービス作成後に変更することはできません。プロパティを変更するには、Cortex Search Serviceを CREATE OR REPLACE CORTEX SEARCH SERVICE コマンドで置き換えます。

ON_CREATE

Cortex Search Serviceの作成時に同期的に更新します。この更新に失敗すると、サービスの作成に失敗し、エラーメッセージが表示されます。

ON_SCHEDULE

次のスケジュールでCortex Search Serviceを更新します。

Cortex Search Serviceは、更新スケジュール処理が実行されたときに入力されます。Cortex Search Serviceの作成時にはデータは入力されません。サービスをクエリしようとすると、最初のスケジュール更新がまだ発生していないため、次のようなエラーが表示されることがあります。

Your service has not yet been loaded into our serving system. Please retry your request in a few minutes.

デフォルト: ON_CREATE

COMMENT = 'comment'

サービスのコメントを指定します。

AS query

サービスが作成されるベース・テーブルを定義するクエリを指定します。

アクセス制御の要件

この操作の実行に使用される ロール には、少なくとも次の 権限 が必要です。

権限

オブジェクト

CREATE CORTEX SEARCH SERVICE

検索サービスを作成しているスキーマ。

SELECT

サービスがクエリするテーブルとビュー。

USAGE

サービスをリフレッシュするウェアハウス。

スキーマ内のオブジェクトに対して操作を実行するには、親データベースとスキーマに対する USAGE 権限が必要です。スキーマに対する任意の権限を付与されたロールは、そのロールがスキーマを解決できることに注意してください。たとえば、スキーマに対する CREATE 権限を付与されたロールは、そのスキーマにオブジェクトを作成できますが、そのスキーマに対する USAGE*も*付与されている必要はありません。

指定された権限のセットを使用してカスタムロールを作成する手順については、 カスタムロールの作成 をご参照ください。

セキュリティ保護可能なオブジェクト に対して SQL アクションを実行するためのロールと権限付与に関する一般的な情報については、 アクセス制御の概要 をご参照ください。

注意

Cortex Search Serviceを作成するには、ロールがCortex LLM Functionsを使用するのに必要なのと同じ権限を持っている必要があります。Cortex LLM Functions Required Privileges をご参照ください。

使用上の注意

注意

Snowflakeサービスを使用する場合、お客様は、個人データ(ユーザーオブジェクト向け以外)、機密データ、輸出管理データ、またはその他の規制されたデータがメタデータとして入力されていないことを確認する必要があります。詳細については、 Snowflakeのメタデータフィールド をご参照ください。

  • Cortex Searchサービスのソースクエリを実行するために使用されるウェアハウスのサイズは、各リフレッシュの速度とコストに影響します。より大きなウェアハウスは、ビルドとリフレッシュの時間を短縮します。ただし、このプレビュー期間中、Snowflake は Cortex Search サービスに MEDIUM 以下のウェアハウスサイズを使用することを推奨します。

  • Snowflake では、他のワークロードと干渉しないように、Cortex Search サービスごとに専用のウェアハウスを使用することを推奨しています。

  • 検索インデックスはcreate文の一部として構築されるため、 CREATE CORTEX SEARCH SERVICE 文は大きなデータセットの場合、完了までに時間がかかることがあります。

  • OR REPLACEIF NOT EXISTS 句は互いに排他的です。両方を同じステートメントで使うことはできません。

  • CREATE OR REPLACE <オブジェクト> ステートメントはアトミックです。つまり、オブジェクトが置き換えられると、単一のトランザクションで、古いオブジェクトが削除されて新しいオブジェクトが作成されます。

snowflake-arctic-embed-l-v2.0 埋め込みモデルを使用して、 mysvc という名前のCortex Searchサービスを作成します。

CREATE OR REPLACE CORTEX SEARCH SERVICE mysvc
  ON transcript_text
  ATTRIBUTES region,agent_id
  WAREHOUSE = mywh
  TARGET_LAG = '1 hour'
  EMBEDDING_MODEL = 'snowflake-arctic-embed-l-v2.0'
AS (
  SELECT
      transcript_text,
      date,
      region,
      agent_id
  FROM support_db.public.transcripts_etl
);
Copy

mysvc という名前のCortex Searchサービスを作成し、 TARGET_LAG 期間(1時間)が経過した後に最初の更新が実行されるようにスケジュールします。

CREATE OR REPLACE CORTEX SEARCH SERVICE mysvc
  ON transcript_text
  ATTRIBUTES region
  WAREHOUSE = mywh
  TARGET_LAG = '1 hour'
  INITIALIZE = ON_SCHEDULE
AS SELECT * FROM support_db.public.transcripts_etl;
Copy