+ 作るログイン
図を読み込んでいます…
1 / 15
RAG のすべて ― 基礎から現在の形、そして難しさまで / 全15章

RAG 10:索引の工夫(GraphRAG ほか)― 資料の側から歩み寄る

発行
アニメモ公式
版
第1版
改訂
コマ
全15

資料を検索のためにどうしまっておくか、索引の作り方の工夫を説明します。小さく探して大きく渡す親子チャンクと文の窓、チャンクに文脈を書き足す方法、要約を木にして索引に入れる方法、知識グラフとコミュニティ要約を使う GraphRAG、表・図・PDF のページの扱い、そして索引を作る費用と選び方まで。

探す前に、資料をどう「しまう」か

RAG の流れは「質問 → 探す → 集める → 読ませる → 答える」でした。この章の話は、その流れが始まる前、資料を資料庫に入れる段階です。図では、下の「資料庫」の部分にあたります。

検索のために資料を整理してしまっておく形を、索引(インデックス)と呼びます。本の巻末の索引が「この言葉は何ページ」と引けるように作られているのと同じで、RAG の索引も「探しやすいように」作ります。

第2〜5章の基本の索引は、「資料をチャンク(検索しやすい長さに切った断片)に切り(第3章)、それぞれを埋め込み(文の意味を数字の列に置き換えたもの)に変えて(第4章)、ベクトルデータベース(数字の列が近いものを速く探せる入れ物)に入れる(第5章)」というものでした。多くの場合はこれで十分に動きます。

でも、次のような場面では、基本の索引では足りなくなります。

困ることこの章の工夫
当たったチャンクが短すぎて、答えに足りない親子チャンク・文の窓
チャンクだけ読むと、何の話か分からない文脈の書き足し
「全体の要点は?」「全体の傾向は?」と聞かれる要約の木・GraphRAG
表や図、スキャンした PDF が多い文字に直す・画像のまま探す

第9章では、質問の側から資料に歩み寄りました。この章では逆に、資料の側から質問に歩み寄る工夫を見ていきます。

※2026年9月時点の情報です。手法や製品の名前、数字は変わることがあります。

  • RAG のすべて 10 ― 索引の工夫(GraphRAG ほか)
  • 1 / 15
  • 探す前に、資料をどう「しまう」か
  • 集めた資料
  • 質問
  • 検索
  • LLM
  • 答え
  • 資料庫
  • 第9章は質問の側から歩み寄った。この章は資料の側から歩み寄る
  • 索引=検索のために資料を整理してしまっておく形。作り方を変えると、探せるものが変わる
  • 検索の出来は、資料庫への入れ方で決まる部分が大きい。この章は索引の作り方の話。

小さく切れば見つかるが、切った文だけでは足りない

チャンクの大きさには、昔からの悩みがあります(第3章)。

図は、就業規則の3つの条を、短い文(チャンク)に切ったところです。「有給は繰り越せる?」と聞かれると、検索は「翌年まで繰り越せる」という短いチャンクをうまく見つけてくれるでしょう。短いチャンクは中身が1つの話題に絞られているので、その意味を表す数字の列(埋め込み)も、質問の数字の列に近くなりやすいのです。

ところが、この1文だけを LLM に渡すと困ります。何が繰り越せるのか、上限は何日か、が書いていません。同じ条の別の文を読まないと、正しく答えられないのです。

逆に、チャンクを大きく(たとえば条ごとに)切ると、文脈は残ります。でも、1つのチャンクにいろいろな話題が混ざるので、埋め込みがぼやけ、質問に近いと判断されにくくなります。

チャンク探しやすさ渡したときの分かりやすさ
小さい狙いが絞れて当たりやすい前後の文脈が足りない
大きい話題が混ざって当たりにくい文脈が残っている

つまり、探すのに向いた大きさと、読ませるのに向いた大きさが違うのです。だったら、両者を分ければいい。これが次のページの考え方です。

  • RAG のすべて 10 ― 索引の工夫(GraphRAG ほか)
  • 2 / 15
  • 小さく切れば見つかるが、切った文だけでは足りない
  • 第12条 年次有給休暇
  • 第13条 特別休暇
  • 第14条 休暇の申請
  • 入社6か月で10日付与
  • 結婚のとき5日
  • 申請はシステムで
  • 以後1年ごとに加算
  • 忌引は最大5日
  • 3日前までに
  • 最大20日まで
  • 申請は事前に
  • 上長が承認
  • 翌年まで繰り越せる
  • 証明書を添える
  • 急な場合は電話
  • 有給は繰り越せる?
  • 「翌年まで繰り越せる」だけ渡されても、
  • 何が繰り越せるのか・上限は何日かが分からない
  • チャンクは小さいほど狙いが絞れ、大きいほど文脈が残る。両方ほしい。

