Slide 1

Slide 1 text

ChatGPT/OpenAI問わず 生成AI関連サービス構築方法・応用例を紹介する 2023年07月28日 大原陽宣

Slide 2

Slide 2 text

Who am i 2 名前:大原 陽宣(Hironobu Ohara) ロール:Public Cloud Customer Reliability Engineer(CRE) ※ Amazon Web Services、Alibaba Cloud、Google Cloud、Azureなどの技術検証や、 お客さまからのCloud上での疑問点をなくす取り組みをしています 技術領域:データベース、データ分析、ストリーミング、Kubernetes、IaC、サーバレス、 機械学習(異常検知、 In-Database Analytics、検索技術系) Apache HBaseやHive、Impala、IcebergなどのASFやTrinoDB、ClickHouseなどの OSSに貢献したり、最近は育児の合間にCNCF Landscapeのデータベース開発を手伝っています 最近の実績:ソフトバンクグループ企業間での生成AIコンテスト1回目で2位

Slide 3

Slide 3 text

3 https://www.youtube.com/watch?v=k7BZXDwwP10 ソフトバンクグループ株式会社 第43回定時株主総会 アーカイブ動画(2023年6月21日開催)

Slide 4

Slide 4 text

本日の講演の内容 4 ⚫ 生成AIサービス構築方法・応用例 ⚫ 生成AIが実現するサービスや可能性 話さないこと ⚫ ChatGPT等プロンプトエンジニアリング ⚫ 生成AIモデル、Transformer、生成AIを支える技術 ⚫ Microsoft Azure OpenAIを使ったサービス構築ノウハウ ⚫ ソフトバンクグループ企業間での生成AIコンテストで2位(実質1位)を取った内容 (こっちのほうが技術アーキテクチャ的に価値がありますが、箝口令中です、ごめんなさい)

Slide 5

Slide 5 text

著者はLLMが話題になる前に、独自検索基盤を設計・構築していた 5 セマンティック検索と質疑応答検索による、 パブリッククラウドのテクニカルサポート用検索サービス LangChainやLlamaIndexは使ってなく、全て内製開発 (開発時このOSSはまだ登場してなかった) OpenAIやLLMは一切使わず、教師あり機械学習で検索 (Google検索やChatGPT4.0はテクニカルサポート業務として 事実と異なる回答が多く含まれているため、使用は限定的) https://www.softbank.jp/biz/blog/cloud- technology/articles/202212/next-generations-search-engine/

Slide 6

Slide 6 text

検索技術説明用にドラゴンボールのwikiデータを使って検索します 6 文字数:391万数(日本語、英語全ページ) 文章数:307万文(テーブルデータは除く) 皆、ドラゴンボール大好きです☺私もです。 ※wikipediaライブラリより https://pypi.org/project/wikipedia/

Slide 7

Slide 7 text

やりたいこと:ドラゴンボールのあれこれを質問し、回答情報がほしい 7 “孫悟空” “孫悟空の妻は誰ですか?” “ドラゴンボールZでフリーザを倒したのは誰ですか?” “ドラゴンボールZのセル編の概要を教えてください。” “タイムマシン” “スーパーサイヤ人” “ドラゴンボールにおけるパワーレベルと変身の関係は?” “ドラゴンボールでクリリンを殺したのは誰ですか?” “ドラゴンボールの生みの親は誰ですか?” “孫悟空の両親は誰ですか?” “孫悟空の息子の名前は?” “ドラゴンボールはどういう意味ですか?” さあ、あなたはこれ全部答えられるかな?

Slide 8

Slide 8 text

やりたいこと:ドラゴンボールのあれこれを質問し、回答情報が欲しい 8 全文検索 (Full Text Search) セマンティック検索 (Semantic Search) 質疑応答検索 (Open Domain Question Answering) ニューラル検索 (Neural Search) “孫悟空” “孫悟空の妻は誰ですか?” “ドラゴンボールZでフリーザを倒したのは誰ですか?” “ドラゴンボールZのセル編の概要を教えてください。” “タイムマシン” “スーパーサイヤ人” “ドラゴンボールにおけるパワーレベルと変身の関係は?” “ドラゴンボールでクリリンを殺したのは誰ですか?” “ドラゴンボールの生みの親は誰ですか?” “孫悟空の両親は誰ですか?” “孫悟空の息子の名前は?” “ドラゴンボールはどういう意味ですか?”

Slide 9

Slide 9 text

ドラゴンボールのWikiから検索サービスを作った 9 DEMO

Slide 10

Slide 10 text

全文検索:Full Text Search 10 検索基盤 ②質問・クエリ ⑤回答返却 ③単語やフレーズ検索 ④該当文 返却 ①インデックス作成、 ステミング、トークン化 全文検索の流れ: 1. テキスト文全体の各単語にインデックスを割り当て 2. ステミング(動詞の基本形変換)しながらテキストを 意味ある単位(単語・フレーズ)に分割しトークン化 3. 質問キーワードに基づき、インデックスを使って検索 特徴:  インデックスを使用するため、大量のデータでも非常に高速で検索 ※インデックスは本の索引みたいなもの  大量のデータに対しても効率的に処理するため、スケーリングしやすい  検索クエリと文書中の単語が文字列としてどれだけ一致しているかに 大きく依存するため、微妙な違いや意味的な関連性は検知されにくい 質問(クエリ)と回答例:  “孫悟空” ⇒ …尻尾の生えた少年・孫悟空はある日、西の都…  “スーパーサイヤ人” ⇒ …変身した姿。「スーパーサイヤ人」とも表記…  “タイムマシン” ⇒ …ブルマの作ったタイムマシンで悟空たちの住む過去…

Slide 11

Slide 11 text

参考:ベクトル化アプローチについて 11 テキスト 前処理 (ストップワードの排除、 BM25/TF-IDFなど) ベクトル テニスをする予定です。 明日は大雨です。 家でゲームします。 テニス/する/予定/です 明日/は/大雨/です 家/で/ゲーム/します 0.3/1.4/0.2/0.4・・ 0.9/0.4/1.4/0.4・・ 0.1/0.2/0.7/1.3・・ Embedding、 Model適用 ベクトル化 ベクトル化=テキスト文ら計算不可能な非構造体データを計算可能な構造体データに変換 ※ベクトル化は英語でEmbeddingと呼ばれ、次元数はモデルの入力/出力層に依存

