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

1日50万件貯まるクエリのログを活かして、SQLの生成に挑戦している話

nagai shinya
December 14, 2023
1.4k

 1日50万件貯まるクエリのログを活かして、SQLの生成に挑戦している話

2023/12/14「データ基盤×LLM」勉強会にて発表
https://forkwell.connpass.com/event/302234/

nagai shinya

December 14, 2023
Tweet

Transcript

  1. 2 • എܠ ◦ ͦ΋ͦ΋ͳͥSQLΛੜ੒ͤ͞Α͏ͱࢥͬͨͷ͔?
 • ԿΛͨ͠ͷ͔? ◦ ݴ༿Ͱࢦࣔͨ͠಺༰ͷSQLΛੜ੒͢ΔγεςϜΛ࡞ͬͯΈͨ ◦

    ͦͷγεςϜʹඞཁͳϝλσʔλ΋LLMʹੜ੒ͤͯ͞Έͨ
 • ݁ՌͲ͏ͩͬͨͷ͔? ◦ ޮ཰Խʹߩݙ͢Δπʔϧ͕࡞Εͦ͏ ◦ ͨͩ͠ԿͰ΋LLMͰ΍Ε͹͍͍Θ͚Ͱ͸ͳ͍ ͓࿩͢Δ͜ͱ ࣾ಺ͷσʔλ෼ੳʹ࢖͏SQLΛLLMʹੜ੒ͤͯ͞ΈͨऔΓ૊Έ
  2. 3 • ໾ׂ ◦ ࣾ಺ͷσʔλͷར༻ऀͷੜ࢈ੑΛߴΊΔɻσʔλͷར༻Λ޿ΊΔ
 • ओཁͳϓϩδΣΫτ ◦ ABςετͷࣗಈԽ ◦

    BIπʔϧ(Looker)ͷ։ൃͱల։ ◦ ෼ੳ༻தؒςʔϒϧͷ։ൃ ◦ LLMͷ׆༻ ϝϧΧϦ BI productνʔϜ ͍ΘΏΔAnalytics Engineeringʹ͍ۙ໾ׂΛ΋ͬͨνʔϜ
  3. 4 • ࣾ಺΁ͷώΞϦϯά ◦ 30ऑͷνʔϜ͔Βσʔλ׆༻ͷ՝୊ΛώΞϦϯά ◦ ňSQLΛॻ͘ͷ͕େมʼn
 • σʔλ ◦

    BigQueryͷར༻ऀ਺ 1000ਓ (1݄͋ͨΓ) ◦ 1೔͋ͨΓͷΫΤϦ਺20ʙ40 (1ਓ͋ͨΓ) ۃ࿦ͱͯ͋͠ΒΏΔूܭॲཧ͕ॠ࣌ʹߦ͑ͨΒܶతͳۀ຿վળ͕ݟࠐΊΔ σʔλ׆༻ͷ՝୊ ňSQLΛॻ͘ͷ͕େมʼn
  4. 5 • ňSQLΛॻ͘ͷ͕େมʼnͳཧ༝͸? 
 ͜Ε·Ͱ΋ɺSQLΛॻ͘࡞ۀͷෛՙܰݮʹऔΓ૊ΜͰ͖ͨ ͜Ε·ͰͷΞϓϩʔν தؒςʔϒϧͷ੔උɾBIπʔϧɾγεςϜԽ ϝλσʔλͷෆ଍ → ϝλσʔλ੔උ

    ෳࡶͳςʔϒϧߏ੒ தؒςʔϒϧͷ੔උ SQLࣗମ͕෼͔Βͳ͍ BIπʔϧͷ੔උ ಉ͡Α͏ͳΫΤϦΛ܁Γฦ͠ॻ ͍͍ͯΔ ఆܕతͳॲཧͷࣗಈԽ
  5. 8 LLMʹΑΔSQLੜ੒ͷ՝୊ᶃ - ࣾ಺஌ࣝΛͲ͏͋ͨ͑Δ͔ LLM SQL ΍Γ͍ͨूܭ (ࣗવݴޠ) ςʔϒϧAͷઆ໌ ςʔϒϧBͷઆ໌

    …. ➕ Ϣʔβʔ͕ ೖྗͨ͠ࢦࣔ ࣾ಺஌ࣝ Ϣʔβʔ͕ೖྗͨ͠ࢦࣔʹࣾ಺஌ࣝΛ෇͚Ճ͑ͯLLMʹ༩͑ΔγεςϜʹ͢Δ
 ղܾࡦ: ϝλσʔλΛϓϩϯϓτͰ༩͑Δ ৄࡉ͸͸Ϳ͖·͕͢Retrieval-Augmented Generation(RAG)ͱ͍͏ςΫχοΫͰϓϩϯϓτʹ͍ΕΔ΂͖ϝλσʔλΛϝ λσʔλͷDB͔Βநग़ͯ͠ಈతʹ௥Ճͯ͠·͢ɻ
  6. 9 • 50ʙ300ςʔϒϧ͘Β͍ͷϝλσʔλΛ४උ͍ͨ͠ ◦ BigQueryͷaudit logΛ෼ੳ ▪ Ͳͷςʔϒϧ͕ଟ͘ࢀর͞Ε͍ͯΔ͔෼͔Δ ▪ ༻్Λߜͬͯ΋50ςʔϒϧ͸ςʔϒϧͱΧϥϜͷઆ໌͕ཉ͍͠

    ◦ ͦ΋ͦ΋ਓ͕ΫΤϦΛॻ͘ࡍʹ΋ඞཁͳ΋ͷ͕ͩ੔උ͖͠Ε͍ͯͳ͍
 LLMʹΑΔSQLੜ੒ͷ՝୊ᶄ - ࣾ಺஌ࣝΛͲ͏༻ҙ͢Δ͔ ՝୊: ϝλσʔλͷ४උ͸େม
  7. 12 γεςϜͷશମ૾ Audit Log͔Βͷϝλσʔλ৘ใ + ूܭ಺༰ͷࢦࣔ → SQL LLM SQL

    ΍Γ͍ͨूܭ (ࣗવݴޠ) ςʔϒϧAͷઆ໌ ςʔϒϧBͷઆ໌ ➕ Step2. SQLͷੜ੒ Step1. ϝλσʔλͷਪఆ SQLͷྫ1 SQLͷྫ2 ϝλσʔλΛ ਪఆ͍ͯͩ͘͠͞ ➕ LLM ςʔϒϧAͷઆ໌ ςʔϒϧBͷઆ໌
  8. 13 • ෼ੳͰ࢖͑ͦ͏ͳΫΤϦΛूܭͤͯ͞Έͨ ◦ ͋Δ݄ʹొ࿥ͨ͠Ϣʔβʔʹ͍ͭͯɺొ࿥݄͔Βͷܦա݄਺͝ͱʹߪ ೖ཰Λܭࢉ͍ͯͩ͘͠͞ɻ(͍ΘΏΔొ࿥͔Βͷίϗʔτ෼ੳ)
 • ݁Ռ ◦ 1ʙ2Օॴमਖ਼͢Ε͹ಈ͘ΫΤϦ͕ੜ੒Ͱ͖ͨɻ

    ◦ ͜ͷྫΑΓ΋͏গ͠೉͍͓͠୊Ͱ΋ಉ͘͡Β͍ͷ඼࣭ɻ ▪ ňγϯϓϧͳwindows͕۟ඞཁʼn͘Β͍ͷ೉қ౓ͳΒग़དྷͨ ੑೳͷݕূ ݁Ռ: ΞφϦετ͕গ͠खΛՃ͑Ε͹े෼࢖͑ΔSQL͕ੜ੒Ͱ͖ͨ
  9. 15 • SQLΛॻ͘ੜ࢈ੑΛ͔ͳΓ্͛ΒΕͦ͏ ◦ ΞφϦετ͸աڈʹॻ͍ͨSQLΛॻ͖׵͑࢖͏έʔε͕ଟ͍ ◦ ͦͷňԼॻ͖ʼnͱͯ͠ͳΒLLM͸े෼ʹ࢖͑Δ
 • ՝୊ ◦

    θϩ͔ΒSQLΛॻ͚ΔਓͰͳ͍ͱਖ਼֬ੑΛ୲อͰ͖ͳ͍ ◦ QAग़དྷͳ͍ ◦ LLMͰղܾ͢΂͖՝୊ͳͷ͔? ▪ Ͳͷςʔϒϧಉ࢜Λjoinͨ͠Βཉ͍͠σʔλ͕ಘΒΕΔ?
 → ྑ͘join͢Δ૊Έ߹ΘͤͳΒதؒςʔϒϧΛ࡞͓ͬͯ͘΂͖ ΍ͬͯΈͯ෼͔ͬͨLLMʹΑΔSQLͷੜ੒ ᶃ࢖͑ͦ͏ɻᶄͳΜͰ΋LLMͰ΍Ε͹ྑ͍Θ͚Ͱ͸ͳ͍ɻ
  10. 16 • ఆܗੑͷߴ͍χʔζ ◦ ྫ: ABςετͷޮՌݕূͰຖճಉ͡SQLॻ͍ͯΔ ▪ ABςετΛࣗಈԽ͢ΔπʔϧΛ࡞Δ ▪ ͔ͬ͠ΓQA͠ɺߴ଎Խ͠ɺࣗಈԽ͢Δ

    ◦ ྫ: ͲͷςʔϒϧΛjoin͢Ε͹ཉ͍͠σʔλ͕ಘΒΕΔ? ▪ ύλʔϯԽͯ͠ΔͳΒதؒςʔϒϧԽ
 • ඇఆܕͷχʔζ ◦ ্ه͔Β࿙Εͨχʔζશൠʹର͢Δੜ࢈ੑΞοϓʹLLM͕޲͖ͦ͏ ࢖͍෼͚ͷඞཁੑ ňඇఆܕͷࡉ͔͍ूܭͷޮ཰Λఈ্͛͢Δʼnͱ͍ͬͨ༻్ʹ޲͖ͦ͏
  11. 17 ň΍ͬͯΈͨʼnͷઌʹ͋Δͷ΋ ձࣾͷ՝୊ʹର͢Δཧղͬͯॏཁ • ࠓճͷҐஔ͚ͮ ň΍ͬͯΈͨʼn ◦ ·ͩۀ຿ʹ໾ཱ͍ͬͯΔΘ͚Ͱ͸ͳ͍ɻٕज़తʹݫີͳ༁Ͱ΋ͳ͍ ◦ Ͱ΋΍ͬͯΈΔ͜ͱͰಘΒΕΔ৘ใ͸େ͖͍

    ◦ LLMͰ”Կ͕ग़དྷͦ͏”ͳͷ͔?
 • Կ͔͕ग़དྷͦ͏ͳ࣌ɺԿΛ͢΂͖? ◦ ͲΜͳ՝୊Λղܾ͢Ε͹ɺձࣾͷ੒௕ʹͭͳ͕Δͷ͔? ◦ ͦΕΛ஌ͬͯΔ͔Βٕज़͕࢖͍෼͚ΒΕΔ ◦ ͦΕΛ஌Βͳ͍ͱň΍ͬͯΈͨʼnͷઌ͕ͳ͍ ▪ ώΞϦϯάɺσʔλ෼ੳʹΑΔձࣾ՝୊ͷཧղͬͯେࣄ