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

RAG 03:文書の準備とチャンク分割 ― 資料を「探せる形」にする

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

RAG の資料庫に入れる前の下ごしらえを説明します。PDF・HTML・Office・スキャン文書から文字を取り出すときの落とし穴(段組み・表・ヘッダーとフッター・OCR)、掃除、出典や日付・権限などのメタデータ、チャンクの大きさと重なりのトレードオフ、固定長・再帰的・見出し・意味による切り方、チャンクに文脈を書き足す Contextual Retrieval、出典と更新のための ID の振り方まで。

資料を「探せる形」にする下ごしらえ

第2章で作ったいちばん小さな RAG では、「資料を読み込んで、決まった長さで切る」を、ほとんど一言で済ませました。切った小さな塊をチャンクと呼ぶのでした。この章では、そこを詳しく見ます。RAG の流れでいうと、質問が来るよりずっと前、図の赤い「資料庫」に資料を入れる前の下ごしらえです。

料理にたとえると、ここは仕込みです。どんなに腕のいい料理人(LLM)でも、傷んだ食材や、骨が残ったままの魚からは、おいしい料理は作れません。RAG でも、資料の文字が崩れていたり、切り方が悪くて大事な文が2つに割れていたりすると、後でどれだけ検索や頼み文(プロンプト。LLM に渡す指示と資料)を工夫しても、正しい答えにたどり着けません。

この章で見るのは、次の5つの仕事です。

仕事ひとことで
読み込むPDF・HTML・Office などから文字を取り出す
掃除するヘッダー・フッター・メニューなどのノイズを取る
札を付ける出典・日付・見てよい人などの情報(メタデータ)を持たせる
切る探しやすく、読ませやすい大きさのチャンクにする
ID を振る出典の表示と、資料の改訂に備える

地味な仕事ですが、実務では「RAG の改善で一番効いたのは前処理(この章の下ごしらえ全体)だった」という話がとてもよく聞かれます。

※この章は 2026年9月時点の情報をもとにしています。ライブラリや製品の名前、機能は変わりやすいので、使うときは公式の資料で確かめてください。

  • RAG のすべて 03 ― 文書の準備とチャンク分割
  • 1 / 15
  • 資料を「探せる形」にする下ごしらえ
  • 集めた資料
  • 規程 第3条
  • 質問
  • 検索
  • 有給の日数表
  • LLM
  • 答え
  • PDF・Word…
  • 資料庫
  • この章は RAG の流れの一番手前、「資料庫」に入れる前の準備の話
  • 読み込む → 掃除する → 札(メタデータ)を付ける → 切る → ID を振る
  • RAG の答えの質は、ここで作ったチャンクの質を超えられない。地味だが一番効く。

形式ごとに、文字の取り出し方が違う

社内の資料は、いろいろな形式で置かれています。どれも人が読むぶんには同じ「資料」ですが、中身の作りはまったく違います。

形式中身の作りよくある困りごと
PDF「どの位置に、どの文字を描くか」の集まり段組み・表の順番が崩れる。見出しと本文の区別が無い
HTML・社内 Wikiタグで構造が付いた文書本文より、メニュー・広告・関連リンクの文字のほうが多いことも
Word・Excel・PowerPoint構造を持った文書・表・スライド表・図形の中の文字、コメント、隠れたシート、スライドのノート
スキャンした PDF・画像紙を写した絵文字が1つも入っていない。OCR(文字認識)が要る

特にスキャンした PDF は要注意です。画面では文字が見えるのに、取り出してみると空っぽ、ということがよくあります。OCR をかけて文字にしますが、読み間違いが混ざるので、その前提で扱います。

道具もたくさんあります。PDF から文字を抜き出す基本のライブラリのほかに、いろいろな形式をまとめて扱い、見出しや表を見分けようとする Unstructured や、IBM が公開した Docling のような道具があります。最近は、ページを画像として LLM に見せて、文字や表を読み取らせる方法も使われています。