Slide 12

Slide 12 text

次元数の大きいベクトルデータの検索を支えるHNSWアルゴリズム 12 https://www.slideshare.net/SeaseLtd/apachecon-22- neural-search-comes-to-apache-solrpptx  HNSWアルゴリズムはANN(近似最近傍探索)において かなり効率的なアルゴリズム  データサイズ・セットが大きくなってもスケールできるよう設計されて いるので、大規模データセットに強い  距離関数さえ定義できれば、テキストだけでなく画像、動画、 音声、などにも検索対応  Mパラメータ(ゼロ層とゼロ層以上の近傍層の最大数)と efパラメータ(近似最近傍のダイナミックリストのサイズ)などの パラメータを調整することで、精度とスピードのコントロールが可能  FAISSやQdrantなどにもある(ベクトルデータベースとして、もし HNSWが含まれてないものは極力避けた方がいい)

Slide 13

Slide 13 text

ベクトルデータを使った検索の基本 13 RetrieverとReaderの組み合わせで検索を実現 Retriever: 大量のデータセットの中から、ユーザの質問に関連性のある情報を探し出す Reader: Retrieverが抽出した候補となる情報から、具体的な回答を抽出、回答を作成 ①質問・クエリ ⑥回答返却 ③関連のある データ抽出 ④関連文書返却 ②検索クエリ ⑤関連文書 ⑥質問文と関連文書 ⑦回答箇所 Retriever 検索基盤 Reader A B

Slide 14

Slide 14 text

セマンティック検索:Semantic search 14 Retriever 検索基盤 ②質問・クエリ ⑨回答返却 ④cos類似度で 関連文抽出 ⑤関連文 返却 Reader ③検索クエリ ⑥関連文 ⑦質問文と 関連文 ⑧より近い答えを 抽出しながら回答 ①ベクトル化 セマンティック検索の流れ: 1. データセット内の全てのテキスト文をベクトルデータに変換 2. ユーザからの質問文もベクトル化し、データセット内のテキスト文と比 較可能な形に揃える 3. コサイン類似度(cos)で質問文と関連性のあるテキスト文を データセットから検索・取得 特徴:  キーワードを使わなくても意味的な関連情報を見つけられる  ベクトル化には自然言語処理(NLP)アプローチを使用  精度は高いが、抽象的な概念や曖昧さを含む質問に対しては、 不明瞭な結果が生じる場合がある(例:孫悟空≠カカロット) 質問(クエリ)と回答例:  ““孫悟空の妻は誰ですか?” ⇒ “妻のチチ”  “ドラゴンボールの生みの親は誰ですか?” ⇒ “ドラゴンボールは、鳥山明による日本の漫画作品”  “孫悟空の息子の名前は?” ⇒ ”息子の孫悟飯”

Slide 15

Slide 15 text

ニューラル検索:Neural Search 15 Retriever 検索基盤 ②質問・クエリ ⑨回答返却 ④類似度で 関連文抽出 ⑤関連文 返却 Reader ③検索クエリ ⑥関連文 ⑦質問文と 関連文 ⑧関連性の高い 答えを抽出 しながら回答 ①高次元 ベクトル化 ニューラル検索の流れ: 1. Transformerモデル(BERTやGPTなど)を使用しながら、データ セット内の全てのテキスト文を高次元ベクトルデータに変換 2. ユーザ質問文も同様ベクトル化し、データセット内のテキスト文と比較 可能な形に揃えてから、関連性のあるテキスト文を検索 (Retriever) 3. 関連性の高い情報から、具体的な回答を生成(Reader) 特徴:  セマンティック検索の上位版であり、ユーザの質問に対する具体的な 回答を生成可能  キーワードではなく、クエリと文書の意味的な関連性を考慮  データを表現するためにニューラルネットワーク(深層学習)を使用し ながら、それらの表現間の類似性(または距離)を計算するため、 モデル学習には大量の訓練データが必要で計算負荷が高い 質問(クエリ)と回答例:  “ドラゴンボールZのセル編の概要を教えてください。” ⇒最強の戦士の遺伝子からDr.ゲロによって作られた人工生命体セルとの孫空とその仲間たちの戦いを中心に展開する。セル は完璧な姿になり地球を破壊することを目指し、数々の戦いと悟飯のスーパーサイヤ人2への変身を引き起こす。  “ドラゴンボールにおけるパワーレベルと変身の関係は?” ⇒ドラゴンボールでは、変身はしばしばパワーレベルの大幅な上昇を表す。例えば、サイヤ人がスーパーサイヤ人に変身すると、 そのパワーレベルは倍増する。しかし、変身にはより大きなエネルギーコントロールが必要で、長時間使用すると体に負担がかかる。  “ドラゴンボールはどういう意味ですか?” ⇒ドラゴンボールは、すべて集めると神龍が現れて任意の願いを一つだけ叶えてくれるという、シリーズの中心的なアイテム。

Slide 16

Slide 16 text

質疑応答検索:Open Domain Question Answering 16 Retriever 検索基盤 ①質問・クエリ ⑧回答返却 ③関連のある 文を抽出 ④関連文 返却 Reader ②検索クエリ ⑤関連文 ⑥質問文と 関連文 ⑦質問に対する 具体的な回答を 抽出 質疑応答検索の流れ:  ユーザからの自然言語の質問・クエリを受け取る  Retriever(情報検索)が質問に関連する情報を検索 ※検索アプローチはセマンティック検索と同じくベクトル検索  Reader(回答の抽出)がRetrieverが見つけた関連文から 具体的な答えを抽出 特徴:  広範囲のトピックや大量のデータ量に対する質問に回答が可能  回答内容は1つの具体的な情報(エンティティや事実)ベースで あり、その情報には情報源らエビデンスを付け加えやすい  ニューラル検索との違いについては、ニューラル検索は関連性のある 情報を提供、ODQAは質問に対する具体的な答えを提供 質問(クエリ)と回答例:  “ドラゴンボールZでフリーザを倒したのは誰ですか?” ⇒ 悟空  “ドラゴンボールの原作でクリリンを殺したのは誰ですか?” ⇒ タンバリン  “孫悟空の両親は誰ですか?” ⇒ 下級戦士バーダックとギネ ※セマンティック検索は文中から直接的な文を引用し抽出に対し、 質疑応答検索は文中から関連文を詮索し回答を抽出

