RAG前処理とは何か:回答品質を決める文書準備の完全整理
RAG前処理とは、検索拡張生成に用いる文書を構造と意味が保たれる形で分析し整理して、検索可能な断片へと作り上げる事前作業であり、モデルが根拠とする資料の品質をこの段階で決定づける処理です。
RAG前処理が必要な理由
モデルを変えても回答が良くならない場合があります。
生成AIを導入した機関でよく聞かれる話があります。良いモデルをつないだのに、いざ業務の質問には見当違いの答えが返ってくるというものです。原因をさかのぼるとモデルではなくモデルに与えた資料にある場合が少なくありません。行政文書や手引き、法令がPDFと韓国製ワープロ文書として積み上がっており、そのファイルをそのままテキストとして抜き出して投入したためです。
問題は、テキストだけを抜き出した瞬間に構造が消えることにあります。返納手続を説明する文書で国費と道費、残額と利子が多層のヘッダーに分かれた表を文章の羅列へ展開すれば、どの科目がどの条件に当たるのか分からなくなります。モデルはこの乱れた資料の上でもっともらしい文章を作り出します。回答品質が低い原因はたいていここにあります。
RAG前処理の正確な定義:テキスト抽出と何が違うのか
テキスト抽出とRAG前処理、三つの軸の違い
第一に、対象が異なります。テキスト抽出は文書に記載された文字を対象とします。RAG前処理は文字に加えて、見出しと本文の階層、表の行と列、図と説明の関係、脚注と本文のつながりまでを対象とします。文書を読むのではなく、文書の骨組みを併せて移す作業です。
第二に、目標が異なります。テキスト抽出の目標は内容を漏れなく取り出すことです。RAG前処理の目標は、後で質問が来たときに正確にその箇所が検索されるよう資料を配置することです。したがって同じ文書でも、どのような質問を受けるかによって断片の分け方が変わります。
第三に、成果指標が異なります。テキスト抽出は文字精度で測ります。RAG前処理は最終的な回答の精度で測ります。ある国税行政の検証では文書33件と361の設問で構成した評価セットを作り、構造化と検索の品質を併せて確認しました。前処理の段階だけを切り離して点数を付けることが難しいため、質問と正解の対をあらかじめ作っておく手続が事実上必須になります。
二つの作業は置き換えの関係にはありません。文字認識が不正確であれば、いくらうまく分けても誤った内容が検索されます。認識の上に構造復元を載せ、その上に断片分割を載せる順序が適切です。
回答品質を守るRAG前処理の6つの条件
実際の構築に入るRAG前処理の6つの条件
第一に、構造を保った形式へ変換することです。見出しと節、表、箇条書き、図の説明がそれぞれ何であるかの表示が残っていて初めて、検索の段階で活用できます。構造要素をタグで区分し、マークアップ形式と構造データとして併せて生成しておけば以降の選択肢が広がります。
第二に、断片の境界を文書の論理単位に合わせることです。文字数だけを基準に切れば表が途中で切れ、条項が二つに分かれます。節単位や表単位を優先の境界とし、長さはその次の条件として置くほうが安全です。
第三に、表を別途処理することです。表は文章と性質が異なるため、同じ方式で切って投入すると検索がうまくいきません。表全体を一つの断片として保ちつつ、その表がどの節に属するかを併せて付けておく構成が実用的です。
第四に、メタデータを併せて載せることです。文書の表題と発行機関、施行日、改定履歴、原本のページ番号が断片ごとに付いていて初めて、回答に根拠を提示できます。根拠を提示できない回答は業務では使われません。
第五に、個人情報を非識別化することです。公共データを検索の用途へ移す際には、個人を特定できる項目を隠すか置き換える処理が前提条件に近くなります。この作業は断片を作る前に実行しなければ、検索の索引に原本の値が残ります。
第六に、評価セットを先に作ることです。前処理の方式を変えたときに良くなったのか悪くなったのかを判断するには、同じ質問で比較する基準が必要です。設問数百個規模の評価セットを初期に構築しておけば、以降の改善が測定可能な作業になります。
RAG前処理の実際の適用方法
文書資産をまず分類します
プロジェクトの最初の作業は変換ではなく、対象文書の性格の把握です。法令や告示のように条項の構造が明確な文書、手引きのように節と項が階層を成す文書、公文のように短く独立した文書、申告様式のように表が本文である文書は、それぞれ異なる方式で分ける必要があります。
ある広域自治体の構築事例を見ると、行政文書を構造化したうえでテキストと表、画像に分け、マークアップと構造データ、断片とキーワードを併せて生成して知識ストレージへ格納する流れで設計されました。文書を一度変換して複数の成果物を作っておけば、以降に検索方式が変わっても原本を再処理せずに済みます。
構造化と断片分割を分けます
構造化と断片分割を一つの処理にまとめると、断片の大きさを調整するたびに文書を再分析することになります。二つの段階を分けておけば、構造化の結果はそのままに断片の規則だけを変えて試せます。
実際の構成では、文書を変換して構造データにしたうえで一定の長さ単位でテキストを分割し、結果を整列させる方式が用いられます。このとき前後の断片を少しずつ重ねておけば、文が境界で切れて意味が途切れる問題を減らせます。
原本と断片をつないでおきます
検索された断片だけで回答を作れば、利用者は根拠を確認する方法がありません。断片ごとに原本ファイルとページ番号、文書内の位置を併せて保存しておけば、回答に出所を付けられます。
このつながりは業務で特に重要です。行政担当者が政策情報を照会する際に必要なのは回答の文章だけでなく、その根拠がどの指針の何ページにあるかです。原文を開いて確認できて初めて、回答を根拠として決裁を上げられます。
国内環境におけるRAG前処理
韓国の公共の文書資産の相当部分は韓国製ワープロ形式で積み上がっています。この形式を原本のまま処理できるかが最初の関門になります。別の形式へ変換する過程で表の結合情報が失われれば、後の段階で回復する方法がありません。
文書そのものの条件も異なります。公文と手引き、法令、報告書が一つのストレージに混在し、官公庁様式特有の多層の表と丸数字の項目番号、表を侵した印影が併せて入ってきます。改定が頻繁であることも韓国の公共文書の特徴であるため、最新版の管理と変更履歴の追跡を前処理段階の要件として置くほうが安全です。
加えてネットワーク分離環境では外部の埋め込みサービスの呼び出しが制限されます。文書の変換から断片の生成、埋め込みまで社内網で実行できる構成かの確認が必要です。
よくあるご質問
たいていは良くなりません。原因が前処理の段階で文書の構造が損なわれたことにある場合が多くあります。まず検索された断片が質問と合っているかをご確認いただくほうが早くなります。
文書の性格によって異なります。長さより境界が重要であるため、節や表の単位を先に定め、長さはその中で調整してください。
可能です。表を文章として展開せず構造を保ったまま一つの断片とし、所属する節の情報を併せて付ける方式が効果的です。
可能です。ただし変換の過程で表構造が失われやすいため、原本形式のまま処理できるかをご確認ください。
断片を作る前に非識別化の処理を先に実行します。索引が作られた後に処理すると、原本の値が検索結果に残る可能性があります。
質問と正解で構成した評価セットを作って測定します。ある検証事例では文書33件に対して361の設問を用意し、構造化と検索の品質を併せて確認しました。