どの道具も完璧ではありません。一番大事なのは、自分の資料で試して、取り出した文字を目で見ることです。

  • RAG のすべて 03 ― 文書の準備とチャンク分割
  • 2 / 15
  • 形式ごとに、文字の取り出し方が違う
  • PDF
  • HTML・Wiki
  • 見た目の配置だけで、文の順番を持たない
  • 本文より、メニューや広告が多いことも
  • Word・Excel・PowerPoint
  • スキャンした PDF・画像
  • 表・図形・メモ・隠れたシートがある
  • 文字は無く、絵だけ。OCR が要る
  • 道具の例:PDF の文字抽出ライブラリ / Unstructured / Docling / OCR
  • どれも完璧ではない。自分の資料で試して、結果の文字を目で見るのが第一歩
  • 同じ「資料」でも中身の作りはばらばら。形式ごとの落とし穴を知っておく。

PDF の落とし穴:見た目の順番と、文字の順番は別物

PDF は、印刷したときの見た目を正確に再現するための形式です。中に入っているのは、基本的に「この座標に、この文字を描く」という命令の集まりです。「ここからここまでが1つの段落」「これは見出し」といった情報は、持っていないことがよくあります。

そのため、文字を取り出す道具は、座標を手がかりに「たぶんこの順番で読むのだろう」と推測して並べ直します。この推測が、いろいろな所で外れます。

図の例は2段組みです。人は左の段(第3条)を上から下まで読んでから、右の段(第4条)に移ります。でも、道具が「上から1行ずつ、左から右へ」と読むと、第3条の1行目と第4条の1行目が交互に混ざってしまいます。

崩れ方例
段組みが混ざる第3条と第4条の文が1行ずつ交互に並ぶ
見出しが本文に溶ける「第3条 有給休暇」が、ただの1行になり区別が消える
文が途中で切れる行末の改行がそのまま残り、単語や文が割れる
脚注・図の説明が紛れ込む本文の途中に、関係ない注釈が挟まる

こうして崩れた文字を切ってベクトル(文章の意味を表す数の並び。第4章)にすると、意味の混ざったチャンクができてしまいます。最近の道具は、ページの見た目(レイアウト)を分析して、段組みや見出しを見分けようとします。それでも、段組みの多い資料では、取り出した結果を必ず確かめてください。

  • RAG のすべて 03 ― 文書の準備とチャンク分割
  • 3 / 15
  • PDF の落とし穴:見た目の順番と、文字の順番は別物
  • 社外秘 ― 就業規則 2026年版
  • 第3条 有給休暇
  • 第4条 慶弔休暇
  • 社外秘 ― 就業規則 2026年版
  • 第3条 有給休暇 第4条 慶弔休暇
  • 入社6か月後に 配偶者が死亡した
  • 10日を付与 ときは5日を…
  • - 3 -
  • 勤続
  • 付与日数
  • 6か月
  • 10日
  • PDF の中にあるのは 「どの座標に、どの文字を描くか」だけ。 段落や段組みの情報は無いことが多い
  • 1年6か月
  • 11日
  • 6年6か月以上
  • 20日
  • - 3 -
  • 2段組みを左から右へ1行ずつ読むと、第3条と第4条が交互に混ざる。

表は、行と列がばらばらになる

PDF のもう1つの大きな落とし穴が、表です。

図の表は「勤続6か月なら10日、1年6か月なら11日、6年6か月以上なら20日」という対応を表しています。人は、行と列を目で追って読みます。でも、素朴な道具で文字を取り出すと、「勤続 付与日数 6か月 10日 1年6か月 11日 …」と、ただの1列の文字になってしまいます。

この程度の小さな表なら、LLM が推測で読み解けることもあります。でも、列が5つ6つある表や、セルが結合された表になると、どの数字がどの行・どの列のものか、まったく分からなくなります。そして、社内の資料で本当に聞かれることの多い「数字」は、たいてい表の中にあります。

対策は、表を表のまま取り出すことです。

対策内容
表を見分ける道具を使う表の範囲と行・列を認識して、Markdown や HTML の表として出力する道具を使う
行ごとに文にする「勤続6か月:付与日数10日」のように、見出しと値を組にして1行ずつ書き出す
元の形式から読むExcel や Word の表なら、PDF にする前の元ファイルから読むほうが確実
表を切らない表の途中でチャンクを切らない。大きな表なら、見出し行を各チャンクに繰り返す

