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
1.6k
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
1.7k
Analytics Engineeringチームの目標管理
__hiza__
62
35k
データ整備の優先順位付けに役立つテクニック
__hiza__
5
2.8k
データマネジメントがちょっと楽になるBigQuery監査ログの使い方
__hiza__
0
5k
レガシー化したdata pipelineの廃止
__hiza__
0
970
メルカリにおける分析環境整備の取り組み
__hiza__
8
7.6k
LookerのDashboardをより柔軟に作る
__hiza__
0
1.5k
Featured
See All Featured
How to Think Like a Performance Engineer
csswizardry
22
1.2k
Writing Fast Ruby
sferik
628
61k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
5
450
Optimizing for Happiness
mojombo
376
70k
Code Review Best Practice
trishagee
65
17k
Building a Scalable Design System with Sketch
lauravandoore
460
33k
Designing for Performance
lara
604
68k
Producing Creativity
orderedlist
PRO
341
39k
Making Projects Easy
brettharned
116
5.9k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
95
17k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
Designing Experiences People Love
moore
138
23k
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͍ͩ͘͞ɻ