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

ChatGPTとLangChainで爆速RAGアプリの開発/ChatGPT+LangChain

 ChatGPTとLangChainで爆速RAGアプリの開発/ChatGPT+LangChain

2023.6.6 ChatGPT Hack Online Session で話した内容です

吉田真吾

June 06, 2023
Tweet

More Decks by 吉田真吾

Other Decks in Programming

Transcript

  1. ͳͥίϛϡχςΟΛ΍Δ΂͖͔ • --.͕ੈքΛ͔ͬ͢Γม͑ͯ͠·ͬͨ • ૊৫ͷதʹಉ͡৘೤΍ϕΫτϧΛ͍࣋ͬͯΔ஥ؒ͸͍·͔͢ʁ • ࣗ෼͕औΓ૊ΜͰΔ͜ͱͷ౴͑߹ΘͤΛͨ͘͠ͳ͍͔ʁ ˣˣˣ • ৘ใ͕ଟ͗ͯ͢ϋλͱʮ͢΂ͯ౤͛ͩͨ͘͠ͳΔʯ

    • ੈք͔Βஔ͍͔ͯΕͯΔؾ͕ͯ͠ʮ͢΂ͯ౤͛ͩͨ͘͠ͳΔʯ • ςϝʔͷͰ͖ͳ͞ɾ஌Βͳ͞ʹޙΖΊ͍ͨؾ࣋ͪʹͳΔ ˣˣˣ • མ͍ͪͭͯɺ·͙ͬ͢ʹɺҰาҰา΍͍ͬͯ͜͏ -FU`TUIJOLTUFQCZTUFQ
  2. ਅͷʮ"*ͷຽओԽʯʹඞཁͳίϥϘϨʔγϣϯ  "*.-ΤϯδχΞ • --.ͷ࢓૊Έ΍࠷৽৘ใɺຊ൪ӡ༻ʹ޲͚ͨϊ΢ϋ΢΍νϡʔχϯά ͳͲɺσϦόϦʔʹ޲͚ͯඞཁͳέΠύϏϦςΟ  ΞϓϦέʔγϣϯΤϯδχΞ • --.ٕज़Λ࣮ࡍʹϑϩϯτΤϯυ΍Πϯϑϥ্ʹߏங͠ɺ$*$%ύΠ

    ϓϥΠϯʹࡌͤͯܧଓతʹσϦόϦʔ͢ΔͨΊʹඞཁͳέΠύϏϦ ςΟ  υϝΠϯΤΩεύʔτ • ֤υϝΠϯͰ༗ޮͳϢʔεέʔεΛݟ͚ͭͯίϯϓϥΠΞϯεɺϓϥ ΠόγʔอޢͳͲʹਫ਼௨͍ͯ͠Δ
  3. ͸͡Ίʹɿੜ੒"*ͱ͸ͳʹ͔ େྔͷςΩετͰτϨʔχϯά͞Εɺจষ಺ͷ࣍ͷ୯ޠΛ༧ଌ͢Δେن໛ݴ ޠϞσϧ --. ͳͲΛར༻͢Δɻ "*ͷҰछɻ ੜ੒"*ͷ୅දతͳྫ  ࣗવݴޠੜ੒ /-1

    /-( $IBU(15ͷΑ͏ʹɺ͔͋ͨ΋ਓ͕ؒੜ੒͠ ͔ͨͷΑ͏ͳจষΛੜ੒͢Δٕज़ɻ෺ޠ΍اըͷੜ੒ɺνϟοτϘο τͱͷର࿩ɺ&ϝʔϧͷ࡞੒ͳͲͷ༻్Ͱར༻Ͱ͖Δ  ը૾ੜ੒ ("/ (FOFSBUJWF"EWFSTBM /FUXPSL ͳͲͰೖྗΛݩʹ৽ ͍͠ը૾Λੜ੒͢Δٕज़  ࣗવݴޠ͔Βը૾Λੜ੒ͨ͠Γɺݴޠͱը૾Λੜ੒͢ΔϚϧνϞʔμ ϧͳϞσϧ΋͋Δ ج൫ϞσϧͷਐԽ • 5SBOTGPSNFS "UUFOUJPO*T"MM:PV/FFEɿarXiv:1706.03762 ͔Β(15 ·Ͱ • ϩʔΧϧ--.)VHHJOH'BDF $JWJU"* "*Ϟσϧ൛ͷ(JU)VC(JUMBC • ج൫Ϟσϧͷ։ൃʹ͸਺ेԯن໛͔͔Δ
  4. $IBU(15ڰ૝ۂ ೥݄೔ 0QFO"*͕ࣾ$IBU(15ΛϦϦʔε • ର࿩ମݧͷੑೳ͕ߴ͍ͱ࿩୊ • िؒˠສϢʔβʔϲ݄ˠԯϢʔβʔ • (15ԯύϥϝʔλʔ ೥݄·Ͱ

    • (PPHMFඇৗࣄଶએݴ • .JDSPTPGUఏܞ Πϯϑϥఏڙ  CJOH΁ͷ૊ΈࠐΈ ೥݄೔ $IBU(15 "1*ΛϦϦʔε • UFYUEBWJODJͷͷίετͰར༻Ͱ͖Δ HQUUVSCP • CPU΍ΞϓϦͳͲͷϒʔϜ ೥݄೔(15ΛϦϦʔε • ஹݸ ࣗশ ͷύϥϝʔλ਺ • ϚϧνϞʔμϧػೳ ςΩετ ը૾ͳͲ ˞ະఏڙ
  5. • OQNΛݻΊͯ-BNCEB-BZFSʹΞοϓϩʔυ͢Δ • खݩͰ • ;JQԽͯ͠"84-BNCEB$POTPMF͔ΒΧελϜϨΠϠʔʹొ࿥ • ˞-BNCEB͸ෳ਺ͷϨΠϠʔΛઃఆɾల։Ͱ͖ΔͷͰ0QFO"* "1*΋ผ Ͱొ࿥͓ͯ͘͠

    • τʔΫϯɺΩϟογϡ ςʔϒϧ ໊ɺσϑΥϧτ55-ͰॳظԽ 3FEJTΫϥΠΞϯτ൛ Ќ Λ࢖ͬͯΈΔ IUUQTHJUIVCDPNNPNFOUPIRNPNFOUPOPEFSFEJTDMJFOU
  6. • OQNΛݻΊͯ-BNCEB-BZFSʹΞοϓϩʔυ͢Δ • खݩͰ • ;JQԽͯ͠"84-BNCEB$POTPMF͔ΒΧελϜϨΠϠʔʹొ࿥ • ˞-BNCEB͸ෳ਺ͷϨΠϠʔΛઃఆɾల։Ͱ͖ΔͷͰ0QFO"* "1*΋ผ Ͱొ࿥͓ͯ͘͠

    • τʔΫϯɺΩϟογϡ ςʔϒϧ ໊ɺσϑΥϧτ55-ͰॳظԽ 3FEJTͱͯ͠ར༻Ͱ͖Δ͏͑ʹαʔόʔϨε IUUQTHJUIVCDPNNPNFOUPIRNPNFOUPOPEFSFEJTDMJFOU
  7. &NCFEEJOHT͸-BOH$IBJOͰ؅ཧ IUUQTKTMBOHDIBJODPNEPDTNPEVMFTJOEFYFTUFYU@TQMJUUFSTFYBNQMFTSFDVSTJWF@DIBSBDUFS • 0QFO"*&NCFEEJOHTˠUFYUFNCFEEJOHBEBͰϕΫ λʔม׵ • ϕΫλʔετΞ • ͸͡Ί͸ )/48-JC

    ͰϩʔΧϧอଘ +40/ͷத਎ݟ͍ͨ • εέʔϧΛ૝ఆͯ͠ 1JOFDPOFʹࡌͤସ͑ • 3FDVSTJWF$IBSBDUFS5FYU4QMJUUFS • εϓϨουγʔτ΍$47Λͦͷ··౤͛ࠐΉͷʹศར • DIVOL4J[F ͱ DIVOL0WFSMBQ ͸Ͳͷ͘Β͍͕దਖ਼ͳͷ͔ʁ • σϑΥϧτ͸   • 'FXTIPUTͰτʔΫϯΛແବʹফඅͨ͘͠ͳ͍ˠ DIVOL4J[FΛখ͘͞ • 2ͱ"͕ߦͰे෼ʹೖΔ ֎Ε஋Λআ͘ DIVOL4J[F • ్தͰ੾Εͯ΋લޙͷίϯςϯπʹे෼ʹίϯςΩετؚ͕·ΕΔ DIVOL0WFSMBQ • ਖ਼௚೉͍͠ͷͰૣΊʹ 1JOFDPOFͰՄมʹ͔͋ͭ͏΄͏͕Α͠
  8. ײ૝ • ָ͍͠ • ެࣜυΩϡϝϯτಡΊ • &NCFEEJOHT • -MBNB*OEFYͰे෼ •

    ք۾ͷτϐοΫΛ΢Υον ͢ΔͳΒ-BOH$IBJO • ϕΫλʔετΞ • 1JOFDPOF • .PNFOUP࢖͍͍ͨ • HQULૣ͘΄͍͠
  9. ͔͜͜Β͕͍ͨ΁Μ • ຊ൪ϦϦʔεɾӡ༻ʹ޲͚ͯ ʮମײഒҎ্͸΍Δ͜ͱ͋Δʯ • ϓϩϯϓτΤϯδχΞϦϯά௒େࣄ • ࣗવݴޠͷ΍ΓͱΓ͔Βͷநग़ Ԡ౴͕֬ఆత͡Όͳ͍ •

    UFNQFSBUVSF ඦൃඦதͷϓϩϯϓτςϯϓϨʔτ ਖ਼نදݱ • ͋·ΓढจʹͳΒͳ͍Α͏ʹʮܦҢʯ΋ه࿥͓ͯ͘͠ • ϋϧγωʔγϣϯରࡦ • 4ZTUFNϩʔϧ΍UFNQFSBUVSFͰ੍ޚ • ηΩϡϦςΟରࡦ • ݸਓ৘ใͷೖྗνΣοΫ΍ϞσϨʔγϣϯ"1*ͷ׆༻ • ֎෦αʔϏε ݕࡧ΍ΧϨϯμʔ ͱͷ࿈ܞ • ΤʔδΣϯτͱͯ͠λεΫͷ࣮ࢪ·Ͱ
  10. ຊ൪༻ͷ--.ΞϓϦέʔγϣϯΛͭ͘Δ --.ͰΫʔϧͳ΋ͷΛ࡞Δͷ͸؆୯͕ͩຊ൪Ϩϕϧͷ΋ͷΛ࡞Δͷ͸ඇৗʹ೉͍͠  ՝୊ͱղܾࡦ  ࣗવݴޠͷ͍͋·͍͞ ܾఆ࿦తͰͳ͍)ʹΑΔ69ෆ੔߹ ˠ UFNQFSBUVSFɺϓϩϯϓτ࠷ద Խɾόʔδϣχϯά؅ཧ

     ίετͱϨΠςϯγʔ ˠਪ࿦ʹ࢖͏ϞσϧબఆɺτʔΫϯ਺ͷௐ੔ɺ ݱঢ়͸ ϨΠςϯ γʔղੳ  ϓϩϯϓςΟϯά ϑΝΠϯνϡʔχϯά ͦΕҎ֎ • ϓϩϯϓτνϡʔχϯάɿ&NCFEEJOHTΛೖΕସ͑Δ 044ͰͷΈՄೳ • ϑΝΠϯνϡʔχϯάɿλεΫʹ࠷దԽͤ͞ΔͨΊͷαϯϓϧ͕ੑೳʹӨڹˠ͕ɺ͋·Γظ଴Ͱ͖ͳ͍ • ৠཹϑΝΠϯνϡʔχϯάɿ5FYUEBWJODJ େ Ͱ--B." খ ͷνϡʔχϯάʹ࢖͏ˠ"MQBDB খ • &NCFEEJOHT ϕΫλʔετΞɿ'FXTIPUT  ޙํޓ׵ੑͱલํޓ׵ੑ • ৽͍͠Ϟσϧ͸શମతʹ༏ΕͯΔ͔΋͠Εͳ͍͕ɺྼ͍ͬͯΔϢʔεέʔε΋͋Δ͸ͣ • લͷϞσϧʹରͯ͠͏·͘ಈ͍͍ͯͨϓϩϯϓτ͕͏·͘ಈ͔ͳ͍৔߹ɺͲΜͳҙਤͰϓϩϯϓτ͕νϡʔ χϯά͞Ε͍ͯΔ͔ ढจ όουϓϥΫςΟε Θ͔Βͳ͘ͳΔ IUUQTIVZFODIJQDPNMMNFOHJOFFSJOHIUNM
  11. ຊ൪༻ͷ--.ΞϓϦέʔγϣϯΛͭ͘Δ  ෳ਺ͷλεΫͰ੍ޚ͞ΕΔϑϩʔߏ੒ΛͲ͏͢Δ͔ɺπʔϧͷ૊ΈࠐΈ • ϓϩάϥϛϯάʹΑΔ੍ޚϑϩʔͷ࣮૷ • --.ΤʔδΣϯτʹΑΔஞ੍࣍ޚ  ༗๬ͳϢʔεέʔε •

    "*Ξγελϯτɿεέδϡʔϧ؅ཧɺϝϞ࡞੒ɺϖΞϓϩɺϝʔϧରԠɺ༧໿ɺങ͍෺ λεΫΛ͜ͳ͢ • νϟοτCPUɿίϯύχΦϯ จࣈ΍Ի੠Ͱ૬ஊ΍ΞΠσΞͳͲͷձ࿩ • ϓϩάϥϛϯά΍ήʔϜɿ8FCΞϓϦΛͭ͘ΔɺηΩϡϦςΟͷڴҖΛൃݟ͢ΔɺήʔϜΛ࡞੒͢Δ • ϥʔχϯάɿຊͷཁ໿ɺߨٛɺཧղ౓ςετɺ࠾఺΍ϑΟʔυόοΫɺσΟϕʔτ૬ख • ࣾ಺σʔλநग़ɿࣗવݴޠ΍2"ܗࣜͰࣾ಺ͷσʔλΛরձ͢Δ • ݕࡧɾਪનɿΩʔϫʔυͰ͸ͳࣗ͘વݴޠ͔Βਪఆ͢Δݕࡧ • Ӧۀޮ཰Ξοϓ • 4&0ରࡦ • ݁࿦  એ఻จ۟Λແࢹͯ͠ϲ݄ޙʹఆணͯ͠Δ͔֬ೝ͢Δ  αϚϦʔΛಡΉ  ࠷৽ͷπʔϧʹ৮ΕΔΑ͏ʹ৺͕͚Δ IUUQTIVZFODIJQDPNMMNFOHJOFFSJOHIUNM
  12. $IBU(15 0QFO"*ࣾ ͷσʔλอޢϙϦγʔͷ֬ೝ  0QFO"*ࣾͷར༻ن໿ͷண໨఺ • ར༻ن໿ IUUQTPQFOBJDPNQPMJDJFTVTBHFQPMJDJFT • ېࢭߦҝʹ͍ͭͯཧղ͢Δɿҧ๏ߦҝɺࣇಐੑతࡡऔʹ͔͔ΔίϯςϯπɺϋϥεϝϯτɺϚ

    ϧ΢ΣΞ࡞੒ɺ܉ࣄฌث։ൃͳͲؚΉةݥߦҝɺܦࡁඃ֐ͷةݥੑͷߴ͍׆ಈͳͲ  0QFO"*ࣾͷݸਓ৘ใอޢํ਑ͷண໨఺ • ݸਓ৘ใอޢํ਑ IUUQTPQFOBJDPNQPMJDJFTQSJWBDZQPMJDZ • ϢʔβʔΞΧ΢ϯτͱͯ͠ऩू͞ΕΔ৘ใ • ࿈བྷઌɺऔҾ৘ใɺϩάΠϯ৘ใͳͲ  0QFO"*ࣾͷ"1*σʔλར༻ϙϦγʔͷண໨఺ • "1*σʔλར༻ϙϦγʔ IUUQTPQFOBJDPNQPMJDJFTBQJEBUBVTBHFQPMJDJFT • ೖྗίϯςϯπʹؔ͢Δར༻ϙϦγʔ • "1*Λհ͓ͯ͠٬༷͔Βೖྗ͞ΕͨσʔλΛɺϞσϧͷ܇࿅΍վྑͷͨΊʹ࢖༻͢Δ͜ͱ͸͋Γ·ͤΜɻ • "1*Λ௨ͯ͡ૹ৴͞Εͨσʔλ͸ɺෆਖ਼࢖༻ɾޡ༻؂ࢹͷ໨తͰ࠷େ೔ؒอ࣋͞Εɺͦͷޙ࡟আ͞Ε· ͢ʢ๏ྩͰఆΊΒΕͨ৔߹Λআ͘ʣɻ • సૹதͷσʔλ҉߸Խɺถࠃ಺σʔληϯλʔͷΈͷར༻ɺ%1"ରԠͳͲ ※これらは情報提供⽬的のみで記載しています。必ず引⽤元をご確認ください。
  13. ࣗࣾ޲͚ͷੜ੒"*ͷར༻ΨΠυϥΠϯ • ੜ੒"*ར༻ΨΠυϥΠϯ αΠμεࣾ • +%-"ͷੜ੒"*ར༻ΨΠυϥΠϯΛςϯϓϨʔ τͱͯ͠࡞੒ɾެ։ࡁΈʲެ։ʳ • ཁ఺ 

    ͓٬༷ͷݸਓ৘ใΛੜ੒"*ʹೖྗ͠ͳ͍  '"2σʔλͳͲݸਓ৘ใҎ֎ͷൿີ৘ใ͸͓ ٬༷͝ͱʹڐՄΛͱ্ͬͨͰར༻͢Δ • ࣮༻্ͷΨʔυϨʔϧߏங • $IBU(15΁ͷݸਓ৘ใɺൿີ৘ใͷೖྗېࢭ • 0QFO"* "1*Λ༻͍ͨΫϩʔϯ͓Αͼνϟοτ CPUΛެ։͠ར༻ਪ঑ɺೖྗνΣοΫɺϞσ Ϩʔγϣϯ"1*ʹΑΔνΣοΫΛඞਢͱ͢Δ • ʮ"*͕ੜ੒ͨ͠෺Ͱ͋Δ͜ͱʯٴͼɺʮੜ੒ ෺ͷ಺༰ʹڏِؚ͕·Ε͍ͯΔՄೳੑ͕͋Δ͜ ͱʯΛϢʔβʔʹදࣔ͢Δ
  14. Ԡ༻ʹΉ͚ͯɿϢʔβʔମݧ ˙Α͍ମݧͷ࠷େԽ ü ྑ͍ࣄྫɿ,JOEMFΛىಈͨ͠Βߪಡͯ͠Δ΋ͷͷ৽ץ͕Ҋ಺͞ΕͨΓɺອըΛങͬͨΒࣅͨͪΐ͏Ͳཉ͠ ͍ͱࢥ͑Δॻ੶͕Ϩίϝϯυ͞ΕΔ ü ѱ͍ࣄྫɿ5XJUUFS΍ϝσΟΞͷόφʔʗλʔήοτ޿ࠂ ଐੑऔͬͯΔͷʹΰϛ͹͔Γԡ͚ͭͯ͘͠Δ ˙ྑ͍ମݧͷ࠷େԽ͚ͩͰ͸ͳ͍ FYۈଵγεςϜͰ"*Λ׆༻͢Δ৔߹

    ❌ମݧͷ࠷େԽɿεϚϗͰλοϓ͔ͭඵͰଧࠁͰ͖Δ͜ͱ ⭕ମݧͷಁ໌Խɿଧࠁ͕Ϣʔβʔͷओۀ຿Ͱ͸ͳ͍ɻΦϑΟεʹண͍ͨΓՈͰ1$։͚ͨΒଧࠁ͞ΕΔ͜ͱ ˙छྨͷϢʔβʔମݧ ௧ΈΛղܾ͢ΔϢʔεέʔε ྑ͍ମݧΛ࠷େԽ͢ΔϢʔεέʔε ମݧΛಁ໌Խ͢ΔϢʔεέʔε