親子チャンク:小さく探して、大きく渡す

親子チャンクは、1つの資料を2つの大きさで持っておく方法です。

役割大きさ使い道
子短い(文・段落)索引に入れて、検索に使う
親長い(条・節・ページ)子が当たったら、LLM に渡す

図では、「翌年まで繰り越せる」という子が当たりました。そこで、その子を含む親、つまり「第12条 年次有給休暇」の全体を LLM に渡します。これなら、10日から始まり最大20日まで、翌年まで繰り越せる、という条文全体を読んで答えられます。

この形は「小さく探して、大きく渡す」という意味で Small-to-Big と呼ばれることもあります。LangChain(RAG などを組み立てる部品を集めた定番のライブラリ)などには、この仕組み(親文書を返す検索)が部品として用意されています。

作り方は単純です。チャンクに切るとき、それぞれの子に「親の ID」(親を見分ける番号)を覚えさせておき、検索で当たった子の親 ID から親の本文を引くだけです。下のコードは、1行目で子を10件探し、2行目で当たった子の親 ID を重複なしで集め、3行目で上位3つの親の本文を読み込んでいます。

ts
const hits = await searchChildren(question, { topK: 10 });
const parentIds = [...new Set(hits.map((h) => h.parentId))]; // 同じ親は1回だけ
const context = await loadParents(parentIds.slice(0, 3));

注意点は、親が長すぎないことです。親を「文書全体」にすると、1回の答えに何万字も読ませることになり、遅く高くなり、読み落としも増えます(第8章)。同じ親の子が複数当たったときに、親を重複して渡さないことも大事です。

  • RAG のすべて 10 ― 索引の工夫(GraphRAG ほか)
  • 3 / 15
  • 親子チャンク:小さく探して、大きく渡す
  • 第12条 年次有給休暇
  • 第13条 特別休暇
  • 第14条 休暇の申請
  • 入社6か月で10日付与
  • 結婚のとき5日
  • 申請はシステムで
  • 以後1年ごとに加算
  • 忌引は最大5日
  • 3日前までに
  • 最大20日まで
  • 申請は事前に
  • 上長が承認
  • 翌年まで繰り越せる
  • 証明書を添える
  • 急な場合は電話
  • 有給は繰り越せる?
  • 探すのは子(短い文)、渡すのは親(条の全体)
  • Small-to-Big とも呼ばれる
  • 索引には短い子を入れて探し、当たったら、その子を含む親を丸ごと LLM に渡す。

文の窓:当たった文の前後だけを足して渡す

親子チャンクは、「条」や「節」のような、はっきりした区切りがある資料に向いています。では、議事録や長いメールのように、区切りがはっきりしない文章ではどうすればよいでしょうか。

そこで使えるのが文の窓(センテンスウィンドウ)です。資料を1文ずつ索引に入れて探し、当たった文の前後の数文を足してから LLM に渡します。窓から外をのぞくように、当たった文の周りだけを見せるイメージです。

図では、「翌年まで繰り越せる」が当たり、その前後2文ずつ、合わせて5文が窓になりました。窓は条の境目を気にしないので、隣の第13条の最初の文まで入っています。

親子チャンク文の窓
広げる範囲決めておいた親(条・節)当たった文の前後 N 文
向いている資料見出しや区切りがはっきりした文書区切りの無い文章
弱点親が長いと重い境目をまたいで別の話が混ざる

LlamaIndex(RAG 向けのライブラリの1つ)には、この文の窓を作る部品が用意されています。前後に何文を足すかは、資料の書き方によって変わるので、いくつか試して成績を比べる評価(第12章)で決めます。