Slide 17

Slide 17 text

検索基盤を活用した横展開の事例 17 パブリッククラウドサービスのよくある質問集の自動作成 • 質疑応答検索技術を中心とする構成 • テキストの主要なテーマを識別するトピックモデリング • 類似する問題を解決する情報をまとめるクラスタリング • 抽出した情報を自然な文章へ変換する自然言語生成 • OpenAIなどLLMベースでは構築不可 (仮に作れたとしても、嘘・ハルシネーションはどうするんだ?という話) • 最新プロダクトサービスや最新情報に即応

Slide 18

Slide 18 text

検索基盤を活用した横展開の事例 18 • 質疑応答検索技術を中心とする構成 • 質疑応答検索はDense Passage Retrievalベース、すな わち操作手法を主回答タスクにすることで、操作ユーザ観点 での回答と提供 • Generative Pseudo Labeling • テキストの主要なテーマを識別するトピックモデリング • 抽出した情報を自然な文章へ変換する自然言語生成 • OpenAIなどLLMベースでは構築不可 (仮に作れたとしても、嘘・ハルシネーションはどうするんだ?という話) • 最新プロダクトサービスに対応 • コンソール自動操作は独自技術(特許) パブリッククラウドサービスの自動検証、 およびHands-on training記事の自動出力

Slide 19

Slide 19 text

19 そしてGPT3やChatGPT、LLM登場

Slide 20

Slide 20 text

LLMを使った独自サービス開発・展開のトレンドは激増 20 生成AIの登場によりステージは急変 特に生成AIによる検索サービスが頻出

Slide 21

Slide 21 text

「推論」の高度化により、「機械」が「人」を超える時代 21 ルールベース 教師あり/なし機械学習 生成AI 手法 If分岐による処理 決定木 ベイズ推論 ・ ・ 特徴 ニューラルネットワーク ランダムフォレスト ・ ・ ・ Pre-trained model Fine tuning ・ ・ ・ ・知見をもとにモデル構築 ・実装ロジックは軽め ・扱えるデータが限定的 ・精度は低い ・ラベル付きデータセットで直接学習 ・実装ロジック、計算リソースは重め ・画像や非構造体データも対応 ・精度は高い ・人間のフィードバックで学習 ・データの性質問わず対処 ・問題の複雑さ ・精度、解釈可能性は高い

Slide 22

Slide 22 text

生成AIとは 22 「コンテンツやモノについてデータから学習し、それを使用して創造的かつ 現実的な、全く新しいアウトプットを生み出す機械学習手法」 By Gartner Inc 人間のフィードバックをベースに、人間が生成するような内容(文章、画像など)を人工的に生成

Slide 23

Slide 23 text

OpenAI GPT3.5/4.0が優れているところ 23  Self-Attention 往来のRNNやCNNとは異なり、テキスト内の任意の単語と単語の 関係を直接計算するため、テキスト全体の”コンテスト”を理解することに より正確な回答を生成  Transformer Self-Attentionをベースに開発しているため、テキストの長さに関係 なく、効率的に処理。そのため、大規模な言語モデルをトレーニングし、 運用することが可能  大規模なデータセット Web上の多くのデータセットでトレーニングしているため、正確かつ精度 のある回答を生成するため、LLMとしても他の企業よりも優れている https://txt.cohere.com/what-are-transformer-models/

Slide 24

Slide 24 text

OpenAI GPT3.5の事例:Expedia 24 スマートフォンアプリにて、チャットをするだけで 旅行先からレジャー地や旅行日程の提案 https://www.digitaltrends.com/mobile/expedia-iphone-app-chatgpt-plugin-plan-vacation/

Slide 25

Slide 25 text

25 OpenAIなどLLM-生成AIを使った 検索サービス基盤を作ってみたい

Slide 26

Slide 26 text

OpenAI GPT3/LLM登場以降、開発の潮流は変わりました。 26 ローカルのデータセットを使って ドラゴンボールのLLMを使った、 質疑応答サービスを構築してみます https://www.sequoiacap.com/article/llm-stack- perspective/

Slide 27

Slide 27 text

ドラゴンボールのデータセットをそれぞれのファイルへ格納 27 主要キャラの登場人物は PPTへ格納 年表はExcelへ格納 ドラゴンボールの技一覧は PDFへ格納 メインページはDocへ格納

Slide 28

Slide 28 text

神器:LangChainとLlamaIndex(元はGPT Index) 28  LangChain、LlamaIndexはOpenAI GPTなどのLLMと連携しながら 独自サービス開発することを前提に開発されたOSS  Agentを使いながら、質問文に基づいて適切なアクションを実行  ChatGPTみたいにチェーンおよびAgent呼び出し間で状態維持が可能  ファイルの読み取り、テキスト整形や分割処理サポート ※ LangChainはLLM API呼び出しをAgentにラップ、 LlamaIndexは処理に特 化してるため、個人的には検索基盤等独自サービスの一部機能ベースなら Langchain、Chat等会話型インターフェースを伴うサービスベースなLlamaIndex ※開発する言語(.net)次第ではsemantic-kernelという選択肢もあり ※ LangChainには本番環境で運用のためにLangSmithというアプローチも有効 https://github.com/langchain-ai/langchain https://github.com/jerryjliu/llama_index

Slide 29

Slide 29 text

LangChainを使ったフォルダ配下ファイル読み取り処理について 29 common.py upload_files.py pptx.py ファイル拡張子ごとに判断しながら汎用的に読み取り・処理 これはLangChainを使った例ですが、 LlamaIndex、Apache Tikaでも 実装可能。

Slide 30

Slide 30 text

再掲:ドラゴンボールのあれこれを質問し、回答情報がほしい 30 “孫悟空” “孫悟空の妻は誰ですか?” “ドラゴンボールZでフリーザを倒したのは誰ですか?” “ドラゴンボールZのセル編の概要を教えてください。” “タイムマシン” “スーパーサイヤ人” “ドラゴンボールにおけるパワーレベルと変身の関係は?” “ドラゴンボールでクリリンを殺したのは誰ですか?” “ドラゴンボールの生みの親は誰ですか?” “孫悟空の両親は誰ですか?” “孫悟空の息子の名前は?” “ドラゴンボールはどういう意味ですか?” 今度はLLMを使った検索サービスとして やってみよう