最後の「見出し行を繰り返す」は大事です。表を途中で切ると、後半のチャンクには「勤続」「付与日数」という列の名前が無くなり、数字だけが残ります。表や画像の扱いは、第10章でも見ます。

  • RAG のすべて 03 ― 文書の準備とチャンク分割
  • 4 / 15
  • 表は、行と列がばらばらになる
  • 社外秘 ― 就業規則 2026年版
  • 第3条 有給休暇
  • 第4条 慶弔休暇
  • 勤続 付与日数 6か月 10日 1年6か月 11日
  • 6年6か月以上 20日
  • どの数字がどの行か、読み手が推測するしかない
  • 勤続
  • 付与日数
  • | 勤続 | 付与日数 |
  • | 6か月 | 10日 |
  • 6か月
  • 10日
  • | 1年6か月 | 11日 |
  • 1年6か月
  • 11日
  • | 6年6か月以上 | 20日 |
  • 6年6か月以上
  • 20日
  • - 3 -
  • 表を1列の文字にすると「6か月 10日」の対応が消える。表は表のまま取り出したい。

掃除する:毎ページのヘッダー・フッター・ノイズを取る

文字を取り出したら、次は掃除です。

図のページの一番上には「社外秘 ― 就業規則 2026年版」、一番下には「- 3 -」というページ番号が入っています。これが100ページの資料なら、100回同じ文字が出てきます。

なぜ困るのでしょうか。ヘッダーの文がチャンクに混ざると、どのチャンクにも「就業規則」という同じ言葉が入ります。検索は、質問と言葉や意味の近いチャンクを探す仕組みです。ヘッダーが入っていると、「就業規則について」のような質問に、どのチャンクも同じように近く見えてしまい、本当に関係のあるチャンクが埋もれます。LLM に渡す量も、無駄に増えます。

掃除すること見つけ方の例
ヘッダー・フッター・ページ番号多くのページの同じ位置に、同じ文が出てくる
HTML のメニュー・広告・関連リンク本文の部分(article や main など)だけを取り出す
行末の改行で割れた文文の途中の改行をつなぎ直す
重複同じ資料の古い版・コピー・転載を1つにまとめる

ただし、消しすぎにも注意します。見出し、表の列名、「※注意」のような注記は、ノイズに見えても大事な情報です。見出しは、後で「どこの話か」を示す手がかりになります(この章の後半で使います)。

掃除のルールは、資料の種類ごとに少しずつ違います。まずは代表的な資料を数個選び、取り出した文字を見ながらルールを足していくのが現実的です。

  • RAG のすべて 03 ― 文書の準備とチャンク分割
  • 5 / 15
  • 掃除する:毎ページのヘッダー・フッター・ノイズを取る
  • 社外秘 ― 就業規則 2026年版
  • 毎ページ同じヘッダー・フッター・ページ番号を消す
  • 第3条 有給休暇
  • 第4条 慶弔休暇
  • HTML のメニュー・広告・「関連記事」を消す
  • 改行で切れた単語や文をつなぎ直す
  • 勤続
  • 付与日数
  • 6か月
  • 10日
  • 同じ資料の重複(古い版・コピー)を1つにする
  • 1年6か月
  • 11日
  • 6年6か月以上
  • 20日
  • 消しすぎない(見出し・表の見出しは残す)
  • - 3 -
  • 全ページに出る同じ文は、どの質問にも「近く」見えて検索を汚す。取り除く。

メタデータ:チャンクに「札」を付ける

チャンクには、本文のほかに、そのチャンクについての情報を持たせておきます。これをメタデータと呼びます。図書館の本に貼ってある分類ラベルや、貸し出しカードのようなものです。

メタデータ何に使うか
出典(ファイル名・ページ・URL)答えに添えて見せる。人が元の資料で確かめられる
見出しの道のり(第3章 > 第3条)どこの話かを示す。検索や LLM への手がかりにも
更新日・版古い版を除く。「最新の規程だけ」で絞り込む
種類(正式な規程・議事録・メモ)正式な資料を優先する
見てよい人(部署・役職・グループ)権限の無い人の検索結果から除く