親子チャンクと文の窓は、どちらも LLM を追加で呼ばないので、索引を作る費用がほとんど増えません。基本の索引の次に試すなら、まずはここからがおすすめです。

  • RAG のすべて 10 ― 索引の工夫(GraphRAG ほか)
  • 4 / 15
  • 文の窓:当たった文の前後だけを足して渡す
  • 入社6か月で10日付与
  • 以後1年ごとに加算
  • 最大20日まで
  • 当たった文
  • 翌年まで繰り越せる
  • 前後2文ずつ
  • =窓
  • 結婚のとき5日
  • 忌引は最大5日
  • 申請は事前に
  • 証明書を添える
  • 親の区切りが無い文書でも使える。当たった文の前後数文を付けて渡す。

文脈を書き足してから索引に入れる

親子チャンクは「渡すとき」に文脈を足す方法でした。でも、そもそも探す時点で当たらないこともあります。

「翌年まで繰り越せる」というチャンクには、「有給」という言葉がありません。そのため、「有給の繰り越し」で探したとき、埋め込みでもキーワードでも、このチャンクが上位に来ないことがあります。報告書の「前期比3%増」のように、何の数字なのかがチャンクの外に書いてあることは、実際の資料ではとてもよくあります。

そこで、チャンクを索引に入れる前に、LLM に文書全体とチャンクを読ませ、「このチャンクはどの資料の、何の話か」を短く書き足させます。図の右がそれです。「就業規則 第12条(年次有給休暇)の一部。有給休暇の繰り越しについて。」という文脈を頭に付けてから、埋め込みを作り、キーワード検索の索引にも入れます。

この方法は、2024年に Anthropic が Contextual Retrieval(文脈つき検索)として紹介しました。紹介記事では、文脈を足した埋め込みと、キーワードの一致で探す検索(BM25、第6章)を組み合わせることで、上位20件に正しいチャンクが入らない失敗が約半分に減ったと報告されています(同社の評価データでの結果です)。

代償は、チャンクの数だけ LLM を呼ぶことです。1つの文書の多数のチャンクで、毎回同じ文書全体を読ませることになるので、プロンプトキャッシュ(第8章。毎回同じ前半部分を読ませるとき、その処理結果を使い回して安くする仕組み)で文書の部分を使い回すと、費用を大きく抑えられます。

  • RAG のすべて 10 ― 索引の工夫(GraphRAG ほか)
  • 5 / 15
  • 文脈を書き足してから索引に入れる
  • そのまま
  • 文脈を書き足す
  • 就業規則 第12条(年次有給休暇)の一部。 有給休暇の繰り越しについて。
  • 翌年まで繰り越せる
  • 翌年まで繰り越せる
  • 何が? どの規程? が埋め込みに入らない
  • 「有給」「繰り越し」で探しても当たる
  • 2024年に Anthropic が「Contextual Retrieval」として紹介した方法
  • チャンクの頭に「どの資料の、何の話か」を LLM に書き足させてから、埋め込む。

要約の木:まとめ文も一緒に索引に入れる

「休暇の制度をざっくり教えて」と聞かれたらどうでしょう。答えは、どれか1つのチャンクにあるのではなく、たくさんのチャンクをまとめた内容です。細かいチャンクをいくつ拾っても、全体像にはなりません。

そこで、要約も索引に入れておくという考え方があります。図のように、

段中身
葉(いちばん下)元のチャンク
中近い内容のチャンクをまとめた要約(有給休暇のまとめ、特別休暇のまとめ)
根(いちばん上)要約をさらにまとめた要約(休暇規程全体のまとめ)

という木を作り、すべての段を索引に入れます。細かい質問には葉が、ざっくりした質問には中や根の要約が当たります。

この考え方を代表する手法が、2024年の国際会議 ICLR で発表された RAPTOR です。チャンクを埋め込みで似たものどうしにまとめ(クラスタリング)、それぞれを LLM で要約し、その要約をまたまとめて要約する、ということを繰り返して木を作ります。論文では、長い文書全体の理解が必要な質問で、大きく成績が上がったと報告されています。

代償は、要約を作るために LLM を何度も呼ぶことと、資料が変わったときに上の段も作り直す必要があることです。葉を1つ直したら、その上の要約も、根の要約も古くなります。

  • RAG のすべて 10 ― 索引の工夫(GraphRAG ほか)
  • 6 / 15
  • 要約の木:まとめ文も一緒に索引に入れる
  • 休暇規程全体のまとめ
  • 有給休暇のまとめ
  • 特別休暇のまとめ
  • 元のチャンク(葉)
  • 近いチャンクをまとめて要約し、その要約をさらにまとめる。細部も全体も探せる。