Slide 31

Slide 31 text

Retrieval Augmented Generation(RAG)アプローチ 31 全体的な流れ:  ユーザからの自然言語の質問・クエリを受け取る  Retrieverが質問に関連する可能性のある情報を検索  ReaderはRetrieverが見つけた関連文から質問に対する適切な回 答内容を人間の文章として自然言語ベースで生成、返却 特徴:  質問の文脈をLLMが解釈・理解しながら、持ちデータの関連する情 報を取得するため、質疑応答検索よりも高い精度を実現  リアルタイムで検索と回答生成を行うため、チャットベースで質疑応答 が可能  RAGは複数のNLP(情報検索とテキスト生成)を同時に行うため、 計算負荷が高くなる(そこはLLM APIを使うなりで負荷軽減可能) 質問(クエリ)と回答例:  “ドラゴンボールの生みの親は誰ですか?” ⇒ “ドラゴンボールシリーズは鳥山明が作りました。”  “ドラゴンボールにおけるパワーレベルと変身の関係は?” ⇒”ドラゴンボールでの変身はパワーを倍増させるが、エネルギー制 御が必要で体への負担も伴う。  “ドラゴンボールZでフリーザを倒したのは誰ですか?” ⇒ “ドラゴンボールZでフリーザを初めて倒したのは、初めてスーパー サイヤ人に変身した孫悟空です。” Retriever 検索基盤 ①質問・クエリ ⑨回答返却 ③関連のある 文を抽出 ④関連文 返却 Generation AI (LLM) ②検索クエリ ⑤関連文 Reader ⑥質問文と 関連文 ⑦回答に必要で 自然な文章を生成 ⑧質問に 対する回答 https://arxiv.org/abs/2005.11401

Slide 32

Slide 32 text

Query-Guided Generation 32 全体的な流れ:  ユーザからの質問を処理し、その意味を解釈・理解しながら、生成した い回答文を実現するクエリを作成(質問文に対する補完)  Retrieverが解釈済の質問に対し、可能性のある関連文を検索  ReaderはRetrieverが見つけた関連文から質問に対する適切な回 答内容を人間の文章として自然言語ベースで生成、返却 特徴: クエリに対する具体的な回答文をカスタマイズ生成するため、ユーザが 望んでいる情報をより正確に回答 一部のモデルでは、一度に多くの情報を探索し、それに基づいて最適 な回答を生成するため、データ利用が向上 複雑な質問や抽象的な指示に対する理解が難しく、また訓練データ にない質問や情報に対する対応が難しい場合がある 質問(クエリ)と回答例:  “孫悟空の妻は誰ですか?” ⇒孫悟空の妻はチチです。彼女はオッ クスキングの娘で、ドラゴンボールシリーズでは二人の子供、孫悟飯と 孫悟天の母としても知られています。  “ドラゴンボールの原作でクリリンを殺したのは誰ですか?” ⇒ドラゴン ボールの原作では、クリリンは初めてピッコロ大魔王の手下であるタンバ リンによって殺されます。その後、ドラゴンボールによって復活します。 Retriever 検索基盤 ①質問・クエリ ⑪回答返却 ⑤関連のある 文を抽出 ⑥関連文 返却 Generation AI (LLM) ④検索クエリ ⑦関連文 ②質問文の 理解と解釈 ③検索に必要な 質問クエリ文を作成 Reader ⑧質問文と 関連文 ⑨回答に必要で 自然な文章を生成 ⑩質問に 対する回答

Slide 33

Slide 33 text

LLMを使った汎用的な検索アプローチ 33 元データ集 ベクトル データベース Enhanced prompt Retriever Reader LLM 返却 LLM ①既存情報をベクトル化し、 ベクトルデータベースへ格納 ②質問文を入力 ④質問文の ベクトル化 ③(必要に応じて) ユーザの質問文の 補完処理(任意) ⑤質問文に対する 近似最近傍探索(ANN) ⑥検索結果のIDから ベクトル化する前の 元データを抽出 ⑦質問文に対する 関連性の高い データを提供 ⑧LLMに質問文 とクエリ結果を入力 ⑨promptを使って、 人間の文章を生成

Slide 34

Slide 34 text

Prompt例 34 ⑨Promptの例

Slide 35

Slide 35 text

ドラゴンボールの各種データソースの質問に回答する検索サービス 35 DEMO

Slide 36

Slide 36 text

LLM導入でどれだけ精度があがったか? 36 質問:孫悟空の妻は誰ですか? 質問:ドラゴンボールZのセル編の 概要を教えてください。 質問:ドラゴンボールのクリリンを殺 したのは誰ですか? Non- LLM セマンティック検索 牛魔王の娘・チチと再会しその場で結婚 人造人間・セル編 フリーザ ニューラル検索 試合では、少年時代に出会った際に「嫁にもら う」と約束していた牛魔王の娘・チチと再会しその 場で結婚。 人造人間17号と人造人間18号を吸収することで完全体 となったセルは地球の命運を賭けた武道会「セルゲーム」の 開催を全世界に宣言する。悟空らは天界にある1日で1 年の修行が行えるも過酷な環境に晒される「精神と時の 部屋」で修行し、強さを増してセルゲームに臨むが、悟空 はこのセルとの闘いの中で地球を守るために命を落とす。だ が、その遺志を受け継いだ息子・悟飯が超サイヤ人2へと 覚醒、父・悟空の幻影と共にかめはめ波を放ちセルを撃破。 セルゲームを制した悟飯たちは、ドラゴンボールによりセルに 殺された人々を蘇生させるが、悟空は自分が悪人を引き 寄せているという理由で生き返りを拒否し、あの世に残るこ とを選ぶ。 彼がタンバリンに殺された時には悟空はただちに仇 討に向かい「ぶっ殺してやる!!」とタンバリンに突撃。 質疑応答検索 チチ セルという名前の敵が登場しながらセルゲームを します。 タンバリン Use LLM Retrieval Augmented Generation 孫悟空の妻はチチです。彼女はオックスキングの 娘で、二人は結婚し、二人の子供を育てました。 ドラゴンボールZのセル編では、セルという生物が地球に現 れ、自身を強化するために他の生物の力を吸収します。 彼は最終的にパーフェクトセルとして自己進化し、孫悟飯 との壮絶な戦闘を繰り広げます。この戦いの中で孫悟飯は スーパーサイヤ人2に変身し、最終的にセルを倒します。 ドラゴンボールの原作では、クリリンはタンバリンに よって初めて殺されました。そのあと、フリーザによっ て殺されました。 Query-Guided Generation 孫悟空の妻はチチです。彼女はオックスキングの 娘で、ドラゴンボールシリーズでは二人の子供、孫 悟飯と孫悟天の母としても知られています。 セル編は、バイオロジカルアンドロイドのセルが登場するス トーリーラインです。セルは、地球を破壊するために来たが、 その目的は究極の力を得て完全体になることです。彼は 途中で様々な戦士を吸収し、その力を吸収して強くなりま す。この編では孫悟空が超サイヤ人を超える新たな形態、 超サイヤ人2になる悟飯の力が発揮されます。最終的に悟 飯は父の助けを借りてセルを倒します。 ドラゴンボールの原作では、クリリンは初めてピッコロ 大魔王の手下であるタンバリンによって殺されました。 その後、ドラゴンボールによって復活しました。 LLM導入前 LLM導入後

