はじめに
RAGに関する説明は別途行います。その為、今回はあくまで前提としてRAGを活用したシステムというものが分かっているうえで進めさせていただきます。
さて、今回はシステム稼働後に要望をいただいた機能5選について共有させていただきます。ぜひ、今後のシステム開発の参考にしていただけたら幸いです。
こんな方にお勧め
①RAGを用いたシステム開発を行っている
②生成AIを活用したシステム開発を行っている
③生成AIを活用したシステムを利用している
RAGを用いたシステムとChatGptなどのLLMの違い
前提知識として、RAGを用いたシステムはAPI連携を活用しChatGptなどに直接情報を入力せずに、前提となる知識は別途DBへ格納しその情報を必要に応じて提供することで、企業や自治体などの独自の情報を検索することが可能なシステムです。
その為、LLMを直接利用するよりももっと踏み込んだ質問を投げかけることが可能です。しかし、それならば同じようにAPI連携を用いてLLMを使い、全文をプロンプトにいれれば解決するのではないか、と思われるかもしれません。
その点においては、RAGはベクトル情報というテキストを数値化した値を持っていることを強みとして活用できます。
LLMは文章を与えすぎると、中身の読解において最初と最後以外の文章が進むにつれて徐々に理解度が薄くなる傾向にあります。
その為、ベクトル情報がプロンプトに近いものだけをピックアップして抽出し、LLMへ提供するというRAGの技術を用いることで、LLMが回答するものに必要な情報を渡すことが可能となっております。
その点において、LLMへ直接プロンプトを実行するよりもRAGを用いたシステムが勝っている点と言えます。
要望をいただいた5選
そんな前置きを経たうえで早速、5選について記載したいと思います。
①個人情報および機密情報を入力してしまった場合に制限したい。
②LLMを管理者で設定できるようにしたい。
③資料や学習情報を修正、投入できるユーザーを権限が欲しい。
④根拠情報があるページや場所が分かるようにして欲しい
⑤一般論は含まれないようにして欲しい。
理由はそれぞれ説明するほどのことはないと思いますが、みなさんどのような感想を抱かれたでしょうか?
意見は各々あるかと思いますので、必要に応じてシステムに入れていただけるとよいかと思います。
それを踏まえて、少し開発の観点を補足をしたいと思います。
個人情報と機密情報の入力に関する制限
入力に制限をかける手法はいくつかあると思いますが、汎用的に対応する手法としてわたしはLLMを活用することにしました。
個人情報や機密情報が入力された場合は、1を返却してくださいとすることで返却された値が1の場合は、処理を中断しプロンプトの修正を促すメッセージを表示させるようにしています。
そして、内容確認して特に問題が見受けられない場合などには『警告を無視して実行する』チェックをつけて再度プロンプトを実行していただくことで制限をかけることが出来ています。
この実装を行ううえでの注意点として、制限をかける際は可能な限り具体例も踏まえて、記載しましょう。LLMは指定された内容が抽象的であるほど、正確に回答を出すことが出来なくなります。
よく、LLMを理解力が高く頭の良い新人社員と例えられることがあります。
これは、理解力が高く教えてあげれば聞いたことはすぐに理解し、理解した情報から更に理解を広げてくれる。まさに『1を知って10を知る』を体現する存在です。
その分、新人社員であるため、知らないことは回答できないのでちゃんと具体的に教えてあげようという例えです。
例)
LLMへプロンプトを実行する前にその内容の精査を行いたい。
個人情報や機密情報が含まれている場合は、1を返却し、含まれない場合は0を返却してください。具体的な例は以下です。
個人情報
氏名 例)田中 太郎、Taro Tanaka
生年月日 例)1999年2月22日、1999/2/22、平成11年2月22日
住所 例)福岡県福岡市西区AAA町1-1-1
性別 例)男、男性
機密情報
IPアドレス 例)10.10.10.10
財務情報 例)売上高1000万円、利益100万円
このような書き方です。実際はもっと多いですが、注意点として記載を増やすほどLLMが制限をかける幅が広がり意図せず処理を止める可能性が広がります。
その為、少しずつ検証しながら記載を増やしていくことがポイントです。
LLMの指定
これは自治体などのお客様によるのですが、利用してよいLLMが決まっている場合があります。
複数LLMを利用できるようにしている場合などに、利用できるものを選択式にしていないと必要以上に利用できてしまい、機能過多が仇となるパターンがあります。
それも踏まえて、様々なLLMを利用できる場合にはその制限をシステム管理者で行えるようにしておきましょう。
資料や学習情報を更新できるユーザー権限
こちらは機能というよりも制限に関する内容です。
利用者と管理者で権限を2パターンに割り振りできるのが一般的ですが、更にただ使うだけの人とユーザーやデータを管理する人、資料取込や学習情報を管理する人と3パターンで切り分けをしたいというお話でした。
これに関しては純粋にどのように運用したいかによります。
その為、運用パターンの1つとして実装するのが好ましいですね。
根拠情報があるページや場所が分かるようにしたい
根拠資料を表示することは、RAGの技術を用いたシステムを実装するうえでほぼ必須といえるほどに大切なことです。特にどこにその情報があるか存在するかが分かればなお、その信ぴょう性が増します。
最近のLLM(ChatGptやGemini)は、取り込んだ情報にページ数が含まれていると、ページ数まで読み込んで返答を作ってくれます。
なので、なるべく取り込む情報にページ数を含んで取り込むことがおすすめです。
一般論は含まれないようにする
一般論を含めたくない。この要望は、実はケースバイケースだったりします。
例えば、法律や国が定めた制度などに関わるものに関してはネットの制度に関する情報も回答に含まれて欲しい場合があります。
ただ、基本的にはRAGは取り込んだ情報だけで回答を生成することが好まれる為、回答を生成する前提条件に、『通常は一般論を含めない。ただし、法律などに関する情報はその限りではない。』などの細かい情報を設定してあげるのがいいです。
まとめ
今回、現在構築しているシステム稼働後に要望をいただいた中で共有したい5選をピックアップしました。これらは、導入しておくと喜ばれる可能性は高いと思います。
これを呼んだ方もぜひ、システムを作っている場合は参考にしてみてください。