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

LLMを使ったサービス開発必須ライブリ 「LangChain」の基礎

LLMを使ったサービス開発必須ライブリ 「LangChain」の基礎

機械学習の社会実装勉強会第26回 (https://machine-learning-workshop.connpass.com/event/292961/) の発表資料です。

More Decks by 西岡 賢一郎 (Kenichiro Nishioka)

Transcript

  1. 自己紹介 • 名前: 西岡 賢一郎 ◦ Twitter: @ken_nishi ◦ note:

    西岡賢一郎@研究者から経営者へ (https://note.com/kenichiro) ◦ YouTube: 【経営xデータサイエンスx開発】西岡 賢一郎のチャンネル (https://www.youtube.com/channel/UCpiskjqLv1AJg64jFCQIyBg) • 経歴 ◦ 東京大学で位置予測アルゴリズムを研究し博士 (学術) を取得 ◦ 東京大学の博士課程在学中にデータサイエンスをもとにしたサービスを提供する株式会社ト ライディアを設立 ◦ トライディアを別のIT会社に売却し、CTOとして3年半務め、2021年10月末にCTOを退職 ◦ CDPのスタートアップ (Sr. PdM)・株式会社データインフォームド (CEO)・株式会社ディース タッツ (CTO) ◦ 自社および他社のプロダクト開発チーム・データサイエンスチームの立ち上げ経験
  2. LLMを取り巻く環境の変化 • ChatGPTを始めとしてLLMが革新的イノベーションを起こし始めている • Hugging Faceで利用可能な学習済みモデルが多数利用可能に ◦ LINE 36億パラメータの日本語言語モデル https://huggingface.co/line-corporation/japanese-large-lm-3.6b

    ◦ 松尾研 100億パラメータサイズ・日英2ヶ国語対応の大規模言語モデル“Weblab-10B” https://huggingface.co/matsuo-lab/weblab-10b • LLMをサービスに組み込む事例も出てきている 1から学習 学習済みモデルを利用
  3. LLMを社会実装するときの課題 • Prompt Engineering: LLMが適切な答えを返してくれるPromptを考えるのが難しい。LLMのレス ポンスを利用してPromptを作る場合もある。 • 誤った情報の生成: LLMは確率的に言葉を生成しているため、文章の正確さを保証しているわけ ではない。これにより、検索用途としての使用が難しい。

    • LLMの限界: 複雑な数式を解いたり、最新のデータを利用するなど、LLMが使用した学習 データに含まれない情報が必要な課題は、LLM単体では解決できない。 • Token数の制限: 長い文章を処理することができない。
  4. LangChainとは • 言語モデルを利用するアプリケーションのためのフレームワーク ◦ LangChainはLLMとチャットモデルをまとめて言語モデルとしている ◦ 今回は、LLMに関して紹介 • まず知っておきたいLangChain利点 ◦

    テキストデータ以外の色々なデータソースを扱いやすくする ◦ LLMが苦手な作業を他のシステムと連携できるようにする ◦ 長文の取り扱いを可能にする • 他にもTemplate, Text Embedding, Cachingなど様々な便利機能を備える
  5. LangChainの6つのモジュール • 大きく分けて6つのモジュールがある ◦ Model I/O: 任意の言語モデル (ChatGPTなど) とインターフェースをとるための基本的な構 築ブロックを提供

    ◦ Retrieval (Data connection): LLMにユーザ独自のデータを使えるようにする ◦ Chains: LLM同士または他のコンポーネントとLLMを連結するためのインターフェイス ◦ Agents: ユーザの問い合わせを解くための手段とその順番を LLM を使って自動的に決定して くれるような機能 ◦ Memory: 過去のやりとりに関する情報を保存する機能 ◦ Callbacks: LLMアプリケーションのイベントをフックさせる機能 • 6つの中でまずはLangChainを知る上で抑えておきたいModel I/OとChainと Agentを紹介
  6. Model I/O • 主な機能 ◦ Prompt: 言語モデルの入力のテンプレート化や管理をする ◦ 言語モデル: 「テキスト文字列を入力とし、テキスト文字列を返すLLM」と「チャットメッ

    セージのリストを受け取りチャットメージを返すChatModel」の二種類 ◦ アウトプットパーサー: 言語モデルからの出力から情報を抽出 • 少量のコードの修正で言語モデルの切り替えをできる
  7. Agent • LangChainの便利さを代表する機能の一つ • 次にどんなアクションを取るかをLLMに決め てもらい実行する • 実際にやっていること ◦ 「各ツールができること」と「質問」

    をレスポンスのフォーマットを指定し てLLMに投げる。 ◦ 指定したフォーマットで帰ってきたレ スポンスをパースして、次のアクショ ンを決める。
  8. デモ • LangChainの基本的な挙動 ◦ Model ◦ Chain ◦ Agent •

    https://github.com/knishioka/machine-learning-workshop/tree/main/l angchain