「AIサービス」連載「象をなでる、藪をつつく」
1 実験の趣旨と条件設定
公開日:
1-1. 生成AIと取扱説明書
ChatGPTやGeminiといった生成AIを多くの人が利用するようになって何年か経ちました。生成AIを実際の用途に役立てるために、さまざまな分野で工夫や試行錯誤が行われています。
弊社の主要業務の1つである説明書作成の分野でも、各種の説明や案内に生成AIを利用するための試みが始まっています。
説明や案内を行う際に、正しい情報を提供するのと同じくらい重要なことは、正しくない情報や不要な情報を与えないことです。けれども、生成AIは、いまのところこれが苦手です。一般的には妥当な場合が多いけれども個別の状況に即して見たときには適切ではない情報を返してきたり、一見もっともらしく見えるけれども実は誤っている情報を作り出してきたりします。
これはハルシネーションと呼ばれる現象で、生成AIに回答のしかたを指示するだけではなかなか解消されません。これが生じるのがたとえばプライベートでの情報収集や、組織内部の情報システムで情報を受け取る側がある程度事情に通じているという場合には、問題はそれほど大きくならないでしょうが、商品の取扱説明のように、情報を提供する相手が不特定多数ということになると、大きな問題が生じかねません。生成AIを本格的な業務に利用する分野がいまのところもうひとつ広がりきらない理由のひとつです。
1-2. RAGの活用
このハルシネーションをカバーしようというのでよく使われるのが、RAGという仕組みです。たとえば、ある製品の使いかたについて答えさせたい、という場合に、生成AIが蓄積した厖大な情報を制限なく使って回答を生成してもらうかわりに、その製品の製品情報や取扱説明書などのデータをあらかじめ用意しておいて、回答を生成する際の情報源を用意しておいたデータに制限します。
情報を探してまとめるのは生成AIに任せますが、回答を生成するときにAIが参照する情報源を用意しておいたデータに限定することで、適切な回答が返ってくる可能性を高め、不適切な回答が生成される確率を下げようというわけです。(図1-1)
弊社でもいま、この生成AIとRAGを組合わせたユーザーサポートシステムの構築について、Difyというサービスを利用していろいろな試みを行っています。Difyを使うと、比較的容易に生成AIを組み込んださまざまなサービスを作ることができます。また、RAGに使うデータを作るのも生成AIに設定や指示を与えるのも手軽にできるので、いろいろに条件を変えてRAGの動作やハルシネーションの起こり方を見てみるのには非常に便利なのです。
この記事では、Difyで作ったシンプルなRAGシステムで生成AIにいろいろな指示を与えて、ハルシネーションが抑えられるかどうか試す様子を見ていただこうと思います。
1-3. 実験の目的と環境
すぐ上で少し書きましたように、今回の実験の目的は、生成AIの返答からなるべくハルシネーションを減らし、与えた情報源をもとにした手堅い返答をさせるためにはどうすればいいか探ることです。生成AIを組み込んだ確実性の高い案内システムを構築するには、知っていることについてだけ確実に回答し、知らないことについては分からないと答えるふるまいが必要になります。そうしたふるまいをしてもらうには、生成AIにどのような指示を出せばいいのか。そのノウハウを探っていきます。
今回の実験は、以下のような環境で行いました。
OS: Windows 11 Pro (Intel版)
実行環境: Google Chrome
LLM: gpt-4o-mini
上記の環境で稼働するDifyで、入力された質問にたいして、生成AIが情報源となるデータを参照して回答を生成する、という単純なチャットフローを構成して実験を行いました。
そして、何に関する質問に答えることにするか、というところですが、今回は仮想の装置(図1-2)を想定して、その操作方法を記述した取扱説明を作りました。それをRAGの情報源とした上で、色々なタイプの質問を与えて、AIに与えた指示や設定によってどのような回答が返ってくるかをためしました。
図1-2の左側、三角の上下左右ボタンと丸い設定/決定ボタンがあるのが操作部で、右側が機能A, B, Cの状態を示す表示部になっています。水色の上下ボタンで水色の枠を動かして、設定する機能を選択し、オレンジ色の左右ボタンで、水色の枠で囲まれた機能の設定を変更して、設定/決定ボタンを押すと設定が終了する、という見当です。
機能AはONにするとa出力を自動調整します。機能Bはb出力の種類をα、β、γの三種類から選択します。機能Cはc出力の大きさを調整します。
以上今回は前説ということで、次回は実際の実験結果とその比較について書きたいと思います。