Slide 37

Slide 37 text

LLM導入でどれだけ精度があがったか? 37 質問:孫悟空の妻は誰ですか? 質問:ドラゴンボールZのセル編の 概要を教えてください。 質問:ドラゴンボールのクリリンを殺 したのは誰ですか? Non- LLM セマンティック検索 牛魔王の娘・チチと再会しその場で結婚 人造人間・セル編 フリーザ ニューラル検索 試合では、少年時代に出会った際に「嫁にもら う」と約束していた牛魔王の娘・チチと再会しその 場で結婚。 人造人間17号と人造人間18号を吸収することで完全体 となったセルは地球の命運を賭けた武道会「セルゲーム」の 開催を全世界に宣言する。悟空らは天界にある1日で1 年の修行が行えるも過酷な環境に晒される「精神と時の 部屋」で修行し、強さを増してセルゲームに臨むが、悟空 はこのセルとの闘いの中で地球を守るために命を落とす。だ が、その遺志を受け継いだ息子・悟飯が超サイヤ人2へと 覚醒、父・悟空の幻影と共にかめはめ波を放ちセルを撃破。 セルゲームを制した悟飯たちは、ドラゴンボールによりセルに 殺された人々を蘇生させるが、悟空は自分が悪人を引き 寄せているという理由で生き返りを拒否し、あの世に残るこ とを選ぶ。 彼がタンバリンに殺された時には悟空はただちに仇 討に向かい「ぶっ殺してやる!!」とタンバリンに突撃。 質疑応答検索 チチ セルという名前の敵が登場しながらセルゲームを します。 タンバリン Use LLM Retrieval Augmented Generation 孫悟空の妻はチチです。彼女はオックスキングの 娘で、二人は結婚し、二人の子供を育てました。 ドラゴンボールZのセル編では、セルという生物が地球に現 れ、自身を強化するために他の生物の力を吸収します。 彼は最終的にパーフェクトセルとして自己進化し、孫悟飯 との壮絶な戦闘を繰り広げます。この戦いの中で孫悟飯は スーパーサイヤ人2に変身し、最終的にセルを倒します。 ドラゴンボールの原作では、クリリンはタンバリンに よって初めて殺されました。そのあと、フリーザによっ て殺されました。 Query-Guided Generation 孫悟空の妻はチチです。彼女はオックスキングの 娘で、ドラゴンボールシリーズでは二人の子供、孫 悟飯と孫悟天の母としても知られています。 セル編は、バイオロジカルアンドロイドのセルが登場するス トーリーラインです。セルは、地球を破壊するために来たが、 その目的は究極の力を得て完全体になることです。彼は 途中で様々な戦士を吸収し、その力を吸収して強くなりま す。この編では孫悟空が超サイヤ人を超える新たな形態、 超サイヤ人2になる悟飯の力が発揮されます。最終的に悟 飯は父の助けを借りてセルを倒します。 ドラゴンボールの原作では、クリリンは初めてピッコロ 大魔王の手下であるタンバリンによって殺されました。 その後、ドラゴンボールによって復活しました。

Slide 38

Slide 38 text

LLM導入でどれだけ精度があがったか? 38 質問:孫悟空の妻は誰ですか? 質問:ドラゴンボールZのセル編の 概要を教えてください。 質問:ドラゴンボールのクリリンを殺 したのは誰ですか? Non- LLM セマンティック検索 牛魔王の娘・チチと再会しその場で結婚 人造人間・セル編 フリーザ ニューラル検索 試合では、少年時代に出会った際に「嫁にもら う」と約束していた牛魔王の娘・チチと再会しその 場で結婚。 人造人間17号と人造人間18号を吸収することで完全体 となったセルは地球の命運を賭けた武道会「セルゲーム」の 開催を全世界に宣言する。悟空らは天界にある1日で1 年の修行が行えるも過酷な環境に晒される「精神と時の 部屋」で修行し、強さを増してセルゲームに臨むが、悟空 はこのセルとの闘いの中で地球を守るために命を落とす。だ が、その遺志を受け継いだ息子・悟飯が超サイヤ人2へと 覚醒、父・悟空の幻影と共にかめはめ波を放ちセルを撃破。 セルゲームを制した悟飯たちは、ドラゴンボールによりセルに 殺された人々を蘇生させるが、悟空は自分が悪人を引き 寄せているという理由で生き返りを拒否し、あの世に残るこ とを選ぶ。 彼がタンバリンに殺された時には悟空はただちに仇 討に向かい「ぶっ殺してやる!!」とタンバリンに突撃。 質疑応答検索 チチ セルという名前の敵が登場しながらセルゲームを します。 タンバリン Use LLM Retrieval Augmented Generation 孫悟空の妻はチチです。彼女はオックスキングの 娘で、二人は結婚し、二人の子供を育てました。 ドラゴンボールZのセル編では、セルという生物が地球に現 れ、自身を強化するために他の生物の力を吸収します。 彼は最終的にパーフェクトセルとして自己進化し、孫悟飯 との壮絶な戦闘を繰り広げます。この戦いの中で孫悟飯は スーパーサイヤ人2に変身し、最終的にセルを倒します。 ドラゴンボールの原作では、クリリンはタンバリンに よって初めて殺されました。そのあと、フリーザによっ て殺されました。 Query-Guided Generation 孫悟空の妻はチチです。彼女はオックスキングの 娘で、ドラゴンボールシリーズでは二人の子供、孫 悟飯と孫悟天の母としても知られています。 セル編は、バイオロジカルアンドロイドのセルが登場するス トーリーラインです。セルは、地球を破壊するために来たが、 その目的は究極の力を得て完全体になることです。彼は 途中で様々な戦士を吸収し、その力を吸収して強くなりま す。この編では孫悟空が超サイヤ人を超える新たな形態、 超サイヤ人2になる悟飯の力が発揮されます。最終的に悟 飯は父の助けを借りてセルを倒します。 ドラゴンボールの原作では、クリリンは初めてピッコロ 大魔王の手下であるタンバリンによって殺されました。 その後、ドラゴンボールによって復活しました。 生成AI-LLMで質問に対する 回答表現・精度が向上

