Snowflake

Snowflake Cortexで説明文を自動生成してみた

Ryosuke Ishii

2024年12月18日にこの投稿を見ました。

データの民主化においてテーブルやカラムの説明文の記述は大変重要です。しかしカラム単位までの記述となるとその作業は膨大です。

Snowflakeではカラムの説明文までも自動生成もしてくれる、しかもデータまで見ながら生成してくれるのだから精度にも期待できる! と感じました。

そこでどれくらいの精度で説明文を作ってくれるのか、検証したいと思います。

まずはドキュメントから解釈をする

こちらのページを日本語訳して解釈をしてみます。

Snowsight と Snowflake Cortex の機能を使用して、列、テーブル、またはビューの説明を自動的に生成できます。Snowflake Cortex は、Snowflake がホストする大規模言語モデル (LLM) を活用してオブジェクトのメタデータを評価し、必要に応じてサンプルデータを使用して説明を生成します。

なるほど、説明文は列(カラム)にまで付与できますね。さて「どのデータを参考にして自動生成してくれるのか」については

  • オブジェクトのメタデータ
  • 必要に応じてサンプルデータ

とのことです。
そうかデータ全件を対象にして精度を高めることまではしないのですね。サンプルデータはSnowflakeの画面で出てくる数件のデータですね。

はたしてこの情報で精度はどこまで高いのか。。。いろいろと試してみましょう。

検証は2パターンでやってみます。

  1. 町中華の売上データ(日本語)
  2. 売上系デモデータ(英語)

某町中華の売上データ

まずは町中華の売上データです。これはリアルなデータなのでデータの粒度やカージナリティは実践的と言えるでしょう。

データは13万件、特徴はカラム名も中のデータも日本語名のところです。

町中華のテーブルやカラムの説明文を自動生成する

テーブルの説明文

まずはテーブルの説明文をやってみます。

日本語項目ですが、説明文は英語で出力されました。

The table contains records of food orders, each representing a single order with details such as the floor number, table number, and order completion date. The records also include information about the type of order and the type name, as well as the accounting completion details.

日本語にすると

このテーブルには食事の注文記録が含まれており、それぞれの記録は1つの注文を表しています。記録には、階数、テーブル番号、注文完了日などの詳細が含まれています。また、注文の種類や種類名、会計完了に関する情報も含まれています。

となりました。

端的に売上テーブルの説明ができています。これならテーブル一覧の売上テーブルの説明文としては使えると思います。ちなみに画面上から直接文言を修正することが可能なので、気に食わなかったら修正することもできます。

カラムの説明文

それぞれのカラムの説明文を見ていきましょう。ワンクリックですべてのカラムの説明文を自動生成してくれます。

ちゃんと項目名とサンプルデータを読み込んでくれていますね。生成も数秒で終わるので、あっという間に高精度な説明文ができます。

惜しいのは日本語では返してくれないところですかね、でもこれはいずれ機能アップに期待ができそうです。

日本語データでこの精度ならば英語データではもっと期待ができそうな。期待が高まります。

売上系デモデータ(英語)の説明文を自動生成する

それでは次は英語のデータでやってみます。下図のようにカラム名が英語、中のデータも英語です。

テーブルの説明文

The table contains records of sales transactions, including details about the actual amount, sales revenue, cost, discounts, and rebates achieved or none achieved. Each record represents a single transaction and includes information about the sales manager, large and middle category names, supplier, and payment details.

日本語にすると

このテーブルには、販売取引の記録が含まれており、実際の金額、売上収益、コスト、割引、およびリベート(達成済みまたは未達成)に関する詳細が記載されています。各レコードは1つの取引を表しており、販売マネージャー、大分類と中分類のカテゴリ名、仕入先、および支払い情報が含まれています。

何がすごいってSalesとか売上って文言がないのに販売取引の記録だとしてくれるんですよね。

カラムの説明文

特筆すべきは赤枠で囲ったBLOCKNAMEです。カラム名だけだとなんのこっちゃですが、サンプルデータを読み込んでいるおかげで

Names of geographical blocks or regions.

日本語だと

地理的ブロックまたは地域の名称。

のように”地理”とか”地域”という単語が入っています。このような判定をしてくれているので、精度が高いと感じました。

結論

1テーブルずつの検証となりましたが、日本語データでも英語データでも精度が高いです。名称と数件のデータから読む精度は高いと感じました。

しかし企業固有の説明が不足すると思います。テーブル定義書を読み込ませるとか社内の共通語を理解させるというアプローチが今後必要になってくるかと思います。現状では一般的なデータは自動生成して、よく使われる項目や社内語が必要なときは都度修正を加えていくことになるかなと考えます。

データベースにAIが活用されていくことが当たり前になってきました。うまくこれらを活用して管理者の工数を下げる働きになってくれると嬉しいですね。

ABOUT ME
石井 亮介(りょうさん)
石井 亮介(りょうさん)
データパレード 代表取締役
㈱データパレードの代表取締役で高田馬場の町中華のChief Data Officerをしています。 BIツールのセールスエンジニア・システムエンジニア・カスタマーサクセス歴10年以上経験、データエンジニア領域とコンサルティングが得意です。BIツール研究所・DMS Cubeなどデータ系コミュニティーのアンバサダーをしています
記事URLをコピーしました