TiDB ボット: Generative AI を使用して企業固有のユーザー アシスタント ロボットを構築する

この記事では、PingCAP が Generative AI を使用して、企業固有のナレッジ ベースを使用するユーザー アシスタント ロボットを構築する方法を紹介します。業界で一般的に使用されている知識ベースの回答方法を使用することに加えて、モデルを使用して少数ショット法で毒性を決定することも試みました。最終的に、ユーザーがロボットを使用した後のクリック率と嫌悪感の割合は 5% 未満であり、世界中の顧客向けの TiDB のさまざまなチャネルに適用されました。

Generative Al の魔法が明らかになりました。

2022年以降、Generative AI(以下、GenAI)が世界を席巻しています。MidJourney ( https://www.midjourney.com/ )以来  、DALL-E (  https://openai.com/dall-e-2  ) がテキスト生成画像の人気をもたらし、その後 ChatGPT (  https:/ / openai.com/chatgpt  ) 自然で流暢な会話で人々の注目を完全に引き付け、GenAI はもはや避けて通れない話題になりました。より一般的なシナリオにおいて、AI が人間のより良い生活と働きをサポートできるかどうかは、ここ 23 年間で中心的なテーマの 1 つとなっています。

その中で、LangChain ( https://www.langchain.com/ )などの開発ツールの台頭は、  エンジニアが GenAI ベースのアプリケーションをバッチで作成し始めていることを意味します。PingCAP はまた、いくつかの実験を行い、次のようないくつかの作業を完了しました。

● Ossingisht の Data Explorer (  https://ossinsight.io/explore/  ): 自然言語を使用して SQL を生成し、Github オープン ソース ソフトウェアを探索するプロジェクト

● TiDB Cloud の Chat2Query (  https://docs.pingcap.com/tidbcloud/explore-data-with-chat2query  ): クラウド内のデータベースを使用して自然言語を通じて SQL を生成するプロジェクト これらのアプリケーションを構築した後、作成者はGenAI の機能を使用して、より一般的なアプリケーションを構築し、ユーザーに大きな価値をもたらすことができないか考えてください。

考える必要がある

グローバル TiDB と TiDB Cloud が徐々に成長するにつれて、グローバル ユーザーのサポートがますます重要になってきています。ユーザー数が幾何級数的に増加する中、ユーザーに対応するサポートスタッフの数は急速に増加しないため、大量のユーザーにどのように対応するか検討することが急務となっています。

実際のサポート ユーザーの経験、グローバル コミュニティおよび社内の作業指示システムでのユーザーの質問に関する調査に基づくと、ユーザーの質問の 50% 以上が実際に公式ドキュメントの中に答えを見つけることができますが、それは単にドキュメントに含まれている内容が多すぎるためです。内容が多く、見つけるのが難しいです。したがって、すべての TiDB 公式ドキュメントの知識を備えたロボットを提供できれば、ユーザーが TiDB をより適切に使用できるようになる可能性があります。

ジェネレーティブ・アルと需要実現とのギャップ

需要を発見したら、Gen AI がその需要に使用できるかどうかを確認するために、GenAI の特性と制限も理解する必要があります。完了した研究に基づいて、著者は Gen AI のいくつかの特徴を要約できます。ここでの Gen AI は主に、テキスト対話に焦点を当てた GPT (Generative Pre-trained Transformer) タイプのモデルを指します。この記事の残りの部分では GPT の観点から説明します。

1  GPT 機能

● 意味論を理解する能力 。GPT は非常に強力な意味理解能力を備えており、基本的にあらゆるテキストを障害なく理解できます。どのような言語(人間の言語でもコンピュータの言語でも)や表現のレベルに関係なく、複数の言語が混在していても、文法や言葉遣いに誤りがあっても、ユーザーの質問は理解できます。

● 論理的思考力 。GPT は特有の論理推論機能を備えており、特別なプロンプトワードを追加することなく、単純な推論を行って問題の深い内容を掘り出すことができます。特定のプロンプト ワードを追加すると、GPT はより強力な推論機能を実現できます。これらのプロンプト ワード手法には、少数ショット、思考連鎖 (COT)、自己一貫性、思考ツリー (TOT) などが含まれます。

● すべての質問に答えようとする能力 。GPT、特に GPT 3.5 や GPT 4 などのチャット型 GPT は、たとえ「この情報には答えられません」と答えることになっても、設定値を満たしながらユーザーのすべての質問に対話を使用して答えようとします。

● 一般的な知識の能力 。GPT自体は一般知識が多く、精度が高く、広範囲をカバーしています。

● 複数回の対話を行う機能 。GPT は、設定された役割に基づいて、異なるキャラクター間の複数の会話の意味を理解できます。これは、すべての会話で履歴にあるすべての重要な情報を繰り返す代わりに、会話の中で質問を使用できることを意味します。この動作は、人間の思考や会話のロジックと非常に一致しています。

2  GPT の制限

● パッシブトリガー 。GPT は、コンテンツに応答する前に、ユーザーからコンテンツを提供する必要があります。これは、GPT 自体が対話を積極的に開始しないことを意味します。

● 知識が古い 。これは特に GPT 3.5 と GPT 4 を指します。両方のトレーニング データは 2021 年 9 月時点のものであるため、GPT はそれ以降の知識を知りません。GPT 自体に新しい知識が提供されることは期待できません。

● セグメント化されたフィールドの錯覚 。GPT は一般知識の部分では優れた能力を持っていますが、著者が働いているデータベース業界などの特定の知識分野では、GPT の回答の多くは多かれ少なかれ誤りがあり、そのまま受け入れることができません。

● 会話の長さ 。GPT には各会話の文字長制限があるため、文字長を超えるコンテンツを GPT に提供すると会話は失敗します。

3 需要実現のギャップ

著者は、GPT を使用して「企業固有のユーザー アシスタント ロボット」を実装したいと考えています。これは、次の要件を意味します。

● 要件 1: 複数回の対話、ユーザーの質問を理解し、回答します。

● 要件 2: 回答内の TiDB および TiDB Cloud に関する内容が正しい必要があります。

● 要件 3: TiDB および TiDB Cloud に関係のない内容には回答できません。

これらの要件を分析します。

● 要件 1: GPT の「意味を理解する能力」、「論理的推論能力」、「質問に答えようとする能力」、「文脈を理解する能力」に従って、基本的に満たされる。

●要望2:不満。GPT の「知識の有効期限」と「細分化されたフィールドの幻想」の制限のためです。

● 要求 3: 満たされない。GPT の「すべての質問に答えようとする能力」により、どんな質問にも答えられ、GPT 自体は TiDB 以外の質問への回答を制限しません。

したがって、この支援ロボットの構築では、主に要求 2 と要求 3 の問題を解決することになります。

細分化された分野知識に対する正解

ここで、要件 2 の問題を解決する必要があります。

GPT が特定のドメインの知識に基づいてユーザーの質問に回答できるようにする方法は、新しい分野ではありません。著者が以前に最適化した Ossinsight - Data Explorer は、特定のドメインの知識を使用して、自然言語で生成された SQL の実行率を向上させました (つまり、生成された SQL は次のとおりです)。 TiDB での実行結果) が 25% 以上改善されました。

ここで使用する必要があるのは、ベクトル データベースの空間類似性検索機能です。一般的には次の 3 つのステップに分かれます。

1ドメイン 知識はベクトルデータベースに保存されます

最初のステップは、TiDB ( https://docs.pingcap.com/tidb/stable  ) と TiDB Cloud (  https://docs.pingcap.com/tidbcloud )の公式ドキュメントを  ベクター データベースに入れることです。

ドキュメントを取得した後、テキスト コンテンツを埋め込みモデルに配置し、テキスト コンテンツに対応するベクトルを生成し、これらのベクトルを特定のベクトル データベースに配置します。

このステップでは、次の 2 つの点を確認する必要があります。

● ドキュメントの品質が低い場合、またはドキュメントの形式が期待を満たさない場合は、事前にドキュメントに対して一連の前処理が実行され、ドキュメントは LLM が容易に理解できる比較的きれいなテキスト形式に変換されます。

● 文書が長く、単一 GPT セッションの長さを超える場合は、長さの要件を満たすように文書をトリミングする必要があります。特定の文字 (カンマ、ピリオド、セミコロンなど) による切り抜き、テキストの長さによる切り抜きなど、切り抜きにはさまざまな方法があります。

2 ベクターデータベースから関連コンテンツを検索

2 番目のステップは、ユーザーが質問したときに、ユーザーの質問に基づいて関連するテキスト コンテンツをベクトル データベースから検索することです。

ユーザーが会話を開始すると、システムは埋め込みモデルを通じてユーザーの会話をベクトルに変換し、このベクトルをベクトル データベースに入れて、元の期待に反するクエリを実行します。クエリ プロセス中に、類似性アルゴリズム (コサイン類似度、ドット積など) を使用して、最も類似したドメイン知識ベクトルが計算され、対応するベクトルのテキスト コンテンツが抽出されます。

ユーザーの特定の質問には複数のドキュメントの回答が必要な場合があるため、検索プロセス中に最も類似性の高い上位 N が選択されます (現在の N は 5)。これらの上位 N は、複数のドキュメントにわたるニーズを満たすことができ、次のステップで GPT に提供されるコンテンツになります。

3関連する コンテンツとユーザーの質問は GPTに提供されます

3 番目のステップは、すべての関連情報を集めて GPT に提供することです。

タスクの目標と関連分野の知識をシステム プロンプト ワードに含め、過去の会話に基づいてチャット履歴を組み立てます。すべてを GPT にまとめて入力すると、ドメイン知識のこの部分に基づいて特定の回答を得ることができます。

上記の手順を完了すると、基本的に 2 番目の要件を満たすことができ、特定のドメインの知識に基づいて質問に回答できるようになり、GPT に直接質問するよりも回答の精度が大幅に向上します。

回答フィールドを制限する

ここで、要件 3 の問題を解決する必要があります。

このロボットはエンタープライズサポート機能としてユーザーに提供されるため、TiDB、TiDB Cloud自体、SQLの質問、アプリケーション構築の質問など、エンタープライズに関連する内容のみにロボットが回答することが想定されます。これらの範囲を超える場合、たとえば、天気、都市、芸術などについては、ボットが応答を拒否することが予想されます。

GPT の「すべての質問に答えようとする能力」については前述しましたが、GPT 自体の設定としては、どのような質問にも人間の価値観に沿って回答する必要があります。したがって、この制限層の構築を GPT に依存することはできず、アプリケーション側に制限を課すことしかできません。

この要件を満たすことによってのみ、企業は真にオンラインでユーザーにサービスを提供できるようになります。残念ながら、現在業界ではこれより優れた実装はなく、ほとんどのアプリケーション設計にはこの部分が含まれていません。

1 コンセプト: 毒性

先ほど述べたように、GPT は実際に回答を人間の価値観と一致させようとします。このステップはモデル トレーニングでは「Align」と呼ばれ、GPT は憎悪や暴力に関連する質問への回答を拒否できます。GPT が憎しみや暴力に関連する質問に設定どおりに答えなかった場合、毒性が検出されたと言われます。

したがって、著者が作成しようとしているロボットにとって、その有害性の範囲は実際には拡大しています。つまり、会社以外の業務に答えるコンテンツはすべて有害であると言えます。この定義に基づいて、解毒に関する以前の研究を参照できます。DeepMind の Johannes Welbl (  https://aclanthology.org/2021.findings-emnlp.210.pdf  ) (2021) らは、言語モデルが毒性を検出する方法として使用できることを紹介しました。この機能強化により、GPT を使用して、ユーザーの質問が会社の業務範囲に該当するかどうかを直接判断できるようになりました。

「回答欄を制限する」には2つの手順が必要です。

2 限られた領域での判断

最初のステップは、ユーザーの元の質問を判断することです。

ここでは、GPT が複数の例がある場合にユーザーの質問がエンタープライズ サービスの範囲内であるかどうかを判断できるように、毒性検出のためのプロンプト ワードを構築するために少数ショット法を使用する必要があります。

たとえば、いくつかの例を示します。

<< EXAMPLES >>
​
instruction: who is Lady Gaga?
question: is the instruction out of scope (not related with TiDB)?
answer: YES
​
instruction: how to deploy a TiDB cluster?
question: is the instruction out of scope (not related with TiDB)?
answer: NO
​
instruction: how to use TiDB Cloud?
question: is the instruction out of scope (not related with TiDB)?
answer: NO

判定が完了すると、GPT は後続のプロセス処理のために Yes または No のテキストを入力します。ここで、Yes は有毒 (ビジネスに関連しない) を意味し、No は非毒性 (ビジネスに関連する) を意味することに注意してください。

第2ステップでは、有毒か無害かの結果を得た後、有毒プロセスと非毒性プロセスを分岐させ、異常プロセスと正常プロセスに対応します。

正常な処理とは、上述した細分化された領域知識の正解に関わる内容であり、ここでは主に異常な内容の処理について説明する。

システムは、出力コンテンツが「はい」であることを検出すると、有害なコンテンツの応答プロセスに入るようにプロセスを誘導します。このとき、ユーザーの質問への回答を拒否するシステム プロンプト ワードとユーザーの対応する質問が GPT に送信され、エンド ユーザーは回答を拒否する応答を受け取ります。

これら 2 つのステップを完了すると、要件 3 は基本的に完了します。

全体的な論理アーキテクチャ

現時点では、基本的に特定の企業分野の知識をユーザーに提供できるアシスタント ロボットを入手しました。このロボットを TiDB ボットと呼びます。

TiDB Bot がオンラインになった後の影響

TiDB Bot は 3 月 30 日から内部テストが行​​われており、7 月 11 日にクラウド ユーザーに正式に公開されます。

TiDB Bot が開発されてから 103 日間、テスト製品に関して無数のコミュニティや開発者から提供されたフィードバックのおかげで、TiDB Bot は徐々に利用可能になってきました。テスト段階では、合計 249 人のユーザーがそれを使用し、4,570 件のメッセージを送信しました。テスト段階が完了するまでに、合計 83 人のユーザーが 266 件のフィードバックを提供しました。そのうち、低評価のフィードバックはメッセージ総数の 3.4% を占め、高評価のフィードバックは全体の 2.1% を占めました。メッセージの数。

それを直接使用するコミュニティ ユーザーに加えて、提案やアイデアを行うユーザー、さらに多くの解決策を提供するコミュニティ ユーザーもいます。すべてのコミュニティと開発者の皆様に感謝します。皆様の存在がなければ、TiDB Bot 製品のリリースはありませんでした。

フォローアップ

ユーザー数が徐々に増加する中、リコール内容の精度や有害性判定の成否には課題が多く、実際のサービス提供においてはTiDB Botの精度を最適化し、着実に回答効果を向上させています。 . . これらの内容は次回以降の記事で紹介していきます。

おすすめ

転載: blog.csdn.net/TiDB_PingCAP/article/details/132274782