生成AIの業務活用についてのさまざまな悩みに答える新連載。第1回は、社内情報の活用で話題のRAG(検索拡張生成)を取り上げ、具体的なシステムに落とし込む手順について解説します。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
生成AI(人工知能)に取り組む企業は爆発的に増加しています。しかし、急速に進化する新しい分野だということもあり、分からないことだらけという人は多いのではないでしょうか。本連載では、生成AIの業務活用を進める上でのさまざまな疑問に答えます。
第1回で取り上げるお悩みはこちらです。
うちも話題のRAGをやりたいが、どう進めればいいのかが分からない。やり方が知りたい
今回は企業が社内の情報をAIで生かすための手法として広がっているRAG(検索拡張生成)の導入プロセスを詳しく説明します。
生成AI、特にLLM(大規模言語モデル)の活用を語る上で、必ず登場するのがRAGです。
RAGとは「外部から情報を取得し、その結果と質問を合わせてLLMに問い合わせを行う仕組み」を指します。
ここでいう「外部」とは、LLMやLLMに問い合わせを行うアプリケーションの外を指します。例えばインターネット上の情報検索や、社内データベースからの情報取得などが挙げられます。
これにより、LLMが学習していない情報(社内情報や最新情報)に関連した質問についての回答精度の向上が図れます。
一般的には、社内データを「ベクトルデータベース」に登録し、これを問い合わせに使うRAGが主流です。ベクトルデータベースでは、データを意味や関係性を表現する数値に変換し、管理します。
処理の流れは下の図のようになります。
ユーザーが質問文(プロンプト)を生成AIアプリケーションに入力すると、この文でベクトルデータベースが自動的に検索され、意味的に近い情報が入手できます。この検索結果を、もともとのユーザーの質問文と合わせてLLMに問い合わせをすることで、社内の情報に基づく回答を得ることができます。
LLMが学習していない質問に対する対策としては、RAG以外に、モデル自体に変化を加える「ファインチューニング」と呼ばれる手法もありますが、RAGと比較するとまだハードルが高い状態といえます。
RAGでは、今日に至るまで新たな実装方法や精度改善手法が登場しています。昨今話題の「AIエージェント」に組み込まれることも多く、LLMを活用する上での重要性は変わりません。
RAGの概要を理解できたところで、社内導入の進め方について説明します。概要を下の図に示しました。
フェーズは大きく「仕様検討」「実装」「評価」「改善」の4つに分かれます。
進め方としては、各フェーズを1回しか実施しない代わりに丁寧に進める「ウオーターフォール」よりも、1回にかける時間は少なくなる代わりに4つのフェーズを複数回繰り返す「アジャイル」な進め方がお勧めです。
これは、1回のサイクルで求める水準の精度に達するのは稀(まれ)で、進めながら方向性を変更するといった軌道修正が生じるためです。
開発担当チームで成果物ができたら、「ユーザー評価」で実際の利用者、あるいは利用部門(以下、ユーザーと表記)に試用と評価をしてもらいましょう。
例えば、情報システム部門が検討し、事業部門が利用する場合のように、導入に向けて検討するチームとユーザーが異なると、想定した利用方法やユーザーの期待値と実際の結果にズレが生じることがあります。
ユーザー評価の結果に基づき、「現場での利用決定」「改善(継続検討)」「導入断念(中止)」の判断を行います。
以下では、各フェーズとそのポイントについて説明します。
仕様検討フェーズでは、LLMとRAGを利用してどんな課題を解消したいのかを考えます。まずは大ざっぱで構いません。ユースケースが決まったら、徐々に詳細化を行い、実現方法まで詰めていきます。
このフェーズにおけるポイントは3つあります。
1.ユースケースや実現方法はなるべく絞り込む
LLMは多様なタスクに適用できるため、解消したい課題を多く詰め込んだ手広いユースケース(用途)を考えたくなりますが、初めのうちはピンポイントに絞り込むことをお勧めします。
また、RAGを使用しても精度100%を保証するのは難しいため、タスクの完全自動化を目指すのではなく、人のチェックを入れられる用途を検討するとよいかと思います。
ユースケースと併せて、使い方の絞り込みもしましょう。下に絞り込みの例を示します。
絞り込み対象 | 例 |
---|---|
ユースケース | ・社内システムの使い方に関する問い合わせ専用とする ・与えた情報を社内規定のフォーマットに整形するタスクに特化する |
使い方 | ・ベクトルDBに登録するドキュメントのフォーマットはtxtファイルのみとする ・DBに情報を登録できるのは管理者のみで、ユーザーは質問しかできない |
絞り込みを行うことで、本当に必要な機能や、運用を見越した上での精度向上に注力できます。
うまくいきづらい例の一つとして、ベクトルデータベースに登録するドキュメントのフォーマットを絞り込まなかった場合を考えてみます。
ドキュメントのフォーマットはPDF、Word、Excelなどさまざまですが、情報の抽出における独特の癖により 、精度向上を目指す上で対策が必要となることがあります。対策が中途半端だと、思うようなユーザー評価が得られない可能性が出てきます。
このような事態を防ぐためにも、まずはフォーマットを絞り込むとよいでしょう。一定の精度が出るようになったら絞り込みを少しずつ緩和し、実績を積み上げていくようにすると、手戻りが発生しづらくなります。
ただし、絞り込み過ぎにより、課題が解決できなくなるのでは本末転倒です。用途に応じて、どこまで許容できるかバランスをとることも重要です。
2.精度目標と効果を定量化する
精度については、目標を整理しておくことも重要です。
精度目標はユースケースの特性によって変化します。例えば適用する業務に求められる正確性や、ユーザーのリテラシー/業務熟練度などを考慮する必要があります。
精度目標値はユーザーの期待値のコントロールにも有用です。
LLMやRAGは社会的に大きな注目を集めており、暗黙的に高すぎる期待値を持っているユーザーは多いかと思います。 一方で、低すぎる値にすると有効性が判断しづらくなります。目標値は高すぎても低すぎても適切とは言えません。
ユースケースの特性の他、費用対効果を考慮すると妥当性のある目標値が見えてくるかと思います。なお、費用については、LLMやRAGの利用にかかるコストの考慮を忘れないよう注意しましょう。
LLMは、OpenAIのモデルのようにクラウド上にあるモデルを利用する場合と、自社の持つマシンの上で動作させるローカルモデルを利用する場合があります。
Copyright © ITmedia, Inc. All Rights Reserved.