All NLP Cloud plans can be stopped anytime. You only pay for the time you used the service. In case of a downgrade, you will get a discount on your next invoice.
ドメイン知識(社内文書、契約書、書籍など)に基づいた質問に答えることは難しい。この記事では、ChatDolphin、LLaMA、ChatGPT、GPT-4...のようなモデルで意味検索とテキスト生成を混合し、非常に高い精度でこれを達成するために、検索拡張生成(RAG)と呼ばれる高度なテクニックを探求します。
ドメイン知識に関する質問に答えるには、まずAIモデルに何らかのコンテキストを送り、それに関する質問をする必要がある。
例えば、次のような文脈を送ることができる:
All NLP Cloud plans can be stopped anytime. You only pay for the time you used the service. In case of a downgrade, you will get a discount on your next invoice.
ここで、次のような質問をしてみてはどうだろう:
When can plans be stopped?
AIはこう答えるだろう:
Anytime
詳細については、質問応答に関するドキュメントを参照してください。 これ.
この方法の問題点は、コンテキストのサイズ(つまり入力テキストのサイズ)が限られていることだ。そのため、全ドメインの知識をコンテキストとして送ることはできない。
エンドユーザーが実際のサポートエージェントに連絡することなく、チャットボットに製品に関する質問をすることができるように、製品ドキュメントのすべてを知っているサポートチャットボットを構築したいとしましょう。ほとんどの場合、あなたのドキュメントは数百語から数千語、あるいは数百万語で構成されているはずです。
この制限を克服し、非常に大きな文書に対して質問応答を実行する方法を探ってみましょう。
質問応答に関しては、2種類のテクノロジーが使用できる。テキスト生成(ジェネレーティブAI)と意味検索である。
最初のテキスト生成は、基本的に上で示したものです。通常、ChatDolphin, LLaMA, ChatGPT, GPT-4...のような高度なテキスト生成モデルを使います。これは人間の質問を理解し、人間のように応答することができます。しかし、大きな文書には対応できない。あなたのドメイン知識で生成AIモデルを微調整することは、モデルに知識を追加する良いテクニックではないので、うまくいかないでしょう。
セマンティック検索とは、基本的にはGoogleと同じように文書を検索することだが、自分自身のドメイン知識に基づいて検索することである。
そのためには、内部文書をベクトル(「埋め込み」ともいう)に変換する必要がある。そして、質問もベクトルに変換し、質問に最も近いドメイン知識の部分を検索するために、ベクトル検索(「意味類似性」とも呼ばれる)を実行する必要があります。
最初の解決策は、埋め込みをPG Vectorのような専用のベクトル・データベースに保存することです。もう一つの解決策は、独自の意味検索モデルを独自のドメイン知識でエンコードし、GPU上に展開することです(これは最高の応答時間を提供するため、NLPクラウドで提案する解決策です)。そして、ベクターDBの準備ができたら、あるいはモデルができたら、自然言語で質問することができ、AIモデルは質問に最もよく答えるドメイン知識の抽出物を返します。
意味検索は通常、非常に高速で比較的安価である。また、テキスト生成の微調整戦略よりも信頼性が高いので、AIの幻覚問題に直面することはない。しかし、質問に適切に「答える」ことはできない。単に質問への答えを含むテキストを返すだけだ。そして、質問の答えを見つけるためにテキスト全体を読むのはユーザー次第である。
詳しくは、セマンティック検索に関するドキュメントをご覧ください。 これ.
朗報は、セマンティック検索とジェネレーティブAIの両方を組み合わせることで、高度な結果を得ることが可能だということだ!
ドメイン知識に関する質問に回答するために、NLPクラウドでは次のような戦略を採用しています。まず、セマンティック検索でリクエストを行い、質問に最も適したリソースを取得します。次に、テキスト生成を使って、人間のようにこれらのリソースに基づいて質問に回答します。
例えば、私たちがHPプリンターの再販業者であり、ウェブサイト上で顧客の質問に答えたいとします。
まず、埋め込みを計算してベクトルデータベースに格納するか、独自の意味検索モデルを作成する必要があります。ここでは3つの例のみで構成しますが、NLPクラウドで意味検索を使用する場合、実際には100万例まで含めることができます。単純にCSVファイルを作成し、その中に以下を入れます:
HP® LaserJets have unmatched printing speed, performance and reliability that you can trust. Enjoy Low Prices and Free Shipping when you buy now online.
Every HP printer comes with at least a one-year HP commercial warranty (or HP Limited Warranty). Some models automatically benefit from a three-year warranty, which is the case of the HP Color LaserJet Plus, the HP Color LaserJet Pro, and the HP Color LaserJet Expert.
HP LaserJet ; Lowest cost per page on mono laser printing. · $319.99 ; Wireless options available. · $109.00 ; Essential management features. · $209.00.
次にCSVデータセットをNLP Cloudにアップロードし、「モデルを作成」をクリックします。しばらくすると、独自のドメイン知識を含む独自のセマンティック検索モデルが準備され、それを使用するためのプライベート API URL を受け取ります。
NLP Cloud Pythonクライアントを使って、新しいモデルに質問してみましょう:
import nlpcloud
# We use a fake model name and a fake API key for illustration reasons.
client = nlpcloud.Client("custom-model/5d8e6s8w5", "poigre5754gaefdsf5486gdsa56", gpu=True)
client.semantic_search("How long is the warranty on the HP Color LaserJet Pro?")
このモデルは、短いレスポンスタイムで素早く以下を返す:
{
"search_results": [
{
"score": 0.99,
"text": "Every HP printer comes with at least a one-year HP commercial warranty (or HP Limited Warranty). Some models automatically benefit from a three-year warranty, which is the case of the HP Color LaserJet Plus, the HP Color LaserJet Pro, and the HP Color LaserJet Expert."
},
{
"score": 0.74,
"text": "All consumer PCs and printers come with a standard one-year warranty. Care packs provide an enhanced level of support and/or an extended period of coverage for your HP hardware. All commercial PCs and printers come with either a one-year or three-year warranty."
},
{
"score": 0.68,
"text": "In-warranty plan · Available in 2-, 3-, or 4-year extension plans · Includes remote problem diagnosis support and Next Business Day Exchange Service."
},
]
}
ここで、最もスコアの高い答えを取り出す(複数の答えを完璧に取り出すこともできる): "Every HP printer comes with at least a one-year HP commercial warranty (or HP Limited Warranty). Some models automatically benefit from a three-year warranty, which is the case of the HP Color LaserJet Plus, the HP Color LaserJet Pro, and the HP Color LaserJet Expert."
この回答は正しいのですが、ユーザーが回答を得るためにかなり長い文章を読む必要があるため、あまりユーザーフレンドリーではありません。そこで今度は、ChatDolphinモデルを使って、質問応答エンドポイントに同じ質問をもう一度してみましょう。セマンティック検索の回答をコンテキストとして使います:
import nlpcloud
client = nlpcloud.Client("chatdolphin", "poigre5754gaefdsf5486gdsa56", gpu=True)
client.question(
"""How long is the warranty on the HP Color LaserJet Pro?""",
context="""Every HP printer comes with at least a one-year HP commercial warranty (or HP Limited Warranty). Some models automatically benefit from a three-year warranty, which is the case of the HP Color LaserJet Plus, the HP Color LaserJet Pro, and the HP Color LaserJet Expert."""
)
次のような答えが返ってくる:
{
"answer": "The warranty lasts for three years."
}
なかなかいいんじゃない?
ChatDolphin、LLaMA、ChatGPT、GPT-4などのような生成AIモデルの最近の進歩にもかかわらず、限られたリクエストサイズのために、質問応答のための特定のドメイン知識でこれらの偉大なモデルを使用することは不可能です。これらのモデルを微調整することは、残念ながらこのようなユースケースではうまくいきません...。
良い戦略は、RAGシステムを導入することである。まず、文書をエンベッディングに変換してベクトル・データベースに格納するか、文書から独自の意味検索モデルを作成することによって質問に答え、次に、最初の質問に対する人間の答えを返すために、生成AIに基づく通常の質問応答モデルを使用する。
この戦略を実行したい場合は、迷わずNLPクラウドで独自のセマンティック検索モデルを作成してください: 関連ドキュメントはこちら!
Mark
NLPクラウドのアプリケーション・エンジニア