特に大事なのが最後の見てよい人(権限)です。人事部だけが見てよい資料が、全社員向けのチャットの答えに混ざったら大事故です。RAG は、資料庫にあるものは何でも探して LLM に読ませてしまいます。見せてはいけない資料は、LLM に渡す前に、検索の段階で除く必要があります。そのためには、元の資料が持っていた権限の情報を、読み込みの時点でチャンクに写しておかなければなりません。

メタデータは、読み込みの段で捨ててしまうと後から取り戻せません。最初は使わなくても、取れるものは取っておくのがおすすめです。メタデータで検索を絞り込む方法は第5章、権限の扱いは第13章で見ます。

  • RAG のすべて 03 ― 文書の準備とチャンク分割
  • 6 / 15
  • メタデータ:チャンクに「札」を付ける
  • 出典
  • 就業規則.pdf 3ページ
  • 第3条 有給休暇
  • 入社6か月後に10日を付与する。以後、勤続年数に応じて付与日数を増やす…
  • 見出し
  • 第3章 休暇 > 第3条
  • 更新日
  • 2026-04-01
  • 種類
  • 規程(正式)
  • 見てよい人
  • 全社員
  • 例:「2025年以前は除く」「人事部だけに見せる」をメタデータで絞り込む(第13章)
  • 出典・日付・見せてよい人。本文と一緒に持たせておくと、絞り込み・出典・権限に使える。

チャンクが小さすぎると、文脈が消える

ここから、切り方の話に入ります。図の左は、第3条・第4条・第5条からなる文書です。その上に重なっている色の付いた枠が、チャンクです。これから、この枠が、切り方に合わせて伸び縮みしていきます。

まずは、小さく切りすぎた場合です。1文ずつ、あるいは数十文字ずつに切ると、図のように細かい枠がたくさんできます。

小さいチャンクの良い点は、当たったときにぴったりの所だけを渡せることです。LLM に渡す量も少なく済みます。

でも、困ったことが起きます。たとえば「10日を付与する。」というチャンクができたとします。これだけを見ても、何の10日なのか分かりません。有給休暇なのか、慶弔休暇なのか。いつ付与されるのか。その情報は、前の文や見出しにあったのに、切り離されてしまいました。

小さすぎると何が起きるか
文脈が消える「それ」「この場合」が何を指すか分からない
手がかりが少ない言葉が少ないので、質問と近いかを判断しにくい
答えが散らばる答えに必要な情報が、たくさんのチャンクに分かれる

人にたとえると、本のページをはさみで1行ずつ切り刻んで、そのうちの1枚だけを渡されるようなものです。

  • RAG のすべて 03 ― 文書の準備とチャンク分割
  • 7 / 15
  • チャンクが小さすぎると、文脈が消える
  • 第3条 有給休暇
  • 「10日を付与する。」
  • 第4条 慶弔休暇
  • 何の10日か、どの条の話か分からない
  • 言葉が少なく、質問と照らす手がかりが乏しい
  • 第5条 申請の手順
  • 当たれば、ぴったりの所だけを渡せる
  • 「10日を付与する。」だけを渡されても、何の10日なのか LLM にも分からない。

大きすぎると、話題が混ざってぼやける

逆に、大きく切りすぎた場合です。図では、第3条と第4条がまとめて1つのチャンクになりました。

大きいチャンクの良い点は、文脈がよく残ることです。「10日を付与する」の前後もちゃんと入っているので、読めば意味が分かります。

でも、別の問題が出ます。

1つ目は、焦点がぼやけることです。検索のために、チャンクは1つずつ埋め込み(文章を、意味の地図の上の1点の座標にすること。第4章)に変えます。チャンク全体の意味が、1つの点にまとめられるのです。有給休暇と慶弔休暇と申請の方法が混ざったチャンクは、そのどれにも「そこそこ近い」、でもどれにも「ぴったり近い」わけではない、平均的な座標になってしまいます。すると、「慶弔休暇は何日?」という質問に対して、慶弔休暇だけを書いた別の資料のほうが近く見えて、こちらが拾われないことがあります。

2つ目は、渡す量が増えることです。質問に関係あるのは1文だけなのに、関係ない部分まで丸ごと LLM に渡すことになります。第1章で見たとおり、高く・遅く・見落としやすくなります。

