長い文書を塊に切ると、その塊が何の話なのか分からなくなります。「これを超える額は」という一文だけを見ても、何の額か決まりません。
塊の先頭に章題を足して測りました。1位が正解だった問いは1件から5件に増えます。代わりに索引の文字数が33.5%増えました。
塊の先頭に章題を足す前後で測りました。1位が正解だった問いは1件から5件に増えます。
コンテキスト付き検索で塊に情報を足すと順位がどう動くのかを、実際に走らせて測りました。用意したのは章立てのある規程5章・塊15件と、問い5件です。
問いには章題の語を入れ、正解の本文にはその語が出てこないようにしました。本文は「これ」で受けています。別の章にも同じ言い回しを置いてあります。
const plain = [], ctx = [], key = [];
SECTIONS.forEach((s, si) => s.paras.forEach((p, pi) => {
plain.push(p);
ctx.push(`${s.title}。${p}`); // ← 先頭に章題を足すだけ
key.push(`${si}-${pi}`);
}));
塊の作り方 1位が正解 上位3件に正解 そのまま切る 1 / 5 5 / 5 章題を足す 5 / 5 5 / 5 問い そのまま 章題あり そのままで1位に来た章 宿泊費で所属長の許可が要るのはどんなときか 2位 1位 第4章 前払 日当の額は見直されるのか 2位 1位 第2章 宿泊費 前払で所属長の許可が要るのはどんなときか 1位 1位 第4章 前払 社用車で所属長の許可が要るのはどんなときか 3位 1位 第4章 前払 報告書を出さないとどうなるか 2位 1位 第3章 日当 索引に入る総文字数: そのまま 340字 → 章題あり 454字(33.5%増)
上の表を見てください。そのまま切った場合、1位が正解だったのは5件中1件だけでした。章題を足すと5件すべてが1位になります。
右端の列が、そのまま切ったときに1位を取った章です。5件のうち3件で第4章が1位になっています。
第4章の本文には「これを超える額は、所属長の許可を得た場合に限り認める」とあります。宿泊費を聞いても社用車を聞いても、この一文が同じように当たります。
右の列は、そのまま切った場合も5/5です。正解自体は上位3件に入っています。
つまり足りなかったのは順位です。渡す件数を絞るほど、この差が効きます。1件だけ渡す設計なら、1/5と5/5の違いになります。
上位3件では同じ。差が出るのは1位かどうか。
Combining Contextual Embeddings and Contextual BM25 reduced the top-20-chunk retrieval failure rate by 49%原文Anthropic「Introducing Contextual Retrieval」 この内容の有効期限2027-02-18
塊を索引に入れる前に、その塊が何の話なのかを説明する短い文を先頭に足します。取り込みのときに一度だけ行います。
コンテキスト付き検索は、塊の先頭に、その塊が何の話なのかを足してから索引に入れる手法です。
長い文書は、そのままでは検索できないので塊に切ります。ところが切った時点で、前後の文脈が落ちます。
Anthropicも、個々の塊に十分な文脈が欠けていると問題を招きうると書いています。前の節の第4章がその例で、何の額かは章題にしか書いてありません。
Anthropicの説明でも、各塊に、その塊固有の説明的な文脈を先頭に付け加えることで解決するとされています。手順としてはこれだけです。
章立てがはっきりしている文書なら、章題を機械的に足すだけで済みます。前の節はこの方式で1/5から5/5になりました。
構造のない文書では、塊と文書全体を生成AIに渡して短い説明を書かせます。塊の数だけ呼び出しが発生します。
測る前にやっておくとよいのは、切った塊を1つ取り出して、それだけで何の話か分かるか読んでみることです。「これ」「同項」「当該の」で始まる塊が出てきたら、その文書は文脈を足す必要があります。前の節の題材も、この読み方で作りました。分け方そのものの話はチャンク分割の記事で扱っています。
it can lead to problems when individual chunks lack sufficient context.原文Anthropic「Introducing Contextual Retrieval」 この内容の有効期限2027-02-18
索引の文字数が増えます。加えて説明を生成AIに書かせる場合は、取り込みのときに一度だけ費用がかかります。
コンテキスト付き検索を入れると索引が大きくなります。何がどれだけ増えるのかを分けて見ます。
前の節の計測では、索引に入る文字数が340字から454字になりました。33.5%の増加です。
足すのは章題1つぶんですが、塊が短いほど割合は大きくなります。塊を細かく切っている構成ほど、増え方は大きくなります。
説明を生成AIに書かせる場合、費用は取り込みのときに発生します。検索のたびに払うものではありません。
Anthropicは自社の計測として、文脈付きの塊を作る一度きりの費用は文書100万トークンあたり1.02ドルだとしています。金額そのものは提供元と時期で変わります。
判断の材料は、渡す件数をいくつにしているかです。前の節では上位3件なら差がなく、1件だけなら1/5と5/5に分かれました。
件数を多く渡している構成では、効果が見えにくくなります。先に自分の構成が何件渡しているかを確かめてください。
索引は33.5%増える。払うのは取り込みのときだけ。
the one-time cost to generate contextualized chunks is $1.02 per million document tokens.原文Anthropic「Introducing Contextual Retrieval」 この内容の有効期限2027-02-18
同じ課題を持つ会社にとって、動いている設定は「作る時間」を買えるということです。ServiceDockは自作のワークフローやテンプレートを出品できるマーケットプレイスです。手数料や出品の流れは出品者向けページにまとまっています。
出品の仕組みを見る