Slide 39

Slide 39 text

しかし・・・ 39 質問:孫悟空の妻は誰ですか? 質問:ドラゴンボールZのセル編の 概要を教えてください。 質問:ドラゴンボールのクリリンを殺 したのは誰ですか? Non- LLM セマンティック検索 牛魔王の娘・チチと再会しその場で結婚 人造人間・セル編 フリーザ ニューラル検索 試合では、少年時代に出会った際に「嫁にもら う」と約束していた牛魔王の娘・チチと再会しその 場で結婚。 人造人間17号と人造人間18号を吸収することで完全体 となったセルは地球の命運を賭けた武道会「セルゲーム」の 開催を全世界に宣言する。悟空らは天界にある1日で1 年の修行が行えるも過酷な環境に晒される「精神と時の 部屋」で修行し、強さを増してセルゲームに臨むが、悟空 はこのセルとの闘いの中で地球を守るために命を落とす。だ が、その遺志を受け継いだ息子・悟飯が超サイヤ人2へと 覚醒、父・悟空の幻影と共にかめはめ波を放ちセルを撃破。 セルゲームを制した悟飯たちは、ドラゴンボールによりセルに 殺された人々を蘇生させるが、悟空は自分が悪人を引き 寄せているという理由で生き返りを拒否し、あの世に残るこ とを選ぶ。 彼がタンバリンに殺された時には悟空はただちに仇 討に向かい「ぶっ殺してやる!!」とタンバリンに突撃。 質疑応答検索 チチ セルという名前の敵が登場しながらセルゲームを します。 タンバリン Use LLM Retrieval Augmented Generation 孫悟空の妻はチチです。彼女はオックスキングの 娘で、二人は結婚し、二人の子供を育てました。 ドラゴンボールZのセル編では、セルという生物が地球に現 れ、自身を強化するために他の生物の力を吸収します。 彼は最終的にパーフェクトセルとして自己進化し、孫悟飯 との壮絶な戦闘を繰り広げます。この戦いの中で孫悟飯は スーパーサイヤ人2に変身し、最終的にセルを倒します。 ドラゴンボールの原作では、クリリンはタンバリンに よって初めて殺されました。 Query-Guided Generation 孫悟空の妻はチチです。彼女はオックスキングの 娘で、ドラゴンボールシリーズでは二人の子供、孫 悟飯と孫悟天の母としても知られています。 セル編は、バイオロジカルアンドロイドのセルが登場するス トーリーラインです。セルは、地球を破壊するために来たが、 その目的は究極の力を得て完全体になることです。彼は 途中で様々な戦士を吸収し、その力を吸収して強くなりま す。この編では孫悟空が超サイヤ人を超える新たな形態、 超サイヤ人2になる悟飯の力が発揮されます。最終的に悟 飯は父の助けを借りてセルを倒します。 ドラゴンボールの原作では、クリリンは初めてピッコロ 大魔王の手下であるタンバリンによって殺されました。 その後、ドラゴンボールによって復活しましたが、フ リーザに殺されました。 OpenAI Embeddingsを 使った各種検索をしても、 なぜ精度が上がらないのか? ※答えは 「タンバリン」 と 「フリーザ」、 「魔人ブウ」、「人造人間17号(GT)」 ⇒

Slide 40

Slide 40 text

クリリンのwikiでも、確かに4回殺されてたことが記載されていた。 40 https://ja.wikipedia.org/wiki/%E3%82%AF%E3%83%AA%E 3%83%AA%E3%83%B3 命は大切に

Slide 41

Slide 41 text

クリリンの死は無駄なのか 41 ChatGPT4.0やMSが推奨するAzure OpenAI and Cognitive Search Sample Repoでも誤った回答を出力 https://github.com/Azure-Samples/azure-search-openai-demo

Slide 42

Slide 42 text

再掲)全文検索:Full Text Search 42 検索基盤 ②質問・クエリ ⑤回答返却 ③単語やフレーズ検索 ④該当文 返却 ①インデックス作成、 ステミング、トークン化 全文検索の流れ: 1. テキスト文全体の各単語にインデックスを割り当て 2. ステミング(動詞の基本形変換)しながらテキストを 意味ある単位(単語・フレーズ)に分割しトークン化 3. 質問キーワードに基づき、インデックスを使って検索 特徴:  インデックスを使用するため、大量のデータでも非常に高速で検索 ※インデックスは本の索引みたいなもの  大量のデータに対しても効率的に処理するため、スケーリングしやすい  検索クエリと文書中の単語が文字列としてどれだけ一致しているかに 大きく依存するため、微妙な違いや意味的な関連性は検知されにくい 質問(クエリ)と回答例:  “孫悟空” ⇒ …尻尾の生えた少年・孫悟空はある日、西の都…  “スーパーサイヤ人” ⇒ …変身した姿。「スーパーサイヤ人」とも表記…  “タイムマシン” ⇒ …ブルマの作ったタイムマシンで悟空たちの住む過去…

Slide 43

Slide 43 text

