「所属長の許可が要るのはどんな場面か」という問いには、関係する条文をすべて集めないと答えられません。上位3件を取る検索では足りません。
実際に測ったところ、上位10件まで広げてやっと全部そろいました。渡す文書は40件です。つながりの索引から引けば15件で足ります。
全体を見ないと答えられない問いで測りました。上位k件を取る方式は、そろえようとすると渡す文書が増えます。
GraphRAGで何が変わるのかを、実際に走らせて測りました。用意したのは担当を明記した規程30件と、全体を見ないと答えられない問い4件です。
問いは「所属長の許可が要る場面」のように該当するものを全部集める必要がある形にしました。紛らわしい条文も混ぜてあります。
// 誰 → その人が関わる規程の一覧
const byWho = new Map();
RULES.forEach((r, i) => {
if (!byWho.has(r.who)) byWho.set(r.who, []);
byWho.get(r.who).push(i);
});
やり方 そろえた件数 取りこぼし 渡す文書の数 ふつうに上位3件を取る 11 / 15 4件 12件 ふつうに上位5件を取る 13 / 15 2件 20件 ふつうに上位10件を取る 15 / 15 0件 40件 つながりの索引から引く 15 / 15 0件 15件 問い 必要 上位3件 上位5件 上位10件 つながり 所属長の許可が要る場面 6件 3件 5件 6件 6件 課長が承認や判断をする場面 4件 3件 3件 4件 4件 経理課が行う処理 3件 3件 3件 3件 3件 海外事業部が担当すること 2件 2件 2件 2件 2件
上の表を見てください。上位3件を取る方式では15件中11件しかそろいませんでした。4件を取りこぼしています。
上位10件まで広げると15/15になります。ただし渡す文書の数は40件です。つながりの索引なら15件で済みます。
同じ結果に対して、2.7倍の文書を渡していることになります。渡す量が増えれば、答えを作る側の費用も待ち時間も増えます。
下の表を見てください。必要な件数は2件から6件まで開いています。
上位k件のkは1つの値です。6件要る問いに合わせると、2件で足りる問いでは渡しすぎになります。この開きは事前には分かりません。
同じ15/15でも、渡す文書は40件と15件。
Baseline RAG struggles to connect the dots. This happens when answering a question requires traversing disparate pieces of information原文Microsoft「GraphRAG」ドキュメント この内容の有効期限2027-02-18
文書から語と語のつながりを抜き出し、そのつながりをたどって集めます。似ている文書を上から取る方式とは探し方が違います。
GraphRAGは、文書から語のつながりを抜き出して索引にし、そのつながりをたどって集める手法です。
ふつうの検索は、問いに似ている文書を上から順に取ります。似ている度合いの順に並ぶだけです。
Microsoftの説明も、これを素朴な意味検索の手法に対する、構造化され階層化された取り組みだとしています。並べるのではなく、構造をたどります。
同じ文書は、ふつうの検索の弱点として点と点を結ぶのが苦手であり、これは答えるのに散らばった情報をたどる必要がある場合に起きるとしています。
前の節の問いがこの形でした。「所属長の許可が要る場面」は6か所に散らばっています。1か所を引いても答えになりません。
Microsoftの説明でも、生のテキストから知識グラフを抜き出し、コミュニティの階層を作り、要約を生成するとされています。前の節の計測は2番目までを行ったものです。
関係の抜き出しは手で置いています。実際には文書ごとに生成AIを呼んで抽出するので、そこで取り違えが起きます。この記事で測ったのは、抽出が正しくできた場合に検索の側でどれだけ変わるかです。抽出の質は別に評価する必要があります。
GraphRAG is a structured, hierarchical approach to Retrieval Augmented Generation (RAG), as opposed to naive semantic-search approaches原文Microsoft「GraphRAG」ドキュメント この内容の有効期限2027-02-18
文書に、つながりが読み取れる形で書いてあることが前提です。書いていないものは抜き出せません。
GraphRAGは文書から関係を抜き出せることが前提です。抜き出せなければ、索引は作れません。
Microsoftの手順では、文の単位からすべての実体・関係・主要な主張を抜き出し、そのグラフに対して階層的なまとまりの検出を行うとされています。
前の節の計測では、抜き出したのは30件の規程から30組でした。索引の項目は14件です。文書の数だけ抽出が走ります。
計測に使った規程は「所属長の許可を得る」と明記してあります。担当が書いていない文書からは、担当のつながりは作れません。
議事録や問い合わせの記録のように、関係が文脈に埋もれている文書では抽出の取り違えが増えます。抽出そのものの精度を先に確かめてください。
3番目は運用に効きます。文書が増えるたびに全部作り直すのか、増えた分だけ足すのかを決めてください。索引の更新の話は増分インデックスの記事で扱っています。
書いてあることしか索引にならない。
Extract all entities, relationships, and key claims from the TextUnits. Perform a hierarchical clustering of the graph using the Leiden原文Microsoft「GraphRAG」ドキュメント この内容の有効期限2027-02-18
同じ課題を持つ会社にとって、動いている設定は「作る時間」を買えるということです。ServiceDockは自作のワークフローやテンプレートを出品できるマーケットプレイスです。手数料や出品の流れは出品者向けページにまとまっています。
出品の仕組みを見る