Text-to-SQLの評価データセットを作って最新LLMモデルの性能評価をしてみた
by
Gota
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
Text-to-SQLの評価データセットを作って最新 LLMモデルの性能評価をしてみた 2025/6/12 #StudyCo
Slide 2
Slide 2 text
Claude Code Zennで伸びた記事⇒ 自己紹介 Gota (相原 豪太) 所属 データアナリスト and AIエージェント開発 趣味 AIエージェント作り (MCP) / 軽登山 / アニメ (進撃の巨人にハマり中) SNS X (@gota_bara) / note (@gotalab) 好きな Coding Agent
Slide 3
Slide 3 text
現在のチャレンジ: 自律型分析エージェントの開発 問題定義から資料作成までの一連の分析業務全体を AIにやらせることには成功!
Slide 4
Slide 4 text
理想と現実: 品質の壁 ビジネスユーザーに展開するには、下流のデータ集計・抽出の信頼性が全て ● 意思決定を支援できるレポートか? ● ドメイン知識を加味して解釈している? ● レポートの数値は合ってる? ● 数値を出すためのコードは合ってる? ● … -> 人間のレビューがある状態だと(レビュー面倒臭すぎて)かなりきつい...
Slide 5
Slide 5 text
まずはText-to-SQLから! データ抽出・集計の土台の精度を測り、信頼性を把握したい ● データ集計は、データ分析の初期段階(前処理・EDA・抽出・集計)で必ず行う 必要がある ● エンタープライズではDBアクセスは必須 ● コンテキストをどう与えれば精度が出るのかが分かれば、マルチエージェント の計画段階タスク分解の調整が可能となる
Slide 6
Slide 6 text
Text-to-SQLの評価データセットを作って LLMモデルの性能を比較した
Slide 7
Slide 7 text
まずは結果から! ● Claude Sonnet 4とGPT-4.1が実行精度が高い ● 意外だったのがOpus 4, Gemini 2.5は実行精度が低い... ※インストラクションは全て同じ。評価データセットは 60問 ※ Claude CodeのおかげでLT会に間に合いました!
Slide 8
Slide 8 text
今回の全体像 ※ Claude CodeのおかげでLT会に間に合いました! ※ 今回はtheLook eCommerceのデータセットに対して評価データセットを作成 質問リストの生成 合成SQL生成 人間レビュー gold SQL データセット 質問 SQLクエリ 実行結果 DBスキーマ 等 Gold SQL 実行結果 ① 独自の簡易評価データセットの作成 ② 評価データセットを用いて、各種 LLMモデルでtext-to-sqlの評価 + 実行 評価
Slide 9
Slide 9 text
データ分析、集計、抽出に必要な質問を作成する ● Text-to-SQLの質問とビジネスユーザーの質問が必ずしも一致する必要はな く、質問に含めるコンテキストが鍵 ● ここで重要なのが、いかにアウトプットの精度が上がる質問の仕方ができる か... ● 過去のSQLの履歴があるならそれらを基に作成するとより実稼働状況に近い 質問を作成出来る Step 1: 質問リストの生成
Slide 10
Slide 10 text
Step 2: 合成SQL 生成 ここはText-to-SQLと一緒なので深く話さないが、実環境と違って必 要な情報を含めるだけで良い! ● 該当データセットのスキーマ情報、データモデル(ER図)を与え る ● 各スキーマの具体体な値を与える ● ドメイン知識やビジネスコンテキストを与える ※ コンテキストの与え方は、 SnowflakeのSemantic Modelの仕様の英語版が参考になる
Slide 11
Slide 11 text
Step 3: 人間レビュー 気合と根性! 一人でやると地獄
Slide 12
Slide 12 text
Step 4: Gold SQLの完成 今回は質問/SQLの正解ペアを60問用意 ● 複数観点の評価軸を用意 ○ 難易度: easy/medium/hard ○ 質問種別: 時系列, セグメント分け, 集約, ランキング, … ○ SQL句のタグ: window, group_by, join
Slide 13
Slide 13 text
難易度別の各LLMの結果(実行精度) ● 難易度のタグ付けが怪しい!? タグ付けは評価後にやるべき!?
Slide 14
Slide 14 text
Text-to-SQLの評価指標 完全一致度 (EM) 実行精度 (EX) 有効効率スコア (VES) 生成されたSQLが正解クエリと文字列とし て完全に一致するかを評価 SQLの実行結果が正解クエリの実行結果 と一致するかを評価 (今回はこれ ) 実行精度と実行効率の両方を評価する総 合指標 実行精度と簡単に言うが、問いに対して正解の実行結果は無数にある ⇒実行結果をより正しく測れるように独自EX指標を作成 ■ メリット ・評価が高速 ・一貫性がある ■ デメリット ・同じ結果の異なる構文を誤判定 ・実用性が低い ■ メリット ・ビジネス要求にも耐えうる実用的な評価 ・構文の違いを許容 ■ デメリット ・実行環境が必要 ・評価に時間がかかる 大規模データベースでは特に重要になる 指標
Slide 15
Slide 15 text
実行結果は正しいが、出力形式が 異なる結果も正しく取得出来るよう に! EXから修正箇所 ● 同義の列名マッチング ● 数値の端数処理 ● 日付・比率の正規化 ● NULL値の処理 今回作成した既存の実行精度(EX) vs 独自評価指標 x軸が既存実行精度 , y軸が独自の実行精度
Slide 16
Slide 16 text
● 実ユースケースを再現可能な雑Evalsを早い段階で用意し、Evals自体を洗 練させていく手法は改善サイクルが一番早く回る感あり! ● 正しさを担保するならText-to-SQL単体だと厳しいため、セマンティックモデル の導入が出来るようAI ReadyなDB整備早めに終わらせておくのが大切 分析エージェントやAIエージェントについてディスカッションしたいです。 お気軽にX(@gota_bara)からご連絡ください! まとめ Claude Code最高!