DataikuでSnowflake CortexのLLMを使ってみた

1.はじめに

Snowflake Cortexを使えば、大規模言語モデル(LLM)を高速かつ安全に使うことができます。

DataikuとSnowflakeを連携させることで、SQLの知識が乏しくても、Snowflakeの持つ機能を簡単に活用できるようになります。

前回のブログでは、東京リージョンで稼働しているDataikuで利用可能なSnowflake CortexのLLM性能比較を行いました。

今回は、DataikuとSnowflakeの接続設定の方法と、実際にDataikuのLLMレシピでSnowflake CortexのLLMを使用する手順をご紹介します。

SQLやSnowflakeの専門知識がない方でも、Dataiku上でSnowflake Cortexを使えるように、手順を丁寧に解説したブログです。

2.Snowflake Coretexについて

Snowflake Cortexは、Snowflakeというクラウド上のデータプラットフォームに組み込まれているAIの機能です。特別なツールを使わず、SQLやAPIを通じて、文章の要約や感情分析などの自然言語処理を行うことができます。

Snowflake Cortexにより、構造化/非構造化データを移動することなく処理を行うことができます。

3.DataikuとSnowflake CortexのConnectionを作成して動かしてみる

では実際に、DataikuとSnowflake Cortexの接続を設定し、Dataiku上で「炊飯器」に関するレビュー文を使って、感情分析を行ってみます。

使用するモデルは、前回のブログでおすすめした日本語に対応しており精度も高い「Mistral Large 2」を使用します。

3.1 Snowflake上にテーブルを作成する

まず最初に、Snowflake上に分析用のテーブルを作成します。

はじめに、Databaseセクションの「+Database」ボタンから新しいデータベースを作成しましょう。今回は、データベース名を DATAIKU_TEST とします。
Nameにデータベース名を入力できたら、「Create」ボタンを押してデータベースを作成します。

Snowflake上で新しいデータベース(DATAIKU_TEST)を作成する操作画面

作成したデータベースには、デフォルトで「PUBLIC」スキーマが用意されています。今回はこのスキーマ内にデータをアップロードします。

CSVファイルをアップロードするには、「PUBLIC」スキーマをクリックし、[Create] → [Table from File] を選択します。その後、CSVファイルを指定してアップロードしてください。

新しく作成するテーブルの名前は、今回は EC_REVIEW とします。

「Name」にテーブル名を入力し、「Next」ボタンをクリックします。

Snowflake上で新しいテーブル(EC_REVIEW)を作成する操作画面

今回使用するCSVファイルにはヘッダー行が含まれているため、Snowflake上でヘッダーを正しく認識してくれるように設定する必要があります。

そのため、File FormatView options にある First line contains header を選択してください。これにより、1行目をヘッダーとして扱うようになります。

なお、ヘッダーに空白文字が含まれていたり、日本語が使われている場合、Snowflakeではエラーになることがあります。その際は、ヘッダー名を "(ダブルクオーテーション)で囲むようにしてください。

そして、Loadボタンを押すと、レビュー文でSnowflake上にテーブルを作成することができます。

ヘッダーの設定を編集する操作画面

3.2 Snowflake Cortexを使用するための設定

Snowflake Cortexを使用するためには、Snowflake側でも設定をする必要があります。

ProjectのWorksheetの右上の青いボタンから新しいSQL Worksheetを作成します。

Worksheetを作成する操作画面

右上の「No Database selected」と表示されているドロップダウンから、DATAIKU_TESTデータベースのPUBLICスキーマを選択します。これにより、DATAIKU_TEST.PUBLICがデフォルトのスキーマとして設定され、以降の SQL 操作はこのスキーマを対象として実行されるようになります。

SQLWorksheetで以下のSQL文を実行します。

GRANT DATABASE ROLE SNOWFLAKE.CORTEX_USER TO ROLE ACCOUNTADMIN;

これは、ACCOUNTADMINロールに対してデータベースロール SNOWFLAKE.CORTEX_USER を付与するSQL文です。これにより、Snowflake Cortex を利用するための権限が付与されます。

なお、Snowflakeのアカウントによっては、Dataikuで接続(Connection)を作成する際に、リージョンに関するエラーが発生する場合があります。発生した場合は、以下のSQL文を実行してください。

ALTER ACCOUNT SET CORTEX_ENABLED_CROSS_REGION ='ANY_REGION';

これはSnowflakeのアカウントに対してどのリージョンのモデルにもアクセス可能にするというSQL文です。しかし、クロスリージョンアクセスにはレイテンシが発生するなどのデメリットもあります。

3.3 DataikuでSnowflakeとのConnectionを作成する

次に、Dataiku から Snowflake を操作できるようにするための 接続(Connection) を作成します。

まず、Dataiku DSS 画面右上にある 9 点アイコン(「Navigate to other sections of Dataiku」ボタン)をクリックし、「Administration」 を選択して管理画面に移動します。

その後、「Connections」 タブを開き、右上にある 「NEW CONNECTION」 ボタンから、必要な接続情報を入力して各種 Connection を作成できます。

