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

RAGを使ったTeamsチャットボット開発:Azureを使って安全に社内問い合わせ対応ボット構築

北爪聖也
December 20, 2023
970

 RAGを使ったTeamsチャットボット開発:Azureを使って安全に社内問い合わせ対応ボット構築

元々は広告の営業マンでしたが、非効率な作業に嫌気がさし、27歳からプログラミングを勉強し、技術の会社を立ち上げました。

非効率な業務をテクノロジーで効率化することに命を燃やします。

LLM Tokyoというコミュニティを運営しています。勉強会を開催しているのでご興味ある方はこちらからどうぞ!
https://chatgptllm.connpass.com/

X(Twitter)はこちら。
https://twitter.com/Seiyan1

技術ブログはこちら。
https://zenn.dev/seiyakitazume

会社HPはこちら。
https://pipon.co.jp/

ご相談はこちらへ。
https://forms.gle/2Kj8EFQwZkPXHXxe9

システム開発・データ解析・RPA・効率化などについて発信していきます。

北爪聖也

December 20, 2023
Tweet

Transcript

  1. 会社名:株式会社 pipon 所在地:東京都中央区銀座 1-12-4N&E BLD.7階 代表取締役 北爪聖也(きたづめせいや) 自社サービス: ヘルスケアアプリの運営 会社経緯

    2019年9月 株式会社piponを創業。 2020年4月 人工知能学会全国大会「単品定期通信販 売における次回購入予測モデルの検証について 」採 択 2020年7月 代表北爪の共著書籍『データ分析の進め 方及びAI・機械学習導入の指南』発売 2021年3月 バイエル薬品様 G4A Tokyo Dealmaker 2020に採択 2023年1月 ヘルスケアアプリ「ドクターボイス」リリー ス YouTubeアカウント データサイエンスや ChatGPTを発信 https://www.doctor-voice.com/ 株式会社piponについて https://www.youtube.com/channel/UCiTy5n gKrKHvDldg9e6YcMw Mission:テクノロジーで世の中を効率化する
  2. サービス紹介 高度な非言語データ解析や自然言語解析(ChatGPT活用等)を強みにした 売上向上の仕組み、業務効率化システム開発をご提供しております。 対応可能な課題と技術領域 ⇒高度な技術をもとに 幅広い分析、開発が可能 マーケティング 業務効率化 言語データ (ChatGPT)

    貴社保有 非言語データ piponで対応可能な 領域 実績がある業界やテーマ 業界 テーマ 小売製造業 研究開発促進システム開発 コンサルティング 社内業務効率化システム開発 BPR 需要予測 製薬 マーケティング効果改善 自動車 データを用いた新規事業の PoC
  3. 自然言語処理(NLP)とは? 自然言語処理(NLP)とは、人間が日常的に使用する言語をコンピュータで分析する技 術です。 自然言語処理(NLP)に必要なステップ STEP01 形態素解析・ 分かち書き 今日 / は

    / 塾 / に / 行っ / て / 、 / 数学 / を / 勉強 / し / た / 。 STEP02 ベクトル化 [0.02, 0.3, 0.5, 0.09, …] [0.4, 0.02, 0.65, 0.19, …] [0.6, 0.55, 0.2, 0.4, …] STEP03 機械学習
  4. ベクトル化 ー CountVectorizer ー CountVectrizerは、文章を単語毎の出現回数の表現に変換する手法です。 文章 0 : Apple computer

    of the apple mark 文章 1 : linux computer 文章 2 : windows computer CountVectorizerの例 ベクトル化 単語毎の頻度を数値ベクトルへ変換 し分散表現を得るという非常に単純 な手法ですが、良い点は、文章の情 報を出来るだけ落とさずに表現する ことが可能な点です。 参考:機械学習 〜 テキスト特徴量(CountVectorizer, TfidfVectorizer) 〜 (https://qiita.com/fujin/items/b1a7152c2ec2b4963160)
  5. ベクトル化 ー TF-IDF ー TF-IDFとは、TF(Term Frequency、単語の出現頻度)とidf(Inverse Document Frequency、逆文書頻度)という指標によって各単語を重み付けする手法です。 文章 0

    : 私はオレンジとリンゴではリンゴが好きだ。 文章 1 : 私は以前は青森に住んでいたが、今は東京都に住んでいる。 文章 2 : 私は青森産のリンゴが好きだ。 TF-IDFの例 「私」は全文書に頻出する単語である一方、「オレンジ」は全ての文書の中で出現 頻度が少ないです。 頻出する単語と、出現頻度が少ない単語を重み付けして数値化すると下記のよ うになります。
  6. ベクトル化 ー BERT ー BERT(Bidirectional Encoder Representations from Transformers)は、2018年10月 にGoogleのJacob

    Devlinらの論文で発表された自然言語処理(NLP)のための技術で す。単語や文の表現を生成する際に前後の文脈を考慮するため、これ以前のNLPモデ ルよりも高度な意味理解を実現します。 BERTは左記のように多くの層があり、最終層の 1つ前の層を取得する ことでEmbeddingとして取り扱うことができます。 参考:学習済みのBERTからEmbeddingを取得する (https://www.nogawanogawa.com/entry/bert_embedding)
  7. Embedding API(OpenAI) OpenAIが提供している文章をベクトル化するAPI ベクトル化されたクエリと文章間の距離をCOS類似度等を用いることで計算可能 MODEL NAME TOKENIZER MAX INPUT TOKENS

    OUTPUT DIMENSIONS Usage text-embedding-ada-002 cl100k_base 8191 1536 $0.0001 / 1K tokens Second-generation models ※ ほぼすべてのユースケースで text-embedding-ada-002 を使用することが推奨されている
  8. ベクトル化 分かち書きされたデータを数値ベクトルに変換する方法は様々な方法があります。 代表的なベクトル化の手法(sparse:疎ベクトル/dense:密ベクトル) 1. CountVectorizer(sparse) 文章を単語毎の出現回数の表現に変換する手法 2. Term Frequency -

    Inverse Document Frequency(TF-IDF)(sparse) 文書中の単語の重要度を評価する手法 3. Word2Vec(dense) 文章を解析し、各単語を200次元などの数値ベクトル表現に変換する手法 4. Bidirectional Encoder Representations from Transformers(BERT)(dense) 文脈や文章構造を考慮した手法 5. text-embedding-ada-002(dense) OpenAIが提供しているEmbeddingモデル
  9. 疎ベクトルと密ベクトルの違い • 疎ベクトル ◦ ベクトル要素の多くがゼロとなり、ベクトル次元が相対的に高いもの ◦ 例えば「準備」の語彙が i番目の要素に、「用意」の語彙が j番目の要素に、別々で取り扱われるた め、類義語のような意図を加味する能力に劣る

    ◦ 学習される文章中の語彙の統計情報を利用するシンプルな方法なため、ライブラリやモデルの違 いが検索精度の違いにそれほど寄与しない • 密ベクトル ◦ ベクトル要素の多くが非ゼロとなり、ベクトル次元が相対的に低いもの ◦ 例えば「準備」と「用意」の語彙を含む概念が i番目の要素で取り扱われるため、類義語のような意 図を加味する能力に長ける ◦ 意図を加味する能力は、同様の概念をいかにまとめるかというベクトル化モデルの良し悪しに大き く依存するため、ライブラリやモデルの違いが検索精度の違いに大きく寄与する
  10. ベクトル検索の利点 Breast cancer is related with gene mutation キーワード検索 検索した文章の意味を捉え

    ずに、Breast Cancerや mutationという言葉をベース に検索した論文が出てきま す。 ベクトル検索 Breast Cancerの病態と mutaionに関連する遺伝子 情報が記載された論文が出 てきます。
  11. RAG(Retrieval Augmented Gneration)とは • 文書をベクトル化してVector Storeに保存しておき、入力に関係しそうな文書を検 索してプロンプトに含めて、その内容を踏まえてLLMに回答させます 文書 社内文書 診療報酬明細

    etc… 入力・質問 (プロンプト) 以下の文脈を利用して、質問の意図通 りに回答してください。答えがわからな い場合は答えを作ろうとせず わからないと答えてください。 {context} 質問:{question} 回答: ※大嶋さん(@oshima_123)の資料参考
  12. HyDE(Hypothetical Document Embeddings) • HyDEでは、入力を直接ベクトル化するのではなく、LLMに仮説的に回答を作らせ て、その回答をベクトル化して検索に使います 文書 社内文書 診療報酬明細 etc…

    入力・質問 (プロンプト) LLM 仮説的な回答を生成 以下の文脈を利用して、質問の意図通 りに回答してください。答えがわからな い場合は答えを作ろうとせず わからないと答えてください。 {context} 質問:{question} 回答: ※大嶋さん(@oshima_123)の資料参考
  13. Code InterpreterとOpen Interpreterの比較 Open Interpreter Code Interpreter 動作環境 ローカル環境で動作可能 ChatGPTの画面上

    使用可能なパッケージ ライブラリが使用可能 事前にインストールされたもののみ 実行時間とファイルサイズ 制限なし 実行時間とサイズに制限あり セキュリティ ユーザー確認が必要 ユーザー確認のプロセスが異なる 料金 無料(オープンソース)+OpenAI API使 用料金 月額20ドル(有料プラン) 多様なプログラミング言語に対応 Python、JavaScriptなど Pythonのみ bash、shell 動かせる 動かせない