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評価パイプライン設計【金融データ活用チャレンジ実践】

1
Posted at

前回までの記事では、

  • SnowflakeでJSONが全滅した話

  • VARIANTやLATERAL FLATTENの実践テクニック

を書きました。

本記事では、金融データ活用チャレンジで実際に構築した「評価自動化パイプライン」の設計思想と実装ログをまとめます。

単なる実装紹介ではなく、

なぜこの設計にしたのか
どんな制約があり、どうトレードオフしたのか

まで掘り下げます。


目的:提案書を“データ化”して評価ループを回す

やりたかったのはシンプルです。

10社分の提案書をAIに採点させ、
改善点を抽出し、修正 → 再評価を回す。

しかし、LLM単体では以下の課題がありました。

  • 出力履歴がセッション依存

  • 横断比較ができない

  • 改善履歴が構造化されない

  • トークン上限にすぐ達する

そこで、

Snowflakeをハブにした評価パイプライン

を構築しました。


全体構成(3レイヤー)

[Layer1] 入力
Obsidian(Markdown提案書)
      ↓
[Layer2] データ基盤
Snowflake
  - DRAFT_DOCS
  - DOC_EVAL_CONTEST
      ↓
[Layer3] 評価
Cortex(一次評価)
Claude(高精度レビュー)
      ↓
Cursorで修正 → 再評価

ポイントは、

LLMを単体で使わず、データ基盤に組み込んだこと

です。


実装アプローチ

① 段階的拡張戦略

最初にやらかしたのは、

❌ 長文JSONを10社同時生成

結果:

  • 出力truncate

  • JSONパース失敗

  • eval=NULL

そこで設計変更。

採用戦略

  1. まず短いJSON(5観点のA/B/C)で全件成功

  2. 基準提案書のみ長文生成

  3. 必要に応じて展開

成功率100%を先に作る設計に切り替えました。


② VARIANTによる評価のデータ化

CREATE TABLE DOC_EVAL_CONTEST (
  doc_id STRING,
  raw_text STRING,
  eval VARIANT,
  created_at TIMESTAMP_TZ
);

評価結果をVARIANTで保持することで:

  • JSON構造のまま保存

  • eval:overall.rank のように参照可能

  • LATERAL FLATTENで配列展開

  • 横断比較が可能

評価そのものをデータ化できました。


③ Prompt Pack化

評価結果をCursorに貼れる形式へ変換。

SELECT
  '## 評価結果: ' || doc_id || '\n' ||
  '総合評価: ' || eval:overall.rank || '\n' ||
  LISTAGG(
    '- ' || f.value:instruction,
    '\n'
  ) WITHIN GROUP (ORDER BY f.index)
FROM DOC_EVAL_CONTEST,
LATERAL FLATTEN(input => eval:fixes) f
GROUP BY doc_id, eval:overall.rank;

Snowflake内でレビュー結果を整形し、
Cursorで即修正できるループを構築。


コスト最適化ログ

トークン最適化

当初見積:

1社10万トークン × 10社 = 100万トークン

実績:

6社で約10.8万トークン
=1社約1.8万トークン
→ 約83%削減

手法

  • 冒頭400行のみ読み取り

  • バッチ処理(4社+6社)

  • テンプレート固定化


バッチ処理の効果

項目 当初 実績
DBアクセス 10回 2回
処理時間 約300分 約110分

約1/3に短縮。

LLMは高価なI/O。
前後の設計でコストは劇的に変わります。


設計上の意思決定とトレードオフ

なぜSnowflakeをハブにしたか

LLM単体では:

  • 履歴が残らない

  • 比較ができない

  • 再利用性が低い

Snowflakeに載せることで:

  • 評価をデータ化

  • 横断分析可能

  • 改善履歴を保存

  • 再評価を自動化

ツールから「基盤」に昇格しました。


なぜCortex+Claude併用なのか

  • Cortex:データ近接、完結性

  • Claude:品質高いがトークン制限あり

役割分担:

  • Cortexで一次評価

  • Claudeで高精度レビュー

  • Snowflakeで履歴管理

制約を分離する設計です。


なぜ段階的拡張なのか

LLMは長文×大量に弱い。

いきなり完璧を狙うと壊れる。

成功率を先に作る設計が安定しました。


転用可能な設計パターン

このパターンは提案書に限りません。

  • レポート自動レビュー

  • 内部監査文書評価

  • IR資料分析

  • 契約書レビュー

  • コードレビュー補助

本質は、

文章を評価 → 構造化 → 改善ループ

の自動化です。


設計の本質

今回学んだのは、

LLMを使うことではなく、
LLMをどこに置くかが設計

ということでした。

単体利用は便利。
基盤に組み込むとシステムになる。

Snowflake × LLM は、

「LLMをデータ基盤に接続する設計」

で初めて真価を発揮します。


シリーズまとめ

  1. JSON全滅からの復旧

  2. VARIANTとタグ戦略

  3. 評価パイプライン設計と最適化

中級者の方へ。

もし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?