次に、Dataiku上からSnowflakeを操作できるようにConnectionを作成します。

Dataiku DSSの右上の「Navogate to other sections of Dataiku」ボタン(9点マークのボタン)からアドミニストレーションを選択し、移動します。

Connectionタブの右上のNEW CONNECTIONから各種Connectionを作成できます。

DataikuのConnectionタブの画面①

今回はSQL databaseのSnowflakeを選択します。そして、以下の設定を行います

  • Snowflake connection:Connectionを識別するための名前を設定
  • Host: SnowflakeのHost名(人それぞれ異なります)
  • Warehouse: 使用するWarehouse名(今回はCOMPUTE_WH)
  • Role: Cortexのデータベースロールを付与したRole名(今回はACCOUNTADMIN)
  • Schema : Dataiku上で操作したいテーブルが存在するスキーマ名(今回はPUBLIC)
  • Auth type : Snowflakeにログインするために使用しているものを選択(ユーザー名とパスワードの場合はUser/Passwordを選択し、Userにユーザー名、Passwordにパスワードを入力)

要な項目を入力したら、「TEST」 ボタンをクリックします。

「Connection OK」 と表示されれば、問題なく接続が確立されており、SnowflakeとのConnection の作成は完了です。

SnowflakeのConnectionの設定画面

3.4 DataikuでSnowflake CortexとのConnectionを作成する

次に、Snowflake Cortex との接続を作成します。

手順は 3.3 と同様で、Dataiku DSS の右上にある 9 点アイコンから 「Administration」 を開き、「Connections」 タブに移動します。

今回は、接続タイプとして LLM Mesh の中から 「Snowflake Cortex」 を選択してください。

DataikuのConnectionタブの画面②

そして、以下を設定します。

  • Snowflake Cortex connection : 作成するCortexとのConnectionを識別する名前
  • Snowflake : 3.3で作成したSnowflakeのConnection名
  • Text completion models : 使用するモデル名にチェックを付ける(今回はMistral Large 2)

これらを入力し、 「 Connection to Snowflake Cortex OK」と表示されればConnectionが問題なく作成できています。

Snowflake Cortexの Connectionの設定画面

3.5 Dataikuでフローを作成して動かしてみる

ここまでで、Dataiku と Snowflake の接続設定が完了したため、実際に Dataiku 上で Snowflake Cortex のモデルを使って感情分析を行っていきます。

まずはDataikuのプロジェクトの中で、「Connect or create」から 「SQL」→「Snowflake」 を選択します。

次の画面で、以下の項目を設定してください:

  • Connection:3.3 で作成した Snowflake との接続名
  • Table:3.1 で Snowflake 側に作成したテーブル名

    「GET TABLE LIST」ボタンをクリックすると、テーブル名一覧が表示されるので、その中から対象のテーブル(今回は DATAIKU_TESTEC_REVIEW)を選択します。

設定が完了したら、「TEST TABLE」 ボタンをクリックします。

「Connection and table OK」 と表示されれば、Dataiku 上から Snowflake のデータを問題なく扱える状態になっています。

最後に、右上の 「CREATE」 ボタンをクリックすることで、フロー上に Snowflake テーブルを元にしたデータセットが作成されます。

Dataikuでフローにデータセットを作成する画面

3.6 LLMレシピでCortexのモデルを使用して感情分析をする

次に、LLMレシピを使用して EC_REVIEW データセットに対して感情分析を行います。

操作手順は以下のとおりです:

  1. EC_REVIEW データセットを選択します。
  2. LLMレシピの中から 「テキストの分類」「Sentiment Analysis」 を選択し、「CREATE RECIPE」ボタンからレシピを作成します。
  3. LLM の設定欄では、4.4 で作成した接続の Mistral Large 2 を選択します。
  4. Input column には、レビュー文が格納されている「内容」列を選択します。
LLMレシピ「テキストの分類」の設定画面

予測結果は、prediction 列として自動的に生成されます。

なお、Dataiku の分類レシピ「Sentiment Analysis」では、感情は 「negative」、「neutral」、「positive」 の3つのカテゴリで分類されます。

LLMレシピで出力されたデータセットの画面

4.おわりに

本ブログでは、Snowflake CortexとDataikuを連携し、LLMレシピを使って感情分析を行う方法を紹介しました。

複雑な設定を必要とせず、Snowflakeに蓄積されたデータに対して誰でも簡単に、安全に、LLMを活用できるのがこの連携の大きな魅力です。

LLMレシピは、今回のような感情分析に限らずRAG構成によるFAQ対応などにも応用できます。

また、Snowflake CortexのLLMの性能や特徴が気になる方は、前回のブログもぜひご覧ください。

Dataiku導入を考えている方へ

KeywalkerはDataikuのパートナーとしてDataikuの導入支援を行っています。データ分析による業務改善にご興味がある方は是非、Keywalkerにご連絡ください。

Keywalker 問い合わせフォーム:https://www.keywalker.co.jp/inquiry.html

ShtockData

お問い合わせフォーム

お問い合わせ項目を選択してください