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

ChatGPT/OpenAI問わず生成AI関連サービス構築方法・応用例を紹介する

 ChatGPT/OpenAI問わず生成AI関連サービス構築方法・応用例を紹介する

SoftBank Tech Night

July 28, 2023
Tweet

More Decks by SoftBank Tech Night

Other Decks in Technology

Transcript

  1. 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位
  2. 本日の講演の内容 4 ⚫ 生成AIサービス構築方法・応用例 ⚫ 生成AIが実現するサービスや可能性 話さないこと ⚫ ChatGPT等プロンプトエンジニアリング ⚫

    生成AIモデル、Transformer、生成AIを支える技術 ⚫ Microsoft Azure OpenAIを使ったサービス構築ノウハウ ⚫ ソフトバンクグループ企業間での生成AIコンテストで2位(実質1位)を取った内容 (こっちのほうが技術アーキテクチャ的に価値がありますが、箝口令中です、ごめんなさい)
  3. やりたいこと:ドラゴンボールのあれこれを質問し、回答情報が欲しい 8 全文検索 (Full Text Search) セマンティック検索 (Semantic Search) 質疑応答検索

    (Open Domain Question Answering) ニューラル検索 (Neural Search) “孫悟空” “孫悟空の妻は誰ですか?” “ドラゴンボールZでフリーザを倒したのは誰ですか?” “ドラゴンボールZのセル編の概要を教えてください。” “タイムマシン” “スーパーサイヤ人” “ドラゴンボールにおけるパワーレベルと変身の関係は?” “ドラゴンボールでクリリンを殺したのは誰ですか?” “ドラゴンボールの生みの親は誰ですか?” “孫悟空の両親は誰ですか?” “孫悟空の息子の名前は?” “ドラゴンボールはどういう意味ですか?”
  4. 全文検索:Full Text Search 10 検索基盤 ②質問・クエリ ⑤回答返却 ③単語やフレーズ検索 ④該当文 返却

    ①インデックス作成、 ステミング、トークン化 全文検索の流れ: 1. テキスト文全体の各単語にインデックスを割り当て 2. ステミング(動詞の基本形変換)しながらテキストを 意味ある単位(単語・フレーズ)に分割しトークン化 3. 質問キーワードに基づき、インデックスを使って検索 特徴:  インデックスを使用するため、大量のデータでも非常に高速で検索 ※インデックスは本の索引みたいなもの  大量のデータに対しても効率的に処理するため、スケーリングしやすい  検索クエリと文書中の単語が文字列としてどれだけ一致しているかに 大きく依存するため、微妙な違いや意味的な関連性は検知されにくい 質問(クエリ)と回答例:  “孫悟空” ⇒ …尻尾の生えた少年・孫悟空はある日、西の都…  “スーパーサイヤ人” ⇒ …変身した姿。「スーパーサイヤ人」とも表記…  “タイムマシン” ⇒ …ブルマの作ったタイムマシンで悟空たちの住む過去…
  5. 参考:ベクトル化アプローチについて 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と呼ばれ、次元数はモデルの入力/出力層に依存
  6. 次元数の大きいベクトルデータの検索を支えるHNSWアルゴリズム 12 https://www.slideshare.net/SeaseLtd/apachecon-22- neural-search-comes-to-apache-solrpptx  HNSWアルゴリズムはANN(近似最近傍探索)において かなり効率的なアルゴリズム  データサイズ・セットが大きくなってもスケールできるよう設計されて いるので、大規模データセットに強い

     距離関数さえ定義できれば、テキストだけでなく画像、動画、 音声、などにも検索対応  Mパラメータ(ゼロ層とゼロ層以上の近傍層の最大数)と efパラメータ(近似最近傍のダイナミックリストのサイズ)などの パラメータを調整することで、精度とスピードのコントロールが可能  FAISSやQdrantなどにもある(ベクトルデータベースとして、もし HNSWが含まれてないものは極力避けた方がいい)
  7. セマンティック検索:Semantic search 14 Retriever 検索基盤 ②質問・クエリ ⑨回答返却 ④cos類似度で 関連文抽出 ⑤関連文

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

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

    文を抽出 ④関連文 返却 Reader ②検索クエリ ⑤関連文 ⑥質問文と 関連文 ⑦質問に対する 具体的な回答を 抽出 質疑応答検索の流れ:  ユーザからの自然言語の質問・クエリを受け取る  Retriever(情報検索)が質問に関連する情報を検索 ※検索アプローチはセマンティック検索と同じくベクトル検索  Reader(回答の抽出)がRetrieverが見つけた関連文から 具体的な答えを抽出 特徴:  広範囲のトピックや大量のデータ量に対する質問に回答が可能  回答内容は1つの具体的な情報(エンティティや事実)ベースで あり、その情報には情報源らエビデンスを付け加えやすい  ニューラル検索との違いについては、ニューラル検索は関連性のある 情報を提供、ODQAは質問に対する具体的な答えを提供 質問(クエリ)と回答例:  “ドラゴンボールZでフリーザを倒したのは誰ですか?” ⇒ 悟空  “ドラゴンボールの原作でクリリンを殺したのは誰ですか?” ⇒ タンバリン  “孫悟空の両親は誰ですか?” ⇒ 下級戦士バーダックとギネ ※セマンティック検索は文中から直接的な文を引用し抽出に対し、 質疑応答検索は文中から関連文を詮索し回答を抽出
  10. 検索基盤を活用した横展開の事例 17 パブリッククラウドサービスのよくある質問集の自動作成 • 質疑応答検索技術を中心とする構成 • テキストの主要なテーマを識別するトピックモデリング • 類似する問題を解決する情報をまとめるクラスタリング •

    抽出した情報を自然な文章へ変換する自然言語生成 • OpenAIなどLLMベースでは構築不可 (仮に作れたとしても、嘘・ハルシネーションはどうするんだ?という話) • 最新プロダクトサービスや最新情報に即応
  11. 検索基盤を活用した横展開の事例 18 • 質疑応答検索技術を中心とする構成 • 質疑応答検索はDense Passage Retrievalベース、すな わち操作手法を主回答タスクにすることで、操作ユーザ観点 での回答と提供

    • Generative Pseudo Labeling • テキストの主要なテーマを識別するトピックモデリング • 抽出した情報を自然な文章へ変換する自然言語生成 • OpenAIなどLLMベースでは構築不可 (仮に作れたとしても、嘘・ハルシネーションはどうするんだ?という話) • 最新プロダクトサービスに対応 • コンソール自動操作は独自技術(特許) パブリッククラウドサービスの自動検証、 およびHands-on training記事の自動出力
  12. 「推論」の高度化により、「機械」が「人」を超える時代 21 ルールベース 教師あり/なし機械学習 生成AI 手法 If分岐による処理 決定木 ベイズ推論 ・

    ・ 特徴 ニューラルネットワーク ランダムフォレスト ・ ・ ・ Pre-trained model Fine tuning ・ ・ ・ ・知見をもとにモデル構築 ・実装ロジックは軽め ・扱えるデータが限定的 ・精度は低い ・ラベル付きデータセットで直接学習 ・実装ロジック、計算リソースは重め ・画像や非構造体データも対応 ・精度は高い ・人間のフィードバックで学習 ・データの性質問わず対処 ・問題の複雑さ ・精度、解釈可能性は高い
  13. OpenAI GPT3.5/4.0が優れているところ 23  Self-Attention 往来のRNNやCNNとは異なり、テキスト内の任意の単語と単語の 関係を直接計算するため、テキスト全体の”コンテスト”を理解することに より正確な回答を生成  Transformer

    Self-Attentionをベースに開発しているため、テキストの長さに関係 なく、効率的に処理。そのため、大規模な言語モデルをトレーニングし、 運用することが可能  大規模なデータセット Web上の多くのデータセットでトレーニングしているため、正確かつ精度 のある回答を生成するため、LLMとしても他の企業よりも優れている https://txt.cohere.com/what-are-transformer-models/
  14. 神器: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
  15. 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
  16. Query-Guided Generation 32 全体的な流れ:  ユーザからの質問を処理し、その意味を解釈・理解しながら、生成した い回答文を実現するクエリを作成(質問文に対する補完)  Retrieverが解釈済の質問に対し、可能性のある関連文を検索 

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

    返却 LLM ①既存情報をベクトル化し、 ベクトルデータベースへ格納 ②質問文を入力 ④質問文の ベクトル化 ③(必要に応じて) ユーザの質問文の 補完処理(任意) ⑤質問文に対する 近似最近傍探索(ANN) ⑥検索結果のIDから ベクトル化する前の 元データを抽出 ⑦質問文に対する 関連性の高い データを提供 ⑧LLMに質問文 とクエリ結果を入力 ⑨promptを使って、 人間の文章を生成
  18. LLM導入でどれだけ精度があがったか? 36 質問:孫悟空の妻は誰ですか? 質問:ドラゴンボールZのセル編の 概要を教えてください。 質問:ドラゴンボールのクリリンを殺 したのは誰ですか? Non- LLM セマンティック検索

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

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

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

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

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

    手法 テキストを意味ある単位(単語・フレーズ)に分 割しトークン化しながら、質問文を使ったフィルタリ ングで回答になりうる関連情報を抽出 テキストデータをベクトルデータへ変換しながら、 ベクトル空間にて関連のある情報を抽出、回 答を生成 開発負荷・運用負荷およびテスト面の負荷は増えるが、精度は向上(頑張った分だけ報われる) ただし、シナリオ次第では、ユーザは「何が正しいか」を識別、選択するのが難しくなるので、 基本はベクトルによる検索のみに絞ってもいい気がする データ層はドキュメントとベクトルそれぞれ異なった配置になるため、開発負荷・運用が困難になりやすいが、 実はデータベースによってはカバー可能(Qdrant、Weaviate、Chroma etc)
  24. 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
  25. クリリンの死は無駄ではなかった 46 Qdrant の Full Text Matchと セマンティック検索の結果情報を使って LLMで回答文を生成し返却 全文検索

    + セマンティック検索 質問文+検索結果(関連文)を LLMで人間っぽく自然文章を生成し回答 クリリンおかえり 全文検索におけるキーワードは 「クリリン」 + 「殺される」 or 「死亡」 Elasticsearchのように事前に キーワード割り当て処理が尊いので、 これも独自実装が必要
  26. 例えば、、、 53 自然言語によるクエリ 文章をベースにテーブル 一覧から対象テーブル /フィールド選定 Prompt enrichment (ユーザの入力に対する 処理基盤)

    データ ベース SQLクエリ 実行 SQLクエリ 投与の 再実行 ダッシュボードにて Chart/Map表示 GPTベースで text to SQL Query SQLクエリ失敗 SQLクエリ成功 質問 Prompt SQLクエリ テーブル定義& スキーマ SQLクエリ 表形式データ  質問文を入力するだけで、地図上にて即分析・可視化するサービス  LLM – 生成AIが質問文をSQLクエリへ変換してくれますが、 もしそのSQLクエリが間違っている=生成AIが作ったものが嘘なら 「実行できないよ+エラーメッセージ」 を添えて、 SQLクエリが成功するまでエンドレスでSQLクエリを再作成指示
  27. 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
  28. 新しい画像を与えたとき、それを翻訳しながらテキスト化する技術 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
  29. 抽出したテキストデータはどのように整形するか? 67 CharacterTextSplitter: 文字単位でテキストを分割。デフォルトでは改行を区切りとして使用。 TokenTextSplitter: OpenAIトークン単位でテキストを分割。デフォルトではGPT-2のエンコーディングを使用。 NLTKTextSplitter: NLTKを使用して文単位でテキストを分割。 SpacyTextSplitter: Spacyを使用して文単位でテキストを分割。

    MarkdownTextSplitter: Markdown形式の見出し、コードブロック、水平罫線に沿ってテキストを分割。 LatexTextSplitter: Latex形式のレイアウト要素(見出し、列挙など)に沿ってテキストを分割。 抽出したテキストデータを、意味ある1つのテキスト文にしながらベクトル化するプロセスにおいて、 長いテキストは複数の小さなテキストへ分割、あるいは1つの文として 長さ(Chunk size/overlap)を指定し区切り整理します(データクレンジング、前処理) LangChainが選ばれる理由の1つとして、ファイルを読み取ったばかりの生テキストデータを整形する機能が付帯されてる
  30. ベクトルデータへ変換し保存するデータ層はどこにすべきか? 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専用のカスタムクエリ言語があり、 一部学習コストが生じる