技術ブログ

RAGO-X

RAGO-Xを理解する:文書から根拠のある回答まで

取り込みと質問処理を分け、版管理、権限、検索、引用を検証するRAG設計ガイドです。

RAGO-X公開 更新
#RAG#Architecture#LLM
RAGO-Xで文書から回答を生成するアーキテクチャの概念図

RAGを理解するには、二つの流れを分けて考えると明確になります。取り込みでは文書を検索可能な状態に準備し、質問処理では許可された根拠を探して回答を生成します。原本保存、検索索引、回答生成は、それぞれ異なる責任を持ちます。

この記事はRAGO-Xの製品概要にある文書ベースの回答と出典確認を理解するための設計ガイドです。以下の流れとコードは参照設計であり、特定のデータベース、モデル、再ランキング機能が本番で使われていることを保証する仕様表ではありません。製品の範囲は文書ハブ対応文書形式を確認してください。

取り込みと質問処理を分ける

text
Ingestion:
Document -> Extract text + source positions -> Chunks -> Search index

Question answering:
Question + permitted scope -> Retrieve evidence -> Select context
-> Generate answer -> Validate citations -> Show answer + sources

アップロード成功は検索準備完了と同じではありません。抽出や索引作成が失敗することもあります。状態を区別して表示し、再試行時に同じ文書のチャンクを重複登録しない設計が必要です。

段階ごとに結果を確認する

段階 必要な結果 確認する質問
保存・抽出 文書版、本文、位置 表と段落が原文順になっているか
分割・索引 原文に結び付くチャンクID 答えの区間が切れたり欠落していないか
アクセス範囲 サーバーが許可した文書集合 他組織やグループの文書が混ざらないか
検索・文脈選択 選択した根拠と版 正解の根拠がモデル入力に入ったか
生成・引用 回答と根拠の対応 原文が回答の主張を支えているか

埋め込みを使う場合、文書と質問のベクトルには互換性が必要です。モデルや前処理の変更では、再索引の範囲と移行手順を決め、異なる表現を無条件に混ぜないようにします。チャンキングの検証RRFの実行例で各段階を詳しく扱います。

引用IDの検証を実行する

モデルに渡した根拠がS1だけなのにS9を引用した場合、出典リンクを作ってはいけません。以下は渡した根拠に存在するIDだけを解決します。citation_demo.pyとして保存し、python3 citation_demo.pyで実行します。

python
def resolve_sources(citation_ids, evidence):
    by_id = {source["id"]: source for source in evidence}
    unknown = set(citation_ids) - by_id.keys()
    if unknown:
        raise ValueError("citation not present in supplied evidence")
    return [by_id[key] for key in dict.fromkeys(citation_ids)]


evidence = [{
    "id": "S1", "document_id": "manual-17", "revision": "v2",
    "page": 3, "text": "Disconnect power before opening the cover."
}]
print([s["id"] for s in resolve_sources(["S1", "S1"], evidence)])
assert len(resolve_sources(["S1", "S1"], evidence)) == 1
try:
    resolve_sources(["S9"], evidence)
except ValueError:
    print("Unknown source rejected")
else:
    raise AssertionError("unknown source was accepted")

出力は['S1']Unknown source rejectedです。重複する出典は一度だけ返し、未知のIDを拒否します。確認できるのは出典の存在であり、主張がその出典から導けるかは別途検証が必要です。根拠一覧自体も権限確認済みでなければなりません。この関数は認証・認可の代わりにはなりません。

文書更新と根拠不足への対応

マニュアルを更新したら、チャンク、索引、出典リンクが同じ版を指すようにします。そうしないと、古い指示で回答しながら新しいファイルを開く可能性があります。削除や権限変更後は検索と原文アクセスの両方を確認します。

根拠がない質問には回答を作り上げず、不足する情報を示します。検索文書中の命令もシステム指示ではなく参照データとして扱います。検索スコアが高いだけで回答可能とは判断できません。

公開前の確認手順

  1. 小さなマニュアルから答えのある質問とない質問を選びます。
  2. 正解区間を抽出本文、チャンク、候補、最終文脈まで追跡します。
  3. 閲覧権限のないユーザーでも試し、根拠が漏れないか確認します。
  4. 文書更新後に旧版が検索・引用されないか検証します。
  5. 主要な主張と引用を比較し、検索成功率と回答の根拠への忠実さを別々に測定します。

RAGは検索した根拠を生成に結び付けますが、正確性を自動的に保証しません。研究背景はLewisらのRAG論文を参照してください。製品の使い方はAPI活用ガイドアクセス権限管理で説明しています。

LinkedInで共有