17.1K Views
July 07, 23
スライド概要
2023年7月5日の Techfeed Experts Night にてお話させていただいた「LangChain」と「VectorStore」に関するネタです。
15分のLTだったので詳しいプログラムコードは無いですが調べるきっかけくらいにはなるかと思います。
LangChain と VectorStore で作る かんたん⾃社チャット アステリア 株式会社 エバンジェリスト 森 ⼀弥 2023年7⽉5⽇ © 2023 Asteria Corporation
⾃⼰紹介 アステリア株式会社 エバンジェリスト 森 ⼀弥 ■ 講演・TV・雑誌取材(AI関連のみ抜粋) ITmedia:「ChatGPT」は業務をどう変えるのか? インプレス:今話題のAI「ChatGPT」とは何か? ⼈の仕事は奪われるのか? PC-Webzine:ChatGPTは何者か・ChatGPT の基礎解説と⽤途の可能性 Apps Japan:先端技術でリードする!ChatGPT による社内データの活⽤連携 TECHFEED 公認エキスパート 企画・原作 © 2023 Asteria Corporation 2
アステリアとは n 1998年創業、企業向けソフトウェア製品を開発・販売 n ⽇本のソフトウェアメーカー n 「ノーコード」や「つなぐ」をキーワードとした製品を展開 ノーコード データ連携基盤 コンテンツ管理 プラットフォーム モバイルアプリ 作成ツール エッジコンピューティング IoTプラットフォーム © 2023 Asteria Corporation 3
アステリアARTとは n アステリア Artificial Recognition Technology 合同会社 u略称:アステリアART uアステリア株式会社の⼦会社として2019年4⽉に設⽴ u代表は早稲⽥⼤学にて講師も務める情報科学博⼠、園⽥智也⽒ u⾳声認識などAI企業「ウタゴエ」の創業社⻑も 勤める u現在は AI + Robotics 研究開発を⾏っている © 2023 Asteria Corporation 4
AI関連で最近よく聞く話 話題のAI活⽤を うちの会社でも ⾃社のデータをふまえた 回答をしてくれるボット など、AI活⽤をしたい ⾃社データを 出すのは不安 セキュリティの観点から、 ⾃社データを丸ごとOpenAI 等に送るのはNG リソースは あまりない 効果測定できていない 現時点では予算も⼈員も あまりない 担当者1⼈でもできそうなレベル感で試してみます © 2023 Asteria Corporation 5
作りたいもののイメージ 社内 社外 それっぽい回答 新しく購⼊したPCでの、 プリンターの接続⽅法を 教えてほしい 質問者 索 検 を 報 情 • 社内にはネットワーク 連 関 プリンタがあります • プリンタのIPアドレス は192.168.0.123です • プリンタのドライバは 社内のネット 社内の https://192.168.0.10/prin データベース ter-driver にあります プロンプト あなたは社内業務に関する オペレーターです。以下の関連 情報を踏まえた上で、質問に回 答してください。 ### 関連情報 ### ChatGPT ### 質問内容 ### © 2023 Asteria Corporation 6
必要な技術 Vector Store [0.123,0.456,・・・] [0.123,0.456,・・・] [0.123,0.456,・・・] Embedding Document Loader Text Splitter こんにちは [0.123,0.456,・・・] n ベクトル情報を保存す るDBの⼀種 n 「似ているもの」を 探すことが得意 n ECストアの 「おすすめ商品」 などでも使われる n ⽂字や単語、⽂書など のテキストデータを ベクトル情報に変換 する⼿法 n OpenAIのEmbedding APIでは 1536 次元の データに変換 n PDFやWord、Excelな どから⽂字情報を取得 するDocument Loader n ⽂字情報を任意の区切 り⽂字や⽂字数で分割 するText Splitter © 2023 Asteria Corporation 7
Vector Store いろいろ オープンソースやクラウドサービスなど様々 Chroma Faiss ※ ⼤規模⾔語モデルをあつかうフレームワーク「LangChain」の Python版、JS版の両⽅で使えそうなものをピックアップ © 2023 Asteria Corporation 8
🦜🔗 LangChain とは n OpenAI を始めとして複数の n n n 出典:https://blog.langchain.dev/ ⼤規模⾔語モデルを扱う フレームワーク Python版とJS版がある モデルの利⽤、プロンプト テンプレートの利⽤などの 基本機能は各モデル共通 外部ツールの連携やデータの 活⽤なども簡単に © 2023 Asteria Corporation 9
LangChain で出来ることの例 ① n いろんなモデルを使う OpenAI from langchain.llms import OpenAI llm = OpenAI(model_name="gpt-3.5-turbo") print(llm("質問内容・・・")) Hugging Face の公開モデルの利⽤ from langchain import HuggingFaceHub repo_id = "google/flan-t5-xl" llm = HuggingFaceHub(repo_id=repo_id) print(llm("質問内容・・・")) ローカルにダウンロードしたモデルの利⽤ from langchain.llms import HuggingFacePipeline from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline model_id = "gpt2" tokenizer = AutoTokenizer.from_pretrained(model_id) model = AutoModelForCausalLM.from_pretrained(model_id) pipe = pipeline( "text-generation", model=model, tokenizer=tokenizer, max_new_tokens=64 ) llm = HuggingFacePipeline(pipeline=pipe) print(llm("質問内容・・・")) 処理能⼒や結果は現時点では今ひとつかもしれないが、 ダウンロードしたモデルも含め同じように使える © 2023 Asteria Corporation 10
Hugging Face とは n 様々なAI公開モデルなどの 共有プラットフォーム n ⽇本語が取り扱える ⼤規模⾔語モデル、Embedding モデルもいくつかある n LangChain から 利⽤可能 uPython 版は⼿元に取得して利⽤可 能 uJavaScript 版はリモート利⽤のみ © 2023 Asteria Corporation 11
LangChain で出来ることの例 ② n プロンプト書かなくても、よくあるものは "Chain"として ⽤意してくれている 関連ドキュメントをふまえたQA from langchain.chains.question_answering import load_qa_chain chain = load_qa_chain(OpenAI(), chain_type="stuff") chain(input_documents=docs, question=query) print(chain.run()) ドキュメントの要約 from langchain.chains.summarize import load_summarize_chain chain = load_summarize_chain(OpenAI(), chain_type="stuff") print(chain.run(docs)) まずは⽤意されたもので簡単に実⾏ © 2023 Asteria Corporation 12
環境の選択 AIモデル Vector Store n 回答の⽣成は OpenAI の API n Embedding は OpenAI の API を 使って全データを API に渡すの は抵抗がある n ベクトル化されているので外部 サービスでも良い? n 最終的には社内で持ちたい? n ⼿元で動かせる Embedding の モデルで試してみる n クラウド&オンプレ両対応の VectorStore を検証してみる Hugging Face © 2023 Asteria Corporation 13
とは n MySQLの派⽣データベース n SQLは普通に通る n ポートは⾒覚えある3306 n オンプレ版の最⼩構成は無料 n クラウドは600ドル分のトライアル n 付きでとりあえず試せそう ⽇本語の情報はあまりなく、 LangChainで使っている⼈は ⾒つけられず とりあえずクラウド版でやってみました © 2023 Asteria Corporation 14
やってみた感想 ⼿順の詳細説明時間は無さそうなので・・・ 🦜🔗 LangChain n ⽤意された機能で OpenAIの呼び出しも 簡単 n VectorStoreの構造は 理解する必要なし n さらに便利機能が いろいろあり Hugging Face n ローカルモデルを 使えるのはGood n OpenAI と⽐べると 仕⽅ないのかも? 標準のEmbedding モデルは今ひとつ n 別のモデルも試して みたい n クラウド版はAWS, GCP, Azure から選ぶ n ⽇本Regionは無い n DB構築までUIでOK n オンプレ版でも MySQLのツールが 使えそう © 2023 Asteria Corporation 15