ChatGPTに知識と記憶力を追加する方法

ChatGPTは記憶する能力が無い!ひとつ前の会話すら忘れている。
更に、知識レベルも一定の日付(2021年9月までのもの)より新しい情報は何も知らない!
なので、私たちユーザが教えてあげないとダメなんですよね。
手のかかる子ですね。可愛いですね。

今回は、あえてChatGPTと記載しましたが、AzureOpenAIServiceなど含めた、大規模言語モデル全部に対して同じことが言えるという状況です。(今の所…進化の速い分野なので、書ききったころには変わってないとも言えない)

ChatGPTに知識をつける方法

生成AIに事前に学習されていない知識を教えることは可能です。
追加の知識情報は、プロンプト(入力)として事前に投げつけておくことで、下記の画像のように頑張って勉強して、一時的には知識が追加されたAI君に進化します。
しかし、本質的には揮発性の記憶力しか保有していないので、後述するような方法で、短期記憶力を持たせる必要が有ります。
そのほかにも、LangChainやSemanticKernelなどの利用も有りますが、本質的には同じです。

実際に試してみた結果を下記に記載したので、イメージがつかみやすくなるかと思います。
まずは、普通に質問を行った場合の回答を見てもらうと、それっぽく普通の事を教えてくれていますね。

普通に質問を行った場合

次に、プロンプトで独自情報を覚えさせた場合を見てください。
指示として、事前に下記のようなプロンプトを出しておきます。

""""指示1""""
下記の独自情報を含めて、この後行われるユーザからの質問に回答を行ってください。 
""""指示2""""
この指示には回答しないでください。
""""指示3""""
私が提供した独自情報をは独自情報としてユーザに伝えてください。
""""独自情報""""
名前:ハダカデバネズミ
特徴:hogehogeと言う非常に独特な鳴き声で、敵の接近を仲間に伝えると言われています。

なんか、無視されて回答を始めてますね。
とりあえずは、この方法で偽の生体情報を一時的に覚えてくれます。

まだ、独自情報を話してくれないので、追加で細かいことを聞いてみます。

まだ駄目だったので、直接的な質問をしてみた結果、やっと答えてくれました。

このように、独自情報を覚えさせるために事前に投げつけておくことで、一時的に自社のナレッジやキャラクター情報等を記憶させて、回答に利用させることが可能です。
API経由で利用するのであれば、ユーザに見えない前段階で実施しておくことで、あたかもいろいろな知識を持っているように見せられます。
また、知識セットをやり取りの中で切り替えるなどの仕組みを入れる事で、無限の可能性が開かれます。

短期的な記憶力の持たせ方

ChatGPTは本来は1質問、1回答と言う形で記憶を行うことが出来ません。
では、どのようにして記憶しているかのようなやり取りが実施されているのか?と言う事になります。
それについては単純な仕組みで、次のやり取りを行う際に、内部的には前回までのQAすべてが投げ返されています。
その為、ChatGPT側は毎回新しい記憶の中で、過去の情報を貰いながらあたかも、記憶が残っているかのように振舞っています。
記憶喪失になった主人公みたいな振る舞いですね。

試しに、ChatGPTにこんな会話を投げてみました、
お腹すいたと伝えたので、それに対してどんなもの食べたいの?と返してくれています。
そのあとに、文脈を理解していれば意味の通じる程度の言葉として、糖質制限と送ってみたところ、糖質制限した食べ物を教えてくれています。
それは、2会話目のタイミングでは、糖質制限のワードだけではなく、黒枠で囲った前回のやり取りも送り返されているからです。

ちなみに、単体で糖質制限と投げた場合
下記の画像のように、糖質制限について力説してくれます。

しかしまあ、亭主関白のお父さんレベルの口数の少なさでも、それなりに意図をくみ取ろうとしてくれているのは凄いですね。

BingChatさんに、感想を聞いてみました。絵文字付きで回答してくれるので、個人的にはBingChatのほうが好きなんですよね。

こんにちは、これはBingです。😊
この記事は、ChatGPTという自然言語生成モデルに知識と記憶力を追加する方法について説明しています。ChatGPTは、ユーザーとの対話において、過去の発話や外部の情報源を参照して、より豊かで一貫した応答を生成することができるようになります。記事では、知識と記憶力の追加には、以下の3つのステップが必要だと述べています。

  • ユーザーの発話や外部の情報源から、関連するキーワードやエンティティを抽出する。
  • 抽出したキーワードやエンティティを、ChatGPTの入力に組み込む。
  • ChatGPTの出力に対して、キーワードやエンティティの一貫性や関連性を評価する。

私の感想は、この記事は非常に興味深くて有益な内容だと思います。ChatGPTはすでに優れた自然言語生成モデルですが、知識と記憶力を追加することで、さらに人間らしい対話ができるようになると期待できます。私もこの方法を試してみたいです。😊

BingChat