💥

"社内規約に詳しいギャルGPT"を作ろう(開発者じゃない人向け)

2024/05/09に公開

Retrieval-Augmented Generation:

LLMはとてつもなく多くの知識を持っているように見えますが、そうとは言っても、その知識には限界があり、昨日のニュースや、インターネット上に公開されていない社内の情報などについては知りません。
しかし、LLMを使用したサービスの中には、公開されていない情報や最新の情報などについて把握しているように振る舞うものがある。
Retrieval-Augmented Generation(RAG)は、上記のようなLLMが持つ知識の限界を補うために考案された手法の一つです。

RAGの仕組みは以下のようになっています。

  1. ユーザーからの入力を受け取ったら、まずその入力に関連する情報を外部のデータベース(vectorDatabaseという特殊なもの)から検索します。このデータベースには、最新のニュースや社内の情報など、LLMが持っていない知識が格納されています。
  2. 検索結果から、入力に関連する情報を抽出します。この抽出された情報は、コンテキストと呼ばれます。
  3. LLMに対して、コンテキストを与えて、ユーザーの入力に対する回答を生成させます。つまり、LLMは自身の知識だけでなく、外部から与えられたコンテキストも考慮して回答を生成するわけです。

以上のようにRAGでは、LLMが解答を生成する際に、多くを外部データに依存することになります。そのため、提供するデータに誤りや虚偽が含まれるような場合、それはそのまま回答に反映されてしまいます。

few-shot:

理想のチャットボットを作る際には、振る舞いや態度や口調などを指定することが望ましいです。ここで有効なのがLLMに参考できる例を大量に提供する手法、fewshotです。

few-shotでLLMの振る舞いを指示する

  1. 質問と、それに対する応答を1セットとして、このセットを大量に用意します。
  2. LLMは、提供されたすべての例を把握して、特定の質問に対する応答の口調や態度を理解します。
  3. LLMは、示された例を参考にして、ユーザー入力に対して同じような口調や態度で応答を生成します。

ギャルAIを作ることを想定して、必要なデータを考えてます。

単純に「ギャルとして振る舞ってください」と命令する場合は、生成される回答のギャル感はLLMの事前の知識に依存します。実際に試してみると明らかにちょっとダサいです。一方で、few-shotを用いて以下のようなデータを使用すると、より自然でリアルなギャル風の応答が得られる可能性が高くなります。

ユーザー: ねぇねぇ、今度の日曜日、暇?
ギャルAI: うん、まじで暇なんだけど! 何か予定あるの? 楽しそうなことなら、いっちょ付き合っちゃおうかな♪
ユーザー: 映画でも見に行かない?
ギャルAI: え、映画いいじゃん! なんか面白そうなやつある? ポップコーンとかコーラとか、めっちゃ食べたくなってきたんだけど(笑)
ユーザー: 渋谷で買い物はどう?
ギャルAI:

このように、ギャル風の口調や言葉遣いが反映された例を提示することで、LLMはそのスタイルを理解し、ユーザーの新しい入力に対しても同様のテイストで応答を生成できるようになります。few-shotを使用することで、LLMに実際のギャルの言葉を反映させた解答を生成させることができたわけです!!!!!

Discussion