精度向上のためには 43 全文検索+ベクトル検索+LLMによる生成処理 のハイブリット構成 全文検索 ベクトルによる検索 検索アプローチ 全文検索 セマンティック検索、ニューラル検索、 質疑応答検索 手法 テキストを意味ある単位(単語・フレーズ)に分 割しトークン化しながら、質問文を使ったフィルタリ ングで回答になりうる関連情報を抽出 テキストデータをベクトルデータへ変換しながら、 ベクトル空間にて関連のある情報を抽出、回 答を生成 開発負荷・運用負荷およびテスト面の負荷は増えるが、精度は向上(頑張った分だけ報われる) ただし、シナリオ次第では、ユーザは「何が正しいか」を識別、選択するのが難しくなるので、 基本はベクトルによる検索のみに絞ってもいい気がする データ層はドキュメントとベクトルそれぞれ異なった配置になるため、開発負荷・運用が困難になりやすいが、 実はデータベースによってはカバー可能(Qdrant、Weaviate、Chroma etc)

Slide 44

Slide 44 text

個人的お勧めなのがQdrant:Rust製ベクトルデータベース 44 全文検索(Full text match) セマンティック検索 ニューラル検索 https://qdrant.tech/articles/why-rust/

Slide 45

Slide 45 text

Qdrantで全文検索をする場合 45 Qdrant の Full Text Matchを 併用しながらベクトル検索 ※Qdrant v0.10以降サポート ※LangChainなどから直接全文検索機能は 未サポートなので独自実装する必要がある ※Qdrant以外、全文検索+ベクトル検索が できるものであれば手法は何でもよい Ex:chroma、Weaviateなど。 負荷は増えるけど全文検索に強いElasticsearch、 もしくはmeilsearchとのペアが最強 https://qdrant.tech/documentation/concepts/filtering/#full-text-match

Slide 46

Slide 46 text

クリリンの死は無駄ではなかった 46 Qdrant の Full Text Matchと セマンティック検索の結果情報を使って LLMで回答文を生成し返却 全文検索 + セマンティック検索 質問文+検索結果(関連文)を LLMで人間っぽく自然文章を生成し回答 クリリンおかえり 全文検索におけるキーワードは 「クリリン」 + 「殺される」 or 「死亡」 Elasticsearchのように事前に キーワード割り当て処理が尊いので、 これも独自実装が必要

Slide 47

Slide 47 text

OpenAI Cookbook 47 LLMを使ったサービス構築で やりたいこと、作りたいことは 大抵ここにある https://github.com/openai/openai-cookbook

Slide 48

Slide 48 text

LLMアプリケーション構築ベストプラクティス 48 https://huyenchip.com/2023/04/11/llm- engineering.html ※左画像は英語ページをDeepL機械翻訳

Slide 49

Slide 49 text

49 嘘・ハルシネーション対策

Slide 50

Slide 50 text

ハルシネーション対策(1):無理に回答させない 50 prompt処理にて、回答ができない場合は「見つかりません、わかりません」で切り捨てる

Slide 51

Slide 51 text

ハルシネーション対策(2):ゴール像の要件を明確にする 51 シナリオごとに「なんのためにLLMを使うのか、どこでLLMを実装するか」をよく検討 • 回答文章は自然な文章である必要があるか? • 持ちデータソースがあるけど、持ちデータソースにはない検索もしたいのか? • 持ちデータソースがない状態でサービス構築・運用したいか? • インプット・アウトプットの要件はどういうものか? • 期待するアウトプットは何で、アウトプットの精度について許容レベルは何か?

Slide 52

Slide 52 text

ハルシネーション対策(3):出力内容が嘘かどうかは確認してもらう 52 LLMの「嘘」は LLMが「嘘」と見抜けるようにする  テキスト文を生成し出力  SQLやソースコードを生成し出力  これは私には知りえない情報です  ソースコード実行エラーが発生しています

Slide 53

Slide 53 text

例えば、、、 53 自然言語によるクエリ 文章をベースにテーブル 一覧から対象テーブル /フィールド選定 Prompt enrichment (ユーザの入力に対する 処理基盤) データ ベース SQLクエリ 実行 SQLクエリ 投与の 再実行 ダッシュボードにて Chart/Map表示 GPTベースで text to SQL Query SQLクエリ失敗 SQLクエリ成功 質問 Prompt SQLクエリ テーブル定義& スキーマ SQLクエリ 表形式データ  質問文を入力するだけで、地図上にて即分析・可視化するサービス  LLM – 生成AIが質問文をSQLクエリへ変換してくれますが、 もしそのSQLクエリが間違っている=生成AIが作ったものが嘘なら 「実行できないよ+エラーメッセージ」 を添えて、 SQLクエリが成功するまでエンドレスでSQLクエリを再作成指示

Slide 54

Slide 54 text

54 精度向上アプローチ

Slide 55

Slide 55 text

プロンプトエンジニアリング 55 https://qiita.com/sonesuke/items/24ac25322ae43b5651bc プロンプトは大規模な言語モデルに対して、応答を生成したり タスクを完了したりするよう指示するアプローチ プロンプトの作成方法は、モデルが返す回答の正確さと形式に 影響するので、プロンプトを正しく作成することが非常に重要 詳細はこの記事が詳しい

Slide 56

Slide 56 text

MTER:Massive Text Embedding Benchmark 56  テキストデータをベクトル化(Embedding)する際、精度、 処理パフォーマンスを評価するためのベンチマーク。  OpenAI のtext-embedding-ada-002モデル以外、 LLMサービスとして構築展開したい内容によってはsentence- transformers/gtr-t5-xlやall-MiniLM-L12-v2が優れている 場合もある(LLMの乱世時代)  OpenAI EmbeddingはAPIベースで高額の割に処理パ フォーマンスが割に合わない場合は、これを使いつつ sentence-transformers系など適材適所なモデルへシフト https://github.com/embeddings-benchmark/mteb https://medium.com/@kelvin.lu.au/hosting-a-text-embedding- model-that-is-better-cheaper-and-faster-than-openais-solution- 7675d8e7cab2 https://blog.getzep.com/text-embedding-latency-a-semi-scientific-look/ https://huggingface.co/spaces/mteb/leaderboard https://arxiv.org/abs/2210.07316

Slide 57

Slide 57 text

