Upgrade to Pro — share decks privately, control downloads, hide ads and more …

サクッと作るText-to-SQLツールの試み

 サクッと作るText-to-SQLツールの試み

2025/07/17 ビジネスを支えるヤバいデータ利活用 LT会@ yabaibuki.dev #6 発表資料
https://livesense.connpass.com/event/359605/

Avatar for Ryo Imai

Ryo Imai

July 19, 2025
Tweet

More Decks by Ryo Imai

Other Decks in Technology

Transcript

  1. • ⾃然⾔語の曖昧さ除去 ◦ ex) 「最も売れている商品を教えて」 ◦ 「売れている」とは「売上額?」「購⼊ 者数?」 • ドメイン知識のコンテキスト取得

    ◦ スキーマ情報の検索‧取得 ◦ 過去の類似クエリの検索‧取得 • SQLの実⾏環境 ◦ パフォーマンス ◦ 実⾏したクエリの蓄積 構成要素 1. Text-to-SQL Copyright © Livesense Inc. GCPでのText-to-SQLのアーキテクチャ例
  2. • ⾃分の分析業務を楽にしたい ◦ モバイルアプリのプランナーをやるようになった ◦ 施策⽴案にあたって、データ分析を⾏う回数が増えた • 分析業務の⼤変さ ◦ SQLの⽅⾔や構⽂でつまづく

    ◦ 似たようなクエリをたくさん書く... ◦ このデータってどのように取り扱うべきなんだっけ... そもそもなぜ作ろうと思ったか 2. サクッと作るために Copyright © Livesense Inc.
  3. • やれることは無限にある ◦ プロンプトの改善 ◦ ドメイン知識を適切に取得するためのRAG化やドキュメンテーショ ンの整備 ◦ 利⽤者評価によるフィードバックサイクルの設計 •

    作り込みすぎるのはコスパが悪い? ◦ プラットフォーム側で覇権的なツールが今後⽣まれるのでは? ◦ LLMが使うツールの開発‧LLMの発展に合わせた継続的な保守⼯数 ⼿元で作ろうとした時に 2. サクッと作るために Copyright © Livesense Inc. 提供する価値を定義・作り込みすぎないアーキテクチャにて 実現する
  4. • 誰に ◦ SQLの基本的な知識があるユーザー ▪ ⽣成されるSQLの評価ができることが前提 • どのような体験を提供するか ◦ ⼀定程度標準化された解釈に基づくドメイン知識を提供しつつ、

    ユーザーのSQL作成をサポートする ◦ インタラクティブな体験を前提とする ▪ LLMとの対話の中で作成するSQLを修正していく ▪ ⽣成されたSQLをユーザーが修正することも想定する 提供する価値を絞り込む! 2. サクッと作るために Copyright © Livesense Inc.
  5. • ⽅針 ◦ ツールを⾃作せず既存のものを最⼤限利⽤する ◦ 精度においては⼈間のサポートを最⼤限想定する • 構成要素 ◦ エディタ

    ▪ Cursor ◦ SQL作成エージェント ▪ Cursor Agentとシステムプロンプト ◦ スキーマ情報 ▪ ローカルファイル ◦ クエリ管理‧実⾏環境 ▪ Redash MCP 作り込みすぎないアーキテクチャ 2. サクッと作るために Copyright © Livesense Inc.
  6. ⾃然⾔語の分析タスクを解釈する 3. アーキテクチャと実装 Copyright © Livesense Inc. 自然言語の分析タスクを 解釈する ドメイン知識を検索し、具

    体化 クエリの作成・実行・履歴 の管理 • Text-to-SQLの基本的な動作をCoding Agentに任せる ◦ 「SQL作成 = コード作成」と捉える ◦ ⾃然⾔語の曖昧さ除去は、コーディングエージェ ントがコードを作成するのにあたって⾏われてい るチューニングを利⽤ ◦ SQL作成において必要なチューニングの⼀部はシ ステムプロンプトで実現 ▪ 使っているDBエンジン情報 ▪ 求められる振る舞いを記述
  7. ドメイン知識を検索し、具体化 3. アーキテクチャと実装 Copyright © Livesense Inc. 自然言語の分析タスクを 解釈する ドメイン知識を検索し、具

    体化 クエリの作成・実行・履歴 の管理 • Agentが利⽤するドメイン知識 ◦ スキーマ情報 ▪ ドキュメントとしてローカルファイルとして 保存しておき、検索させる ▪ クエリを作成した際に、Agentにファイル更 新をさせることで情報を正確に ◦ 過去の類似したクエリログ ▪ BIツールの検索機能を利⽤ ▪ Redash MCPを利⽤して検索‧取得
  8. ドメイン知識を検索し、具体化 3. アーキテクチャと実装 Copyright © Livesense Inc. • Coding Agentが2つのリソースを適宜検索

    ‧取得し、クエリを作成するにあたって必 要な情報を具体化する • Redash MCPを利⽤した検索はかなり貧弱 なので、⼈間側で参考になるクエリのIDな どを渡すことが多い
  9. クエリの作成‧実⾏‧履歴の管理 3. アーキテクチャと実装 Copyright © Livesense Inc. 自然言語の分析タスクを 解釈する ドメイン知識を検索し、具

    体化 クエリの作成・実行・履歴 の管理 • クエリ作成後はローカルにSQLファイルとして保存 • 差分管理にはエディタを使う ◦ ⽣成された差分が⾒やすい ◦ ⼈間が修正可能、かつその修正がAgentに伝わる • クエリ作成後は、Redash MCPを利⽤してBIツールに作 成‧実⾏ ◦ 問題がある場合は、実⾏結果を⾒てAgentが修正
  10. • すごく便利で⽇常的に使っている ◦ ⾃然⾔語から、作成‧更新‧実⾏がオールインワンでできる ◦ エディタを利⽤することで、更新差分の把握やレビューが⾏いやすい • 得意なタスク ◦ 参考にするクエリがあるもの

    ▪ 複数クエリがあってもCTEをうまく繋げてそこそこの精度で書いてくれ る • 苦⼿なタスク ◦ 参考にするクエリがなく、ドキュメント情報のみのもの ▪ 存在しないカラムなどで勝⼿に書き始める ▪ テーブル‧カラム命名が不正確な時に特に起こる ふりかえり 4. やってみて Copyright © Livesense Inc.
  11. • 社内の他の⼈に展開できる状態にしたい ◦ リポジトリにまとめたり、サーバーの整理 • ドメイン知識の検索の改善 ◦ 参照するクエリがあれば⼀定程度のクエリが作成できる ◦ 必要となる情報の検索が改善されていけば、作成できるクエリの範囲は広がる

    ◦ ドキュメント情報を整備する‧増やすことでは改善しづらいのでRAG化など • SQLは分析の⼀⼿段であり、⽬的ではない ◦ 分析フローにおける⼀⼿段として、組み込めるようにしたい ◦ 「仮説」から、SQLによるデータ取得、データの「解釈」まで含めたフローの 中に位置付けられるように構成を考え中 改善したいポイント 4. やってみて Copyright © Livesense Inc.