大きさ良い点悪い点
小さい焦点がはっきり。渡す量が少ない文脈が消える
大きい文脈が残る焦点がぼやける。渡す量が多い

どちらにも良い点と悪い点がある、トレードオフです。万能の正解はなく、資料と質問の性質によって変わります。よく使われる出発点は数百〜千トークン(第1章で見た、LLM が文章を数える単位)くらいですが、必ず自分の資料と質問で試して決めます(第12章)。「探すのは小さく、渡すのは大きく」という両取りの工夫(親子チャンク)は第10章で見ます。数字を変えて比べる方法は第12章です。

  • RAG のすべて 03 ― 文書の準備とチャンク分割
  • 8 / 15
  • 大きすぎると、話題が混ざってぼやける
  • 第3条 有給休暇
  • 有給休暇の日数…慶弔休暇の日数…申請の方法…
  • 第4条 慶弔休暇
  • 前後の文脈はよく残る
  • 1つのベクトルに話題が混ざり、焦点がぼやける
  • 第5条 申請の手順
  • LLM に渡す量が増え、高く・遅く・雑になる(第1章)
  • 1つのチャンクに3つの話題が入ると、どの質問にも「そこそこ近い」だけになる。

切れ目をまたぐ文のために、少し重ねて切る

決まった長さで切ると、どうしても文の途中で切れることがあります。「入社6か月後に」で1つ目のチャンクが終わり、「10日を付与する」が2つ目のチャンクに入る、といった具合です。こうなると、どちらのチャンクにも完全な答えが入っていません。

そこでよく使われるのが、隣り合うチャンクを少し重ねて切る方法です。図では、枠が少しずつずれながら重なっています。重なった部分の文は、両方のチャンクに入ります。すると、切れ目にかかった文も、どちらか一方には丸ごと残りやすくなります。

重なり効果と副作用
無し切れ目の文が割れやすい
1〜2割よく使われる出発点。割れにくくなる
多すぎる同じ文が何度も拾われ、渡す量と保存する量が増える

ただし、重ねるのは応急手当です。重ねても、「第3条の途中から第4条の途中まで」のような、話題の切れ目とずれたチャンクができる問題は解決しません。それを解決するには、切る場所そのものを賢く選ぶ必要があります。次のページで、切り方の型を見ます。

  • RAG のすべて 03 ― 文書の準備とチャンク分割
  • 9 / 15
  • 切れ目をまたぐ文のために、少し重ねて切る
  • 第3条 有給休暇
  • 重なった帯の部分は、2つのチャンクの両方に入る
  • 文の途中で切れても、どちらかに全部が残る
  • 第4条 慶弔休暇
  • 同じ文が2回拾われ、渡す量が少し増える
  • 重ねても、話題の切れ目とずれる問題は残る
  • 第5条 申請の手順
  • 出発点の例:数百〜千トークン、重なりは1〜2割
  • 隣のチャンクと1〜2割ほど重ねると、切れ目の文がどちらかに丸ごと残る。

切り方の4つの型:長さ・区切り文字・見出し・意味

チャンクの切り方には、大きく4つの型があります。

型やり方向いている資料
固定長決まった文字数・トークン数で機械的に切る構造の無い文章。まず動かすとき
再帰的段落 → 文 → 語の順に、大きな切れ目から試し、長すぎる所だけさらに細かく切る多くの文章で使える標準的なやり方
構造(見出し)見出し・章・条・節の単位で切る規程・マニュアル・Markdown・HTML など、見出しがはっきりした資料
意味隣り合う文の意味の近さを測り、話題が変わる所で切る見出しが無く、話題があちこち移る文章

再帰的な切り方は、たとえば LangChain の分割部品(RecursiveCharacterTextSplitter)が採用していて、よく使われます。「まず空行(段落の切れ目)で切ってみて、それでも長すぎる塊だけを、改行や句点で切り直す」という考え方です。文の途中で切れることが、固定長よりずっと少なくなります。

図は見出しで切った場合です。第3条・第4条・第5条が、それぞれ1つのチャンクになりました。枠が文書の構造にぴったり重なっています。規程やマニュアルのように、書き手がすでに意味の切れ目を見出しで示してくれている資料では、それを使うのが一番素直です。

