Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
NL2SQLを活用したExcelの生成AI利用アプローチ
Search
とすり
May 30, 2025
Programming
140
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
NL2SQLを活用したExcelの生成AI利用アプローチ
とすり
May 30, 2025
More Decks by とすり
See All by とすり
AWS IoT GreengrassとRaspberry Piを使って、怠惰な生活検知システムを作る
tosuri13
0
49
Amazon Bedrockを活用したRAGの品質管理パイプライン構築
tosuri13
5
1.2k
Honoを使ったリモートMCPサーバでAIツールとの連携を加速させる!
tosuri13
1
350
S3 VectorsとStrands Agentsを利用したAgentic RAGシステムの構築
tosuri13
6
820
GraphRAGの仕組みまるわかり
tosuri13
10
2k
RAGの精度が全然上がらない!! AOSSを使った社内RAG開発の反省
tosuri13
3
280
AWS Chaliceで始める爆速サーバレスチャットボット開発!!
tosuri13
1
330
Amazon BedrockでサーバレスなAIお料理ボットを作成する!!
tosuri13
3
710
React + TextAliveでカッコいいLyric Applicatioinを作ろう!!
tosuri13
1
1k
Other Decks in Programming
See All in Programming
AI が書く Go コードの品質を劇的に向上させる Linter: “declscope”
mpyw
0
380
技術的負債を組織課題として解く-増えすぎたマイクロサービスとの戦い-
reimaru
1
2.3k
手動確認はもう限界 〜XCUITestでCustom URL Schemeの遷移を起動種別ごとに自動テストする〜 / Testing Custom URL Schemes with XCUITest
otouto
0
330
『寄り添うラジオ』をAIで作る 体験価値から逆算した、会話しないUXと品質設計
theoriatec2024
3
180
GraphRAGのKnowledge Graphを 直接!見る/View-GraphRAG's-KnowledgeGraph-directly!
tyumugi1113
1
390
巨大モノリシックアプリ モダン化大作戦
ktcryomm
1
1.1k
Java 27新機能 / Java 27 new features
kishida
2
160
What We Talk About When We Talk About XP
m_seki
2
670
そのリトライ、死んだコネクションを使い回していませんか ── GoのHTTPクライアントとHTTP/2を実プロダクト障害から学び直す
myus4a
0
220
ゲームコントローラやキーボードのファームウェアをSwiftで書く
kishikawakatsumi
1
250
アクセシビリティから考える情報設計
high_g_engineer
0
380
FreeBSDでZabbixを動かす
kenkino
0
320
Featured
See All Featured
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
Leo the Paperboy
mayatellez
10
2.3k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.4k
Code Reviewing Like a Champion
maltzj
528
40k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
820
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
4.9k
Heart Work Chapter 1 - Part 1
lfama
PRO
10
36k
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
How to build a perfect <img>
jonoalderson
1
6k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.8k
sira's awesome portfolio website redesign presentation
elsirapls
0
420
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
280
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