1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Databricksのai_query関数をDeltaLiveTables上で使って手軽かつ強力なデータパイプラインを作る

Posted at

導入

Databricksのai_query関数、Delta Live Tables(以下、DLT)上でも使えるようなことがドキュメントに書かれていました。
簡単にLLMを使うデータパイプラインをDLTで作れるとかなり便利なので、試してみた記録です。

準備

今回は、日本語文書の感情分類(Negative/Positiveの分類)処理をai_queryで行い、その結果を保管するというシンプルなパイプラインを構築します。

データとして、以下のようなCSVファイルを適当に作成しました。

sample_001.csv
id,comment,category
1,滋賀レイクスのB.LEAGUE PREMIERへの初年度参入が決定しました!,sports
2,日々の運動は体の健康を維持するために特に重要です。,health
3,日経平均株価が7月以来の4万円台となりました,economy

このファイルをUnity Catalog管理下の適当なボリュームに保管します。

image.png

今回は/Volumes/training/llm/raws/samples/dlt_query/という場所に保管しています。

DLTパイプライン処理の定義

ノートブックを作成し、DLT用のパイプライン処理を定義します。
ai_query関数を使う関係上、全てSQLで記述しました。

まず、CSVファイルからデータを取り込む処理。
ファイルが増分で増えていくという想定として、ストリーミングテーブルにしています。

CREATE OR REFRESH STREAMING TABLE sample_comment_raw
COMMENT "ai_queryによる加工用サンプルデータ取込用ストリーミングテーブル" AS
SELECT
  *
FROM
  STREAM read_files(
    '/Volumes/training/llm/raws/samples/dlt_query/',
    format => 'csv',
    header => true,
    mode => 'FAILFAST'
  )

次にai_queryを使った感情分析処理を記述します。
内容はシンプルですね。

CREATE
OR REFRESH MATERIALIZED VIEW sentiment_added
TBLPROPERTIES('pipelines.channel' = 'PREVIEW')
COMMENT "感情分析結果の追加" AS
SELECT
  id,
  category,
  comment,
  ai_query(
    "<ai_queryで使うエンドポイント名>",
    concat(
      "次のテキストをポジティブかネガティブに分類してください。返答はPositiveかNegativeかだけで返してください。\n\n",
      comment
    )
  ) as sentiment
FROM
  live.sample_comment_raw;

DLTパイプラインの作成

次にDelta Live Tablesのパイプラインを作成します。

メニューからDelta Live Tableを開いて、パイプラインを作成します。

image.png

パイプライン設定は、名前は適当に設定して先ほど作成したノートブックを指定します。
クラスタはサーバレスを使用しました。

image.png

配信先はUnity Catalogの適切な場所を指定。
大事なポイントとして、チャネル設定は現状「プレビュー」にする必要があるようです。

image.png

実行

あとは開始ボタンを押して実行。
正常に処理が終わるとDAGで処理結果が表示されます。

image.png

カタログエクスプローラから実行結果を見ると以下の感じ。

image.png

ついでに「Genieに聞く」ボタンから、Genieにサマリさせてみます。

image.png

3件だけかつ全部Positiveだったので見え方はちょっとイマイチですが、簡単に感情分析とその結果確認ができました。うーん、簡単。

ちなみに、同様のフォーマットでCSVファイルを作成してボリュームに置いていけば、DLTのパイプラインを実行するたびにデータが追記・更新されていきます。
例えば商品レビューなどのデータを定期取得する環境が整っていれば、簡単にいろんなLLMによるデータ加工処理をすることができますね。

まとめ

ai_query&DLTを使ったデータパイプラインを作成しました。
手軽に作れる上、応用範囲も広いのでこれをベースにいろいろやれそうです。

今回やっていてハマったのはai_queryのところで、ドキュメントIにはfailOnErrorやmodelParametersといったパラメータが紹介されているのですが、これらの指定ができなかったこと。そのあたりのアップデートがまだ自環境に反映されてないのかな。。。

とはいえ、非常に簡単にやれたので様々なユースケースへの適用をトライしてみたいと思います。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?