ただし、1つの見出しの下がとても長い場合は、その中をさらに再帰的に切ります。逆に短すぎる節は、隣とまとめます。実際には「見出しで大きく切り、長すぎれば再帰的に切る」という組み合わせがよく使われます。

  • RAG のすべて 03 ― 文書の準備とチャンク分割
  • 10 / 15
  • 切り方の4つの型:長さ・区切り文字・見出し・意味
  • 第3条 有給休暇
  • 固定長
  • 決まった長さで切る。簡単だが文の途中で切れる
  • 再帰的
  • 段落 → 文 → 語の順に、大きな切れ目から試す
  • 第4条 慶弔休暇
  • 構造(見出し)
  • 見出し・条・節で切る。図はこれ
  • 第5条 申請の手順
  • 意味
  • 話題が変わる所を、埋め込みの近さで探す
  • 迷ったら「再帰的」か「見出し」から始める
  • 文書に構造(見出し・段落)があるなら、その切れ目で切るのが一番素直。

意味で切る:話題が変わる所を探す

見出しが無い文章、たとえば議事録やメールのやりとり、長い説明文では、どこで話題が変わるのかが、形からは分かりません。そこで、意味の近さを使って切れ目を探す方法があります。

やり方の考え方は、次のとおりです。まず文章を1文ずつに分けて、それぞれを埋め込み(意味を表す数の並び)にします。次に、隣り合う文どうしの近さを順番に測っていきます。同じ話題が続いている間は、近さは高いままです。話題が変わると、近さがガクッと下がります。図の右のグラフの、谷になっている所です。そこを切れ目にします。

図の左では、第3条が2つに分かれました。第3条の中に「付与日数」と「繰り越し」という2つの話題があり、その間で近さが下がった、というイメージです。

良い点気をつける点
見出しが無くても、話題のまとまりで切れる1文ずつ埋め込むので、準備の費用と時間が増える
話題の混ざったチャンクができにくい「どれだけ下がったら切るか」の調整が要る
効果は資料によって差があり、固定長や再帰的と大差ないこともある

意味で切る方法は魅力的に聞こえますが、いつも一番良いとは限りません。「まず再帰的か見出しで切り、測ってみて足りなければ試す」くらいの順番がおすすめです。どの切り方が良いかは、自分の資料と質問で測って決めます(第12章)。

  • RAG のすべて 03 ― 文書の準備とチャンク分割
  • 11 / 15
  • 意味で切る:話題が変わる所を探す
  • 第3条 有給休暇
  • 隣の文との近さ
  • 第4条 慶弔休暇
  • 第5条 申請の手順
  • 赤い線が切れ目(近さが大きく下がった所)
  • 文ごとに埋め込みが要るので、準備の費用と時間が増える。効果は資料によって差がある
  • 隣り合う文の近さを測り、ガクッと下がる所で切る。手間はかかるが自然な塊になる。

チャンクに「どこの話か」を書き足す

どんなにうまく切っても、切り出したチャンクは、元の文書の中にあったときの文脈を失います。「10日を付与する。」が第3条の有給休暇の話だということは、見出しや前の文を読まないと分かりません。

そこで、チャンクの先頭に「これはどこの、何についての部分か」を短く書き足してから、埋め込みや検索の索引を作る、という工夫があります。

いちばん簡単な形は、資料名と見出しの道のりを付けることです。「就業規則 > 第3章 休暇 > 第3条 有給休暇」を先頭に付けるだけで、「有給休暇」という言葉がチャンクに入ります。LLM を使わないので、費用もほとんどかかりません。メタデータ(見出しの道のり)を取っておいたことが、ここで生きます。

手間をかけた形として、Anthropic が 2024年9月に公開した Contextual Retrieval という方法があります。文書全体とチャンクを LLM に読ませて、「このチャンクは文書全体の中でどういう部分か」を説明する短い文(50〜100トークンほど)を書かせ、それをチャンクの先頭に付けてから、埋め込みと、キーワード検索(言葉の一致で点数を付ける昔ながらの検索。代表的な方式が BM25。第6章)の索引の両方を作ります。