「全体では?」と聞かれると、上位数件では答えられない

さらに難しい質問があります。「社員アンケート全体で、多い不満は何?」のような、資料全体の傾向を聞く質問です。

図の24個の箱は、アンケートの回答(チャンク)です。中の丸の色が、そこに書かれた不満の種類だとします。赤は「残業」、橙は「評価」、紫は「設備」の不満です。

普通の RAG は、質問に近いチャンクを上位数件だけ拾います(赤枠)。でも、この質問の答えは、特定の数件ではなく、24件すべてを見て数えないと分かりません。上位5件だけ見て「多い不満は残業です」と答えても、たまたま拾った5件の傾向にすぎません。

質問の種類例普通の RAG
ローカルな質問田中さんの担当先は?得意(どこか数か所に答えがある)
グローバルな質問全体で多い不満は?主なテーマは?苦手(答えが全体に散らばっている)

前のページの要約の木は、この問題を少し和らげます。でも、「どんな人や組織が、どうつながっているか」という関係まで扱いたい場合に考えられたのが、次のページからの知識グラフと GraphRAG です。

  • RAG のすべて 10 ― 索引の工夫(GraphRAG ほか)
  • 7 / 15
  • 「全体では?」と聞かれると、上位数件では答えられない
  • アンケート全体で、多い不満は?
  • 赤枠=検索で拾えた上位5件。不満は残りの資料にも散らばっている
  • 「全体の傾向」を知るには、資料の全部に目を通した要約が要る
  • 答えが資料全体に散らばる質問では、似た数件を拾う検索そのものが合わない。

知識グラフ:「誰が・何と・どうつながるか」を先に取り出す

知識グラフは、情報を「点」と「線」で表したものです。点は人・組織・製品などのもの(エンティティ)、線はそれらの関係です。

図では、「田中は営業部に所属」「営業部は A社と B社を担当」「A社と B社は製品Xを購入」「佐藤は開発部に所属」「開発部が製品Xを開発」という関係を、点と線で表しています。

これを作るには、LLM に文書を1つずつ読ませ、出てくるものと関係を取り出させます。「この文章に出てくる人・組織・製品と、それらの関係を JSON(プログラムが読みやすい決まった書式)で書き出して」と頼むわけです。取り出した結果をつなぎ合わせると、文書の山全体が1つの大きなグラフになります。

グラフがあると、文章の検索では難しい質問に答えやすくなります。

質問グラフでの答え方
製品Xを買っている会社の担当部署は?製品X → 購入した会社 → 担当の部署、と線をたどる
田中さんと佐藤さんに共通の関わりは?2人から線をたどって出会う点(製品X)を探す

1つ目のように、答えまで何段もたどる質問(第9章の多段の質問)は、それぞれの事実が別々の文書に書かれていることが多く、普通の検索では集めきれません。グラフなら、線をたどるだけで集められます。

一方で、LLM による取り出しは完璧ではありません。同じ会社が「A社」「株式会社A」と別の点になったり、関係を取り違えたりします。取り出した結果を整える手間も見込んでおきます。

  • RAG のすべて 10 ― 索引の工夫(GraphRAG ほか)
  • 8 / 15
  • 知識グラフ:「誰が・何と・どうつながるか」を先に取り出す
  • 所属
  • 担当
  • A社
  • 田中
  • 営業部
  • 購入
  • 担当
  • 製品X
  • 購入
  • B社
  • 開発
  • 佐藤
  • 所属
  • 開発部
  • 例:「田中は営業部に所属」「営業部は A社を担当」といった文から作る
  • LLM に文書を読ませて、人・組織・製品(点)と、その関係(線)を取り出しておく。

GraphRAG:つながりの濃いまとまりごとに要約を作る

GraphRAG は、2024年に Microsoft Research が発表した手法です(論文の題は「From Local to Global」)。知識グラフに、もう一段の工夫を加えています。

グラフの点を、つながりの濃いまとまりに分けるのです。これをコミュニティと呼びます。図では、営業部と、そこにつながる田中・A社・B社が1つ、開発部と佐藤・製品Xがもう1つのコミュニティになりました(分け方には Leiden 法というグラフの分割の方法が使われています)。

そして、コミュニティごとに、LLM で要約を書いておきます。「営業部は A社・B社を担当し、…」のように。コミュニティは大きな単位から小さな単位まで階層に分けられ、それぞれの階層で要約が作られます。

