Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
NL2SQLを活用したExcelの生成AI利用アプローチ
Search
とすり
May 30, 2025
Programming
0
5
NL2SQLを活用したExcelの生成AI利用アプローチ
とすり
May 30, 2025
Tweet
Share
More Decks by とすり
See All by とすり
RAGの精度が全然上がらない!! AOSSを使った社内RAG開発の反省
tosuri13
2
190
AWS Chaliceで始める爆速サーバレスチャットボット開発!!
tosuri13
1
190
Amazon BedrockでサーバレスなAIお料理ボットを作成する!!
tosuri13
3
570
React + TextAliveでカッコいいLyric Applicatioinを作ろう!!
tosuri13
1
660
Radix UI & shadcn/uiのススメ
tosuri13
0
140
Amazon BedrockとOpenSearch Serviceでなんでも答えられる社内RAGを作成する!!
tosuri13
4
650
Other Decks in Programming
See All in Programming
PT AI без купюр
v0lka
0
160
AIにコードを生成するコードを作らせて、再現性を担保しよう! / Let AI generate code to ensure reproducibility
yamachu
7
5.8k
事業KPIを基に価値の解像度を上げる
nealle
0
180
External SecretsのさくらProvider初期実装を担当しています
logica0419
0
190
REST API設計の実践 – ベストプラクティスとその落とし穴
kentaroutakeda
2
260
Building an Application with TDD, DDD and Hexagonal Architecture - Isn't it a bit too much?
mufrid
0
370
eBPFを用いたAIネットワーク監視システム論文の実装 / eBPF Japan Meetup #4
yuukit
3
390
ビカム・ア・コパイロット
ymd65536
1
190
ワイがおすすめする新潟の食 / 20250530phpconf-niigata-eve
kasacchiful
0
150
【TSkaigi 2025】これは型破り?型安全? 真実はいつもひとつ!(じゃないかもしれない)TypeScript クイズ〜〜〜〜!!!!!
kimitashoichi
1
280
知識0からカンファレンスやってみたらこうなった!
syossan27
5
320
CRUD から CQRS へ ~ 分離が可能にする柔軟性
tkawae
0
210
Featured
See All Featured
The Invisible Side of Design
smashingmag
299
50k
Balancing Empowerment & Direction
lara
1
75
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
47
2.8k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
740
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Writing Fast Ruby
sferik
628
61k
Visualization
eitanlees
146
16k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
15
880
Gamification - CAS2011
davidbonilla
81
5.3k
What's in a price? How to price your products and services
michaelherold
245
12k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
Transcript
NL2SQLを活用した Excelの生成AI利用アプローチ クラメソおおさか IT 勉強会 Midosuji Tech #6
とすり@tosuri13 自称雑用系エンジニア AWS基盤の運用とかをやってます
Excelが生成AIにとって不遇な理由
Excelを生成AIで利用したい 例えば、以下のような社員名簿が記載されたExcelの構造化データを、生成AIで 取り扱うケースを考えます。
テキストに変換してみる 生のExcelデータには不要な文字列(XML)が多く含まれているため、以下のよう なMarkdownのテーブル形式に変換したテキストで扱うのが一般的です。
トークン数の問題 これをそのままプロンプトに含めて出力を生成することも可能ですが、レコー ド数やカラム数が増加するにつれて、入力トークン数(コスト)も大きく増加する ため、あまり好ましくありません。 100,000tokens 1行あたり100トークンと仮定すると 例えば社員名簿が1000行あった場合、OpenAI o3なら1リクエストで1$かかってしまう!!
RAGを利用するのはどうか? では、RAG(ベクトル検索)で扱うのはどうでしょうか?しかし、RAGのチャンキ ング処理の中で、以下のようにテキストが分割される可能性があります。 ・チャンクA ・チャンクB
コンテキスト欠落の問題 このように分割されてしまうと、検索で片方のチャンクしか取得できなかった 場合、ヘッダーや列の一部の重要なコンテキスト情報が抜け落ちるため、生成 AIが正しく出力を生成できなくなる問題があります。 ・チャンクB 例えば「2018-07-01」という日付が何を指しているのか、このチャンクから判断することができない ↓ 生成AIが欠けている情報を補おうとるため、ハルシーネーションが発生するリスクが高まる
色んな問題が重なり合って... このままではExcelを生成AIで扱いづらい!!
NL2SQLを活用した解決方法
どのようにして解決するか? ベクトル検索ではなく、構造化データを生かしたSQL検索を利用してコンテキ ストの取得を行います。ここで利用するユーザの質問(自然言語)をSQLに変換す る技術をNL2SQL(Text-to-SQL)と呼びます。 自然言語(NL) 山田さんはいつ入社した? 自然言語(NL) 山田さんはいつ入社した? Model SQL
Query SELECT 入社日 FROM employees WHERE 氏名 = '山田 太郎'; SQL Query SELECT 入社日 FROM employees WHERE 氏名 = '山田 太郎';
SQL検索のメリット SQL検索を利用することで、必要なコンテキストを欠落させることなく取得す ることができます。また、RAGでは不可能だった集計・フィルタリングなどの 分析タスクも処理できるようになります。 SQL Query SELECT 入社日 FROM employees
WHERE 氏名 = '山田 太郎'; SQL Query SELECT 入社日 FROM employees WHERE 氏名 = '山田 太郎'; employees 必要最低限な量の コンテキストを取得できる
NL2SQLの具体的な実装アプローチ
データベースにロードする ExcelのデータをSQLiteやDuckDBなどのインメモリで動作可能なSQLデータ ベースにロードします。例ではDuckDBを使用しています。
スキーマを定義する 有効なSQLを生成させるには、生成AIにテーブルのスキーマを提供する必要が あります。スキーマには、テーブル名やカラム名、カラムの型、カラムの説明 (取りうる値の制約)などを含めて、プロンプトに組み込みます。
Tool Useでクエリ生成 + 実行を行う Tool Use(Function Calling)で生成AIが要求したクエリを実行します。クエリの 実行結果は再度生成AIに提供され、そこから最終的な回答を生成します。
実際の生成内容を確認する
Excelを生成AIで扱えるようになった この一連の流れを実行することで、Excelデータを生成AIで有効に活用すること ができるようになりました。 ただし、構造化データやスキーマが整備されていない状態では、NL2SQLの効 果を最大限発揮することができないため、基本的なドキュメント整備から始め ることが重要です。 スキーマ取得 クエリ生成 + 実行
テキスト生成 Excelだけでなく、構造化データであれば全て対応することができる!!
まとめ
まとめ ・前提としてExcelデータをそのまま生成AIで扱うのは難しい → 直接読み込むとコストが大きくなってしまう可能性がある → RAG(ベクトル検索)では有効なコンテキストを提供できない可能性がある ・有効的に活用するにはNL2SQLなどのアプローチを取るとよい → NL2SQLでは、データの分析などを生成AIに処理させることができる →
事前に構造化データやスキーマを整備することが重要
Thank you for listening!! 定期的にAI・クラウド系の技術発信をしてるので、よかったらTwitterフォローしてください。 @tosuri13