同社の実験では、上位20件の中に正しいチャンクが入らない「検索の失敗」が、この方法(埋め込み+BM25)で 49% 減り、さらにリランキング(拾った候補を別のモデルで読み直して並べ替えること。第7章)を組み合わせると 67% 減ったと報告されています。ただし、これは同社のデータでの結果です。また、全チャンクについて LLM を1回ずつ呼ぶので、準備の費用がかかります(同じ文書を何度も読ませる部分は、読んだ結果を使い回す「プロンプトのキャッシュ」(第1章)で安くできるとされています)。

  • RAG のすべて 03 ― 文書の準備とチャンク分割
  • 12 / 15
  • チャンクに「どこの話か」を書き足す
  • (就業規則 > 第3条 有給休暇。 入社6か月時点の付与日数についての部分)
  • Contextual Retrieval
  • Anthropic が 2024年9月に公開
  • 10日を付与する。
  • 検索の失敗(同社の実験)
  • 簡単な形:資料名と見出しの道のりを先頭に付ける (LLM を使わない)
  • 文脈つき埋め込み+BM25
  • 49% 減
  • さらにリランキング
  • 67% 減
  • 手間をかけた形:LLM に文書全体とチャンクを 読ませて、説明を書かせる
  • 費用:全チャンクで LLM を1回ずつ呼ぶ
  • 切り出すと失われる文脈を、先頭に短く足してから埋め込む。検索の取りこぼしが減る。

ID を振る:出典を示し、改訂で差し替えるために

最後の仕事は、チャンクに ID(名札)を振ることです。第2章でも少し触れましたが、ID の付け方は、RAG を運用し始めてから効いてきます。

資料は変わります。就業規則は毎年のように改訂され、マニュアルは製品の更新に合わせて書き換えられます。改訂のたびに、資料庫の中身も入れ替えなければなりません。このとき、ID がでたらめ(毎回ランダム)だと、どのチャンクが古い版のものか分からず、古いチャンクが索引に残り続けます。すると、「有給は最大20日」という古い規程と「最大25日」という新しい規程が両方拾われ、LLM がどちらかを選んで答える、という事故が起きます。

おすすめは、資料と位置から決まる ID と、中身の指紋(ハッシュ) を持たせることです。ハッシュは、文章から計算して作る短い文字列です。同じ文章からは必ず同じ値が出て、1文字でも変わるとまったく違う値になります。

ts
import { createHash } from "node:crypto";

function makeChunk(doc: string, section: string, n: number, text: string, source: string) {
  return {
    id: `${doc}#${section}-${n}`,                          // 例: shugyo-kisoku#3-1
    hash: createHash("sha256").update(text).digest("hex"), // 本文が変われば変わる
    doc, text, source,
  };
}

このコードは、ID を「資料名#条-連番」の形で組み立て、本文から SHA-256(よく使われるハッシュの計算方法)で指紋を計算して、本文・出典と一緒に1つのチャンクにまとめています。

改訂版を読み込んだら、図の右の手順で差し替えます。同じ ID のハッシュを比べ、変わったチャンクだけを埋め込み直します。変わっていないチャンクは、埋め込みの費用をかけずにそのまま使えます。新しい版で消えた ID は、索引からも消します。これを忘れると、廃止された規程がいつまでも答えに出てきます。

ID は出典の表示にも使います。答えに付いた番号から ID をたどり、元の資料名とページを見せる、という第2章の仕組みです。

  • RAG のすべて 03 ― 文書の準備とチャンク分割
  • 13 / 15
  • ID を振る:出典を示し、改訂で差し替えるために
  • {
  • 改訂版を読み込む
  • id: "shugyo-kisoku#3-1", // 資料 # 条-連番
  • doc: "shugyo-kisoku", version: "2026-04",
  • hash: "9f2c…", // 本文から計算
  • 同じ ID のハッシュを比べる
  • text: "第3条 有給休暇 …", source: "就業規則.pdf p.3"
  • }
  • 変わったものだけ埋め込み直す
  • ID が毎回ランダムだと、どれを消せばよいか分からず、 古い版が索引に残り続ける
  • 消えた ID は索引から消す
  • 資料名と位置から決まる ID と、中身の指紋(ハッシュ)を持たせる。更新が楽になる。

よくある落とし穴と、ほかの章とのつながり

