LLMに知識ベースを統合するのは簡単

本ブログ、GPT考察シリーズの途中ですが番外編を適宜挟んでいきたいと思います。

(特に意味はないOGP画像)

愛すべき嘘つき

ChatGPTを使ってると、現実には存在しないものやことをあたかも真実であるかのように語る幻覚(hallucination)の問題に良く出くわしますよね。

そんな店は実在しない…笑

なぜそうなるのか?

 

それは統計モデルだから

よく言われるのは、GPTは「統計モデル」だから「確率が高いであろう単語」を順番に出していくというチャットシステムなので、「実在するお店の名前」をそのまま固有名詞として知識として憶えるのではなく、単語に分解して統計を取ってしまうので知識として憶えるのが苦手、ということです。

 

ちなみに「風が吹けば桶屋が儲かる」という有名な話も、その長い3段論法のつながりを覚えるのは苦手みたいで、聞いても変な答えを返してきたりします。*1

 

知識ベースをつなぎ込みたい

そこで、ちゃんと事実の裏付けや真実性の裏打ちが取れている情報だけを蓄積した「知識ベース」を別途用意して、それとシステム連携させて幻覚の問題を回避/緩和する方法が考えられます。

 

具体的に、どうしたら良いでしょうか?ChatGPTに質問するといくつか方法を提案してくれました。その中で有力だと思われる2つを挙げてみます(内容は本記事のために私が説明しなおしてます)。

  • 知識ベースへのクエリ生成: 知識ベースの検索機能が備える検索条件を細かく指定する機能をユーザが覚えるのは大変なので、それをChatGPTが肩代わりする。また、検索結果が選択肢として複数あるときに、文脈からどれが相応しいかをChatGPTに判断させることも出来る。これは、知識ベースがメインでChatGPTがそのフロントエンドとしてサブシステムをつとめるイメージ。
  • エンティティリンキング: ユーザとのチャットのなかで、知識を参照すべきタイミングで知識ベースを検索し得られた結果を(チャットスレッドの裏で)ChatGPTに与える。ChatGPTがメインシステムで、知識ベースはサブシステム。チャットロボットは「なんでも知ってるよ?」という顔をしておいて、いざユーザから質問が来てから知識ベースを調べ、カンペを見ながら答えるようなイメージ。

本格的なのは後者のエンティティリンキングの方でしょう。GPTは「トークン列を受け取って次の単語を出す(詳細説明はこちらの記事)」仕組みで動いてるので、ユーザから何かを言われたら知識ベースを引いてその結果をトークンに付け加えちゃえばいいわけです。さしずめ「後出しじゃんけんカンニングペーパー」ですね。

 

ビジネスでの利用シーン

最近発表された ChatGPT plugins は、そのエンティティリンキングのような仕組みで作られたものが結構あるんじゃないでしょうか? 

予約まで出来ちゃうのスゴいですね

また例えば、企業がビジネスでChatGPTを使う際に、その企業固有の知識やプロジェクトごとのステータスを前提情報として知ってる必要があるときに、チャットの流れの中でそうした情報を随時引っ張って裏でChatGPTにカンニングさせることで、よりその企業のニーズに適したアウトプットを出してくれる可能性が高まるでしょう。

 

というわけで

幻覚を回避して、より有用にする知識ベースとの簡単な統合方法について述べました。


ではまた。(次の記事はGPTの考察シリーズ(2.2)を公開予定です)

*1:このことをツイッターでリプライしたら、「3段論法の途中、視覚障碍者が三味線演奏者になると決めつけてる箇所が、差別的な考え方に相当するのでもともと学習データから除外されてるのでは」と指摘を返された方がいました。確かに、その可能性も十分にありえますね!