1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Snowflake無料枠でLLM評価基盤を作ったらJSONで全滅した話【初心者視点】

1
Posted at

金融データ活用チャレンジに参加したのをきっかけに、
初めてSnowflakeを触りました。

SQLは触ったことがある。でもSnowflakeは初体験。

結果から言うと、

JSONが全件NULLになって絶望しました。

この記事はその失敗と解決ログです。


そもそもSnowflakeって何?

最初に混乱したのがここ。

Snowflakeはクラウド上のデータベースですが、普通のRDBとちょっと違います。

一番の違いはこれ:

  • データを保存する場所(Database)
  • SQLを実行するエンジン(Warehouse)

が分かれていること。

私は最初これを理解しておらず、

SQLが動かない…?

となりました。

原因はシンプル。

Warehouseが停止していた。

Snowflakeは使った時間だけ課金されるので、
自動で止まる仕組みになっています。

つまり、

「作業員が寝ているとSQLは動かない」

という世界でした。


2つ目の罠:DBとSchemaで迷子になる

テーブルを作ったはずなのに見えない。

原因は、

USE DATABASE xxx;
USE SCHEMA PUBLIC;

をしていなかっただけ。

Snowflakeは「今どの箱の中にいるか」が超重要。

ここで30分溶かしました。


最大の罠:LLMのJSONが全部NULLになる

今回やりたかったのはこれ。

  • SnowflakeのCortexで文章を評価
  • JSONで結果を返してもらう
  • それをテーブルに保存

うまくいったと思ったら、

eval_null = 10 / 10

全部NULL。

絶望。


原因調査

raw_text(AIの生出力)を確認すると、こうなっていました。

評価結果は以下の通りです。

{
  "score": 0.82,
  "confidence": 0.91
}

Snowflakeは

JSONだけくれ

と言っているのに、

文章+JSON

が返ってきていた。

だから TRY_PARSE_JSON() が失敗していた。


解決策:タグで囲ませる

プロンプトを修正。

<JSON>
{
 ...
}
</JSON>

で出力させる。

そしてタグの中身だけ抜き出す。

TRY_PARSE_JSON(
  SPLIT_PART(
    SPLIT_PART(raw_text, '<JSON>', 2),
    '</JSON>',
    1
  )
)

結果:

eval_null = 0

全部成功。

ここが今回一番の学びでした。


無料枠はどのくらい使った?

  • データ取り込み
  • LLM評価テスト
  • デバッグ

を繰り返しても、無料クレジット内で十分回せました。

ただし、

Warehouseを止め忘れると地味に減る

ので注意。


Snowflake初心者が学んだこと

  • Warehouseは「計算エンジン」
  • DBとSchemaは常に意識
  • LLM出力は信用しない
  • JSONはタグで囲ませると安定する
  • raw_textを必ず確認する

まとめ

Snowflakeは難しそうに見えますが、

構造を理解すれば普通のSQLの延長線上です。

一番大事なのは、

うまくいかないときは生データを見る

これに尽きます。

もしこれからSnowflake+LLMを触る人がいたら、
同じ罠にハマらないことを祈ります。


1
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?