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
1日50万件貯まるクエリのログを活かして、SQLの生成に挑戦している話
Search
nagai shinya
December 14, 2023
7
2k
1日50万件貯まるクエリのログを活かして、SQLの生成に挑戦している話
2023/12/14「データ基盤×LLM」勉強会にて発表
https://forkwell.connpass.com/event/302234/
nagai shinya
December 14, 2023
Tweet
Share
More Decks by nagai shinya
See All by nagai shinya
Analytics Engineeringチームを立ち上げて学んだこと
__hiza__
4
2.2k
Analytics Engineeringチームの目標管理
__hiza__
70
43k
データ整備の優先順位付けに役立つテクニック
__hiza__
5
3.2k
データマネジメントがちょっと楽になるBigQuery監査ログの使い方
__hiza__
0
5.7k
レガシー化したdata pipelineの廃止
__hiza__
0
1k
メルカリにおける分析環境整備の取り組み
__hiza__
8
8k
LookerのDashboardをより柔軟に作る
__hiza__
0
1.6k
Featured
See All Featured
The Invisible Side of Design
smashingmag
301
51k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
23
1.4k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
358
30k
Balancing Empowerment & Direction
lara
3
620
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Optimising Largest Contentful Paint
csswizardry
37
3.4k
The Cult of Friendly URLs
andyhume
79
6.6k
The Cost Of JavaScript in 2023
addyosmani
53
8.9k
How GitHub (no longer) Works
holman
315
140k
Designing for Performance
lara
610
69k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Why Our Code Smells
bkeepers
PRO
339
57k
Transcript
1 150ສ݅ஷ·ΔΫΤϦͷϩάΛ׆͔ͯ͠ɺ SQLͷੜʹઓ͍ͯ͠Δ 2023/12/14 Nagai Shinya (@_ _hiza_ _)
2 • എܠ ◦ ͦͦͳͥSQLΛੜͤ͞Α͏ͱࢥͬͨͷ͔? • ԿΛͨ͠ͷ͔? ◦ ݴ༿Ͱࢦࣔͨ͠༰ͷSQLΛੜ͢ΔγεςϜΛ࡞ͬͯΈͨ ◦
ͦͷγεςϜʹඞཁͳϝλσʔλLLMʹੜͤͯ͞Έͨ • ݁ՌͲ͏ͩͬͨͷ͔? ◦ ޮԽʹߩݙ͢Δπʔϧ͕࡞Εͦ͏ ◦ ͨͩ͠ԿͰLLMͰΕ͍͍Θ͚Ͱͳ͍ ͓͢Δ͜ͱ ࣾͷσʔλੳʹ͏SQLΛLLMʹੜͤͯ͞ΈͨऔΓΈ
3 • ׂ ◦ ࣾͷσʔλͷར༻ऀͷੜ࢈ੑΛߴΊΔɻσʔλͷར༻ΛΊΔ • ओཁͳϓϩδΣΫτ ◦ ABςετͷࣗಈԽ ◦
BIπʔϧ(Looker)ͷ։ൃͱల։ ◦ ੳ༻தؒςʔϒϧͷ։ൃ ◦ LLMͷ׆༻ ϝϧΧϦ BI productνʔϜ ͍ΘΏΔAnalytics Engineeringʹׂ͍ۙΛͬͨνʔϜ
4 • ࣾͷώΞϦϯά ◦ 30ऑͷνʔϜ͔Βσʔλ׆༻ͷ՝ΛώΞϦϯά ◦ ňSQLΛॻ͘ͷ͕େมʼn • σʔλ ◦
BigQueryͷར༻ऀ 1000ਓ (1݄͋ͨΓ) ◦ 1͋ͨΓͷΫΤϦ20ʙ40 (1ਓ͋ͨΓ) ۃͱͯ͋͠ΒΏΔूܭॲཧ͕ॠ࣌ʹߦ͑ͨΒܶతͳۀվળ͕ݟࠐΊΔ σʔλ׆༻ͷ՝ ňSQLΛॻ͘ͷ͕େมʼn
5 • ňSQLΛॻ͘ͷ͕େมʼnͳཧ༝? ͜Ε·ͰɺSQLΛॻ͘࡞ۀͷෛՙܰݮʹऔΓΜͰ͖ͨ ͜Ε·ͰͷΞϓϩʔν தؒςʔϒϧͷඋɾBIπʔϧɾγεςϜԽ ϝλσʔλͷෆ → ϝλσʔλඋ
ෳࡶͳςʔϒϧߏ தؒςʔϒϧͷඋ SQLࣗମ͕͔Βͳ͍ BIπʔϧͷඋ ಉ͡Α͏ͳΫΤϦΛ܁Γฦ͠ॻ ͍͍ͯΔ ఆܕతͳॲཧͷࣗಈԽ
6 ৽ͨͳΞϓϩʔν • γϯϓϧͳΞΠσΟΞ a. Ϣʔβʔ(ΞφϦετͳͲ)͕ɺ࣮ߦ͍ͨ͠ॲཧΛγεςϜʹ༩͑Δ b. LLM͕SQLΛੜ͢Δ → SQLΛॻ͍ͯΔ࣌ؒΛॖ
LLM͑ΔͷͰͳ͍͔? SQLੜ γεςϜ SQL Γ͍ͨ ूܭ (ࣗવݴޠ)
7 • ୯ʹૉͷLLM(ྫ: ૉͷChatGPT)ʹࢦࣔΛ༩͑ΔͱͲ͏ͳΔ͔ ◦ ୯ʹLLMʹࢦࣔΛ༩͑ͯ͑ΔSQLੜͰ͖ͳ͍ ◦ LLMɺࣾDBͷߏ(ϝλσʔλ)ΛΒͳ͍ͨΊ LLMʹΑΔSQLੜͷ՝ᶃ -
ࣾࣝΛͲ͏͋ͨ͑Δ͔ ՝: LLMࣾࣝΛ࣋ͨͳ͍
8 LLMʹΑΔSQLੜͷ՝ᶃ - ࣾࣝΛͲ͏͋ͨ͑Δ͔ LLM SQL Γ͍ͨूܭ (ࣗવݴޠ) ςʔϒϧAͷઆ໌ ςʔϒϧBͷઆ໌
…. ➕ Ϣʔβʔ͕ ೖྗͨ͠ࢦࣔ ࣾࣝ Ϣʔβʔ͕ೖྗͨ͠ࢦࣔʹࣾࣝΛ͚Ճ͑ͯLLMʹ༩͑ΔγεςϜʹ͢Δ ղܾࡦ: ϝλσʔλΛϓϩϯϓτͰ༩͑Δ ৄࡉͿ͖·͕͢Retrieval-Augmented Generation(RAG)ͱ͍͏ςΫχοΫͰϓϩϯϓτʹ͍ΕΔ͖ϝλσʔλΛϝ λσʔλͷDB͔Βநग़ͯ͠ಈతʹՃͯ͠·͢ɻ
9 • 50ʙ300ςʔϒϧ͘Β͍ͷϝλσʔλΛ४උ͍ͨ͠ ◦ BigQueryͷaudit logΛੳ ▪ Ͳͷςʔϒϧ͕ଟ͘ࢀর͞Ε͍ͯΔ͔͔Δ ▪ ༻్Λߜͬͯ50ςʔϒϧςʔϒϧͱΧϥϜͷઆ໌͕ཉ͍͠
◦ ͦͦਓ͕ΫΤϦΛॻ͘ࡍʹඞཁͳͷ͕ͩඋ͖͠Ε͍ͯͳ͍ LLMʹΑΔSQLੜͷ՝ᶄ - ࣾࣝΛͲ͏༻ҙ͢Δ͔ ՝: ϝλσʔλͷ४උେม
10 • BigQuery audit logʹࣾͰ࣮ߦ͞ΕͨSQLͷϩά͕શͯ͋Δ ◦ 1͋ͨΓ50ສ݅ͷSQL࣮ߦϩά͕ཷ·͍ͬͯΔ ◦ ಛఆͷςʔϒϧΛࢀরͨ͠ΫΤϦͷྫΛLLMʹ͋ͨ͑ͯɺϝλσʔλ Λਪఆͤ͞Δɻ
LLMʹΑΔSQLੜͷ՝ᶄ - ࣾࣝΛͲ͏༻ҙ͢Δ͔ ղܾࡦ: LLMͰϝλσʔλਪఆͤ͞Δ
11 LLMʹΑΔSQLੜͷ՝ᶄ - ࣾࣝΛͲ͏༻ҙ͢Δ͔ ੜͨ͠ϝλσʔλͷྫɻগ͠खΛՃ͑Εेʹ͑Δ༰ͩͬͨ ༰ͷޡΓͷଞʹɺ༻ޠͷෆ౷ҰͳͲදݱํ๏ͷଟগى͖Δɻ
12 γεςϜͷશମ૾ Audit Log͔Βͷϝλσʔλใ + ूܭ༰ͷࢦࣔ → SQL LLM SQL
Γ͍ͨूܭ (ࣗવݴޠ) ςʔϒϧAͷઆ໌ ςʔϒϧBͷઆ໌ ➕ Step2. SQLͷੜ Step1. ϝλσʔλͷਪఆ SQLͷྫ1 SQLͷྫ2 ϝλσʔλΛ ਪఆ͍ͯͩ͘͠͞ ➕ LLM ςʔϒϧAͷઆ໌ ςʔϒϧBͷઆ໌
13 • ੳͰ͑ͦ͏ͳΫΤϦΛूܭͤͯ͞Έͨ ◦ ͋Δ݄ʹొͨ͠Ϣʔβʔʹ͍ͭͯɺొ݄͔Βͷܦա݄͝ͱʹߪ ೖΛܭࢉ͍ͯͩ͘͠͞ɻ(͍ΘΏΔొ͔Βͷίϗʔτੳ) • ݁Ռ ◦ 1ʙ2Օॴमਖ਼͢Εಈ͘ΫΤϦ͕ੜͰ͖ͨɻ
◦ ͜ͷྫΑΓ͏গ͍͓͠͠Ͱಉ͘͡Β͍ͷ࣭ɻ ▪ ňγϯϓϧͳwindows͕۟ඞཁʼn͘Β͍ͷқͳΒग़དྷͨ ੑೳͷݕূ ݁Ռ: ΞφϦετ͕গ͠खΛՃ͑Εे͑ΔSQL͕ੜͰ͖ͨ
14 ग़ྗͷྫ ← SQL ← ूܭͷ༰ɺલఏ
15 • SQLΛॻ͘ੜ࢈ੑΛ͔ͳΓ্͛ΒΕͦ͏ ◦ ΞφϦετաڈʹॻ͍ͨSQLΛॻ͖͑͏έʔε͕ଟ͍ ◦ ͦͷňԼॻ͖ʼnͱͯ͠ͳΒLLMेʹ͑Δ • ՝ ◦
θϩ͔ΒSQLΛॻ͚ΔਓͰͳ͍ͱਖ਼֬ੑΛ୲อͰ͖ͳ͍ ◦ QAग़དྷͳ͍ ◦ LLMͰղܾ͖͢՝ͳͷ͔? ▪ Ͳͷςʔϒϧಉ࢜Λjoinͨ͠Βཉ͍͠σʔλ͕ಘΒΕΔ? → ྑ͘join͢ΔΈ߹ΘͤͳΒதؒςʔϒϧΛ࡞͓͖ͬͯ͘ ͬͯΈ͔ͯͬͨLLMʹΑΔSQLͷੜ ᶃ͑ͦ͏ɻᶄͳΜͰLLMͰΕྑ͍Θ͚Ͱͳ͍ɻ
16 • ఆܗੑͷߴ͍χʔζ ◦ ྫ: ABςετͷޮՌݕূͰຖճಉ͡SQLॻ͍ͯΔ ▪ ABςετΛࣗಈԽ͢ΔπʔϧΛ࡞Δ ▪ ͔ͬ͠ΓQA͠ɺߴԽ͠ɺࣗಈԽ͢Δ
◦ ྫ: ͲͷςʔϒϧΛjoin͢Εཉ͍͠σʔλ͕ಘΒΕΔ? ▪ ύλʔϯԽͯ͠ΔͳΒதؒςʔϒϧԽ • ඇఆܕͷχʔζ ◦ ্ه͔Β࿙Εͨχʔζશൠʹର͢Δੜ࢈ੑΞοϓʹLLM͕͖ͦ͏ ͍͚ͷඞཁੑ ňඇఆܕͷࡉ͔͍ूܭͷޮΛఈ্͛͢Δʼnͱ͍ͬͨ༻్ʹ͖ͦ͏
17 ňͬͯΈͨʼnͷઌʹ͋Δͷ ձࣾͷ՝ʹର͢Δཧղͬͯॏཁ • ࠓճͷҐஔ͚ͮ ňͬͯΈͨʼn ◦ ·ͩۀʹཱ͍ͬͯΔΘ͚Ͱͳ͍ɻٕज़తʹݫີͳ༁Ͱͳ͍ ◦ ͰͬͯΈΔ͜ͱͰಘΒΕΔใେ͖͍
◦ LLMͰ”Կ͕ग़དྷͦ͏”ͳͷ͔? • Կ͔͕ग़དྷͦ͏ͳ࣌ɺԿΛ͖͢? ◦ ͲΜͳ՝Λղܾ͢Εɺձࣾͷʹͭͳ͕Δͷ͔? ◦ ͦΕΛͬͯΔ͔Βٕज़͕͍͚ΒΕΔ ◦ ͦΕΛΒͳ͍ͱňͬͯΈͨʼnͷઌ͕ͳ͍ ▪ ώΞϦϯάɺσʔλੳʹΑΔձࣾ՝ͷཧղͬͯେࣄ
18 @_ _hiza_ _ https://twitter.com/__hiza__ ͜ͷςʔϚʹ͍ͭͯΧδϡΞϧʹ͍ͨ͠ํ͕ډͨΒ ͓ؾܰʹDM͍ͩ͘͞ɻ