作るもの作り方
点と線LLM で文書から取り出す
コミュニティグラフのつながり方から自動で分ける
コミュニティの要約LLM で、まとまりごとに書く

要約を先に書いておくのは、少し前に見た「全体では?」という質問に答えるためです。質問が来てから全部の資料を読むのは大変ですが、コミュニティの要約なら数が限られているので、それらを集めれば全体像を作れます。GraphRAG はオープンソース(誰でも中身を見て使えるソフト)として公開されていて、自分の資料で試すことができます。

  • RAG のすべて 10 ― 索引の工夫(GraphRAG ほか)
  • 9 / 15
  • GraphRAG:つながりの濃いまとまりごとに要約を作る
  • 田中
  • A社
  • 開発部
  • 購入
  • 開発
  • 所属
  • 担当
  • 製品X
  • 所属
  • 購入
  • 営業部
  • 担当
  • B社
  • 佐藤
  • 要約:営業部は A社・B社を担当し…
  • 要約:開発部が製品Xを開発し…
  • 2024年に Microsoft Research が発表。要約は階層にもなる
  • 点を「よくつながる仲間」(コミュニティ)に分け、仲間ごとの要約を先に書いておく。

個別の質問はグラフをたどり、全体の質問は要約を集める

GraphRAG には、質問の種類に合わせた2つの探し方があります。

探し方向いている質問やること
ローカル検索田中さんの担当先は?質問に出てくる点(田中)を見つけ、その周りの点・線・元の文章を集めて答える
グローバル検索社内の主な取引関係は?コミュニティの要約をそれぞれ読んで部分的な答えを作り、最後にまとめる

図の赤い部分がローカル検索です。「田中」から「営業部」、そこから「A社」「B社」と線をたどり、その周りの情報を集めます。人に聞いて回り、知り合いの知り合いまでたどるイメージです。

グローバル検索は、各コミュニティの要約に「この質問に関係することは?」と聞いて部分的な答えを作り、それらを最後に1つにまとめる、という二段構えです。各支店に同じ質問をして報告を集め、本社で1つの報告書にまとめるのに似ています。たくさんの部分を並行して処理し(map=割り振って処理する)、最後にまとめる(reduce=1つに畳む)ので、map-reduce の形と説明されます。

GraphRAG の弱点は、作るのが高いことです。すべての文書を LLM に読ませて点と線を取り出し、さらにコミュニティごとに要約を書くので、普通の索引よりずっと多くの LLM 呼び出しが要ります。資料が増えたり変わったりしたときの作り直しも重くなります。

そのため、「全体の傾向」や「関係のつながり」を聞かれることが多い場面に絞って使うのが現実的です。普通の質問が中心なら、普通の RAG のほうが安く速く、十分に答えられます。

  • RAG のすべて 10 ― 索引の工夫(GraphRAG ほか)
  • 10 / 15
  • 個別の質問はグラフをたどり、全体の質問は要約を集める
  • 田中
  • A社
  • 開発部
  • 購入
  • 開発
  • 所属
  • 担当
  • 製品X
  • 所属
  • 購入
  • 営業部
  • 担当
  • B社
  • 佐藤
  • ローカル:「田中さんの担当先は?」→ 田中から線をたどる
  • グローバル:「社内の主な取引関係は?」→ 各要約を集めてまとめる
  • グラフを作るのに LLM を大量に呼ぶので、作る費用が大きい
  • ローカル検索は点の周りをたどる。グローバル検索はコミュニティの要約から答える。

表・図・PDF のページをどう索引に入れるか

社内の資料は、きれいな文章ばかりではありません。表の多い仕様書、グラフの入った報告書、スキャンした紙の書類、スライドの PDF…。これらから文字だけを抜き出すと、困ったことが起きます。

表は、行と列の関係が消え、数字がばらばらに並ぶだけになります。グラフや図は、そもそも文字が無いので、何も残りません。スキャンした PDF は、文字認識(OCR)をしないと、文字すら取れません。

画像も文字も扱えることをマルチモーダル(複数の種類の情報を扱える)と呼びます。画像を読める LLM が増えたことで、対策の幅が広がりました。主な対策は3つです。