BEIR:Benchmarking Information Retrieval 57 https://github.com/beir-cellar/beir  ベクトル化したデータセットから、クエリに応じてデータを取得する 際の情報検索評価ベンチマーク(Retriever処理特化)  セマンティックからニューラル検索、質疑応答検索において有効  サンプルおよびチュートリアルが豊富にあり、すぐに試せれる https://github.com/beir-cellar/beir/wiki/Examples-and-tutorials

Slide 58

Slide 58 text

Evals:LLM、生成AIを使ったサービス基盤の評価 58 https://note.com/mahlab/n/nc77cc910c1b6 https://github.com/openai/evals  OpenAIのModelを使ったサービス基盤の評価フレームワーク  データセットを設定したのち、今回のサービス構築・ 運用パフォーマンスがよいか確認ができる  OpenAIモデルによる品質、OpenAIモデルによって補完される 処理の品質の測定が可能

Slide 59

Slide 59 text

59 なお、LLMによる生成AIは テキスト処理だけではない

Slide 60

Slide 60 text

新しい画像を与えたとき、それを翻訳しながらテキスト化する技術 60 https://github.com/openai/CLIP  Learning Transferable Visual Models From Natural Language Supervision  「画像データ」と「画像説明用の言葉・テキスト」には深い関連性があり、 それをモデル化することにより、新しい画像を与えたときにそれに関連す るテキストを生成し回答することができる  GPT-3のゼロショット学習と同じく、初めて見る問題でも、事前に人間 のフィードバックで学習したモデル・知識を使って画像分析・解決 https://www.slideshare.net/DeepLearningJP2016/dllearning-transferable- visual-models-from-natural-language-supervision

Slide 61

Slide 61 text

LLMによる2つの画像の差分箇所のテキスト化 61 2つの画像の差分をテキスト化  間違い探しを素早く回答  別途サポート業務で必要なので、引き続き検証中  画像の間違いを素早く検知しテキスト化することは 新たな異常検知アプローチにもつながる DEMO

Slide 62

Slide 62 text

62 生成AIの登場により、できることが増えた

Slide 63

Slide 63 text

63 生成AIは非常に便利 しかし、適切に使わないと、変な方向へ行くので注意

Slide 64

Slide 64 text

ぷち宣伝 64 ソフトバンクは未来を見ながら 情報革命で人々を幸せにする エンジニアを募集しています。 FAや異動でyahoo、LINEも行けます。 私大原もFAで中国内・中国外にいる Alibabaエンジニアたちと仲良くなりました。 結構自由です☺ https://recruit.softbank.jp/

Slide 65

Slide 65 text

65 Appendix

Slide 66

Slide 66 text

参考:Generative Pseudo Labeling (GPL)とは 66 https://arxiv.org/abs/2112.07577 https://www.pinecone.io/learn/series/nlp/gpl/ 既存データセットを教師あり機械学習で学習し、モデルを作成。 そのモデルを使って、教師なしデータに対する仮のラベルを作り、 その仮のラベルと教師ありデータを組み合わせてモデルを 再訓練することにより、データセット観点ら事実に基づいた 新しい情報・アウトプットを実現

Slide 67

Slide 67 text

抽出したテキストデータはどのように整形するか? 67 CharacterTextSplitter: 文字単位でテキストを分割。デフォルトでは改行を区切りとして使用。 TokenTextSplitter: OpenAIトークン単位でテキストを分割。デフォルトではGPT-2のエンコーディングを使用。 NLTKTextSplitter: NLTKを使用して文単位でテキストを分割。 SpacyTextSplitter: Spacyを使用して文単位でテキストを分割。 MarkdownTextSplitter: Markdown形式の見出し、コードブロック、水平罫線に沿ってテキストを分割。 LatexTextSplitter: Latex形式のレイアウト要素(見出し、列挙など)に沿ってテキストを分割。 抽出したテキストデータを、意味ある1つのテキスト文にしながらベクトル化するプロセスにおいて、 長いテキストは複数の小さなテキストへ分割、あるいは1つの文として 長さ(Chunk size/overlap)を指定し区切り整理します(データクレンジング、前処理) LangChainが選ばれる理由の1つとして、ファイルを読み取ったばかりの生テキストデータを整形する機能が付帯されてる

Slide 68

Slide 68 text

ベクトルデータへ変換し保存するデータ層はどこにすべきか? 68 BM25 TF-IDF ベクトル化 (Embedding) メリット デメリット Elasticsearch Support Support Support  Full-text検索エンジンとして高パフォーマンス  柔軟なデータスキーマとクエリDSL  水平スケーラビリティと高可用性  高次元ベクトルデータの処理には不向き  メモリやCPU等リソースを食いやすい FAISS × × Support  高次元のベクトルデータに対して高速ANN(近似 最近傍探索:ANN)を提供  GPUの活用が可能で、大量のデータに対するス ケーラビリティが高い  メモリ依存仕様なのでリソースを食いやすい  データの永続化や分散処理のための機能 がシビア In-Memory Database(Redis等) Support Support Support  データへのアクセスが非常に高速で、低レイテンシ  データ構造が柔軟で、多様なデータ型を扱えれる  メモリ上にデータを保存およびデータ永続化 の手段およびストレージ容量が限定的 chroma × × Support  高次元ベクトルデータに対して、高速でANN(近 似最近傍探索)を提供  ベクトル表現に文脈情報をエンコードできるため、レ コメンデーションや高度な検索が可能  比較的まだ新しいベクトルデータベースなの で、ソースコードを解読しながら対応 PostgreSQL × Support pgvector プラグイン必須  ACID特性があり、トランザクションをサポート SQLクエリと関数をサポートし、高度な分析が可能  高次元ベクトルデータの処理には不向き スケールアウト(水平スケーリング)が困難 Qdrant × × Support  高次元ベクトルデータに対して、高速でANN(近 似最近傍探索)を提供  大規模ベクトルデータベース対応、軽量で早い  比較的まだ新しいベクトルデータベースなの で、ソースコードを解読しながら対応 Weaviate Support Support Support  自動的にデータをベクトル化し、ANN(近似最近 傍探索)だけでなく機械学習による意味的な検 索が可能  GraphQLやRESTful APIを介した直感的なクエ リ言語を提供  Weaviate専用のカスタムクエリ言語があり、 一部学習コストが生じる

Slide 69

Slide 69 text

69 EOF