この章の内容で、実務でよく見かける落とし穴をまとめます。

落とし穴何が起きるか対策
抽出結果を目で見ない表や段組みの崩れに気づかず、答えが出ない理由が分からない資料の種類ごとに、取り出した文字とチャンクを実際に読む
古い版が残る新旧の規程が両方拾われて矛盾する資料と位置から決まる ID。消えた ID は消す(第13章)
権限を落とす見せてはいけない資料が答えに混ざる読み込み時に権限をメタデータに写す(第13章)
測らずに決める切り方を変えて「良くなった気がする」で終わる質問と正解の組を用意して比べる(第12章)
1つの設定を全部に使う規程と議事録と表で、最適な切り方が違う資料の種類ごとに切り方を変える

最初の「目で見る」は、何度でも強調したい点です。RAG がうまく答えられないとき、原因を検索や LLM に求めがちですが、実際にはそもそもチャンクの文字が崩れていたということが少なくありません。

この章とつながる章は、次のとおりです。

章つながり
第4章 埋め込みこの章で作ったチャンクを、意味の座標にする
第6章 ハイブリッド検索型番や条文番号のような語は、キーワード検索で拾う
第10章 索引の工夫親子チャンク、表・画像の扱い、要約を索引にする方法
第13章 運用とセキュリティ資料の更新、権限、古い情報の扱い
  • RAG のすべて 03 ― 文書の準備とチャンク分割
  • 14 / 15
  • よくある落とし穴と、ほかの章とのつながり
  • 抽出した文字を一度も目で見ずに索引を作る(表・段組みの崩れに気づかない)
  • 改訂前の版が残り、新旧の規程が両方拾われて矛盾する(第13章)
  • 権限のメタデータを落とし、見せてはいけない資料が答えに混ざる(第13章)
  • 切り方を変えたのに、効果を測らずに「良くなった気がする」で決める(第12章)
  • つながる章:埋め込み(第4章)/ 親子チャンク・表や画像の扱い(第10章)
  • 抽出結果を目で見ない・古い版が残る・権限を落とす。どれも後の章では取り返しにくい。

まとめ:読み込む・掃除する・札を付ける・切る・ID を振る

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

仕事要点
読み込む形式ごとの道具で文字にする。PDF の段組み・表、スキャンの OCR に注意。結果は目で見る
掃除するヘッダー・フッター・メニュー・重複を取る。見出しは残す
札を付ける出典・見出しの道のり・日付・種類・権限をメタデータとして持たせる
大きさ小さすぎると文脈が消え、大きすぎると焦点がぼやける。数百〜千トークンから試す
重なり1〜2割重ねて、切れ目の文を守る。応急手当であって解決ではない
切り方固定長・再帰的・見出し・意味。迷ったら再帰的か見出しから
文脈を足す見出しの道のりや、LLM が書いた説明をチャンクの先頭に付ける
ID資料と位置から決め、ハッシュで変更を見分ける。消えた ID は消す

RAG の答えの質は、この章で作ったチャンクの質を超えられません。検索の工夫に進む前に、まずチャンクを実際に読んで、人が読んでも意味の分かる塊になっているかを確かめましょう。

次の第4章では、このチャンクを埋め込み、つまり「意味の座標」に変える仕組みを見ます。

  • RAG のすべて 03 ― 文書の準備とチャンク分割
  • 15 / 15
  • まとめ:読み込む・掃除する・札を付ける・切る・ID を振る
  • 読み込む
  • 形式ごとの道具で文字にする。PDF・表・スキャンに注意
  • 掃除する
  • ヘッダー・フッター・メニュー・重複を取る
  • 札を付ける
  • 出典・見出し・日付・権限をメタデータとして持たせる
  • 大きさ
  • 小さすぎると文脈が消え、大きすぎるとぼやける
  • 切り方
  • 固定長 → 再帰的・見出し → 意味(手間の少ない順)。重なりは1〜2割
  • 文脈を足す
  • 見出しの道のりや LLM の説明をチャンクの先頭に
  • ID
  • 資料と位置から決め、ハッシュで変更を見分ける
  • チャンクの質が RAG の上限を決める。次章では、このチャンクを「意味の座標」にする。

0 件のコメント

読み込み中…

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