方法やること向いている資料
文字に直す表を Markdown の表などに変換。スキャンは OCR表の多い文書、スキャン
説明文を書かせる図やグラフを、画像を読める LLM に説明させ、その文を索引に入れるグラフ・図の多い報告書
画像のまま探すページを画像として埋め込み、質問と直接比べる見た目の情報が大事なスライドや資料

3つ目の代表が、2024年に発表された ColPali です。画像を読めるモデルでページの画像そのものから埋め込みを作り、文字の抜き出しという壊れやすい手順を飛ばします。見つかったページは、画像のまま、画像を読める LLM に渡して答えさせます。

どの方法でも、元のページへの参照(ファイル名とページ番号)を残しておくことが大事です。答えの根拠として、そのページを利用者に見せられるからです(第8章)。

  • RAG のすべて 10 ― 索引の工夫(GraphRAG ほか)
  • 11 / 15
  • 表・図・PDF のページをどう索引に入れるか
  • 文字に直す
  • 表は Markdown の表に。スキャンは文字認識(OCR)
  • 説明文を書かせる
  • 図やグラフを LLM に説明させて索引へ
  • ページを画像のまま探す
  • 画像を読めるモデルで埋め込む(ColPali など)
  • 文字だけ抜くと、表の並びや図の意味が消える。文字に直すか、画像のまま探す。

限界とトレードオフ:索引を作る費用

この章の工夫は、どれも「質問が来る前に、資料の側で手間をかけておく」ものです。その手間には費用がかかります。

工夫作るときの費用資料が変わったとき
親子・文の窓LLM は不要。保存する量が少し増えるその部分を入れ直すだけ
文脈の書き足しチャンクの数だけ LLM を呼ぶ変わった文書のチャンクを作り直す
要約の木まとめるたびに LLM を呼ぶ葉から根まで、上の段も作り直す
GraphRAG取り出し・要約で LLM を大量に呼ぶグラフとコミュニティ要約の作り直し
画像のまま探すページ画像の保存と専用の埋め込みそのページを入れ直す

見落としやすいのは、右の列です。作る費用は一度きりではありません。社内の資料は毎日のように増え、変わります。そのたびに作り直しが発生します。「最初に1回作ってみたら良かった」だけで判断すると、運用が始まってから費用に驚くことになります。

もう1つの費用は、仕組みの複雑さです。索引の作り方が増えるほど、壊れたときの原因を探すのが大変になり、担当者の学ぶことも増えます。

索引の費用と、答えの良くなり方を比べるには、同じ質問の組で、索引を変える前と後の成績を測るしかありません(第12章)。

  • RAG のすべて 10 ― 索引の工夫(GraphRAG ほか)
  • 12 / 15
  • 限界とトレードオフ:索引を作る費用
  • 親子・文の窓
  • LLM は不要。保存する量が少し増えるだけ
  • 文脈の書き足し
  • チャンクの数だけ LLM を呼ぶ(キャッシュで安く)
  • 要約の木
  • まとめるたびに LLM。資料が変わると上の段も作り直し
  • GraphRAG
  • 取り出し・要約で LLM を大量に呼ぶ。いちばん高い
  • 画像のまま探す
  • ページ画像の保存と、専用の埋め込みが要る
  • 作る費用は一度きりではない。資料が増えたり変わったりするたびにかかる
  • 賢い索引ほど、作るときに LLM を多く呼ぶ。資料が変わるたびに作り直す費用も考える。

どれを使うか:困っている失敗から選ぶ

この章の工夫は、どれも「効く場面」がはっきりしています。流行っている手法から入れるのではなく、実際に困っている失敗から選びます。

困っている失敗試す工夫
当たるが、渡した文が短すぎて答えられない親子チャンク・文の窓
「これ」「同社」「前期比」だらけで、当たらない文脈の書き足し
要点や全体像を聞かれる要約の木
全体の傾向や、関係のつながりを聞かれるGraphRAG
表・図・スキャンした PDF が多い文字に直す・説明文・画像のまま探す

おすすめの順番は、費用の安いものからです。まず基本の索引(第2〜5章)とハイブリッド検索(第6章)、リランキング(第7章)を整え、それでも残る失敗を見て、親子チャンクや文の窓を足します。文脈の書き足しは、その次の候補です。要約の木や GraphRAG は、全体を問う質問が多いと分かってから検討します。

どの失敗が多いのかを知るには、利用者の実際の質問と、うまく答えられなかった例を集めて分類するのが近道です。その方法は第12章で見ます。

  • RAG のすべて 10 ― 索引の工夫(GraphRAG ほか)
  • 13 / 15
  • どれを使うか:困っている失敗から選ぶ
  • 当たるが、渡した文が短すぎる
  • 親子チャンク・文の窓
  • 「これ」「同社」だらけで当たらない
  • 文脈の書き足し
  • 要点や全体像を聞かれる
  • 要約の木
  • 全体の傾向・関係のつながりを聞かれる
  • GraphRAG
  • 表・図・スキャンした PDF が多い
  • 文字に直す・画像のまま探す
  • 新しい索引は、困っている失敗に効くものだけ足す。まずは親子チャンクから。

よくある落とし穴

索引の工夫で、よくある失敗をまとめます。

落とし穴何が起きるか対策
親が長すぎる1回の答えに数万字を読ませ、遅く高く、読み落とす親は条・節くらいに。数も絞る
流行りの手法から入れるGraphRAG を作ったが、質問の多くは普通の検索で足りた困っている失敗から選ぶ
作り直しを忘れる資料を直したのに、要約やグラフが古いまま答えに出る変更のたびに、どこを作り直すか決めておく
文字だけ抜く表の行と列がばらばらになり、数字を取り違える表は表のまま変換する。画像で探す
測っていない索引を変えたが、良くなったか分からない前後で当たりの割合を比べる

3つ目の「作り直しを忘れる」は、特に要約の木と GraphRAG で起きやすい失敗です。元の資料からは古い内容が消えたのに、要約の中にだけ古い内容が残っていると、その要約が検索に当たり、古い答えが出てきます。しかも、元の資料を見ても見つからないので、原因を探しにくいのです。

要約やグラフのような「資料から作ったもの」には、どの資料のどの版から作ったかを記録しておき、元が変わったら作り直せるようにしておきます(第13章)。

  • RAG のすべて 10 ― 索引の工夫(GraphRAG ほか)
  • 14 / 15
  • よくある落とし穴
  • 親をそのまま渡し、1回の答えに数万字を読ませてしまう
  • GraphRAG を入れたが、質問の多くは普通の検索で足りていた
  • 資料を1つ直したのに、要約やグラフが古いまま残っている
  • PDF から文字だけ抜き、表の行と列がばらばらになる
  • 索引を変えた前と後で、当たりの割合を比べていない(第12章)
  • 流行りの索引を先に入れない。作り直しの費用と、効いたかの測定を忘れない。

まとめ:資料の側から、質問に歩み寄る

この章で見たことをまとめます。

工夫要点
親子チャンク短い子で探し、当たったら親(条・節)を丸ごと渡す
文の窓1文ずつ探し、前後の数文を足して渡す
文脈の書き足しチャンクに「どの資料の何の話か」を足してから索引に入れる
要約の木要約も索引に入れ、細部と全体の両方を探せるようにする
GraphRAG点と線を取り出し、コミュニティごとの要約で全体を問う質問に答える
表・図・PDF文字に直すか、説明文を書かせるか、ページを画像のまま探す
費用賢い索引ほど作るのも作り直すのも高い。安いものから試す

他の章とのつながりでいうと、この章は第3章(チャンク分割)の延長で、第9章(質問を直す)と対になり、第12章(評価)で効果を確かめ、第13章(運用)で作り直しを管理します。

ここまでの RAG は、「1回探して、1回答える」という決まった流れでした。次の第11章では、LLM 自身が、何を・いつ・何回探すかを決めるエージェント型 RAG を見ていきます。

  • RAG のすべて 10 ― 索引の工夫(GraphRAG ほか)
  • 15 / 15
  • まとめ:資料の側から、質問に歩み寄る
  • 親子・文の窓
  • 小さな単位で探し、前後や親を足して渡す
  • 文脈の書き足し
  • チャンクに「どこの何の話か」を足して埋め込む
  • 要約の木
  • 要約も索引に入れ、細部と全体の両方を探せる
  • GraphRAG
  • 点と線とコミュニティ要約。全体を問う質問に
  • 表・図・PDF
  • 文字に直すか、ページを画像のまま探す
  • 費用
  • 賢い索引ほど作るのも作り直すのも高い
  • 小さく探して大きく渡す・文脈を足す・要約する・つながりを取り出す。次章はエージェント。

0 件のコメント

読み込み中…

権利侵害・不適切な内容の連絡: [email protected]