RAG入門:AIに知識を与える技術
チャンキングとは?テキストを効果的に分割する方法
このレッスンで分かること
- この記事では「チャンキングとは?テキストを効果的に分割する方法」を RAG 実装 の現場で使える形で整理します
- RAGにおけるチャンキングの重要性:なぜ分割が必要なのか? をおさえれば、現場で迷ったときに立ち戻れる
- 代表的なチャンキングの手法と戦略 をおさえれば、現場で迷ったときに立ち戻れる
- 1. 固定長チャンキング(Fixed-size Chunking) をおさえれば、現場で迷ったときに立ち戻れる
- 2. 再帰的文字分割(Recursive Character Text Splitting) をおさえれば、現場で迷ったときに立ち戻れる
チャンキング とは
RAG(検索拡張生成)の精度を左右する「チャンキング」の基本と実践手法を解説。テキストを効果的に分割するサイズ設定や、情報断絶を防ぐオーバーラップのコツ、データ形式別の戦略まで、図解を交えて専門家が詳しくレクチャーします。
生成AIに独自の知識を学習させる「RAG(検索拡張生成)」を構築する際、最初にして最も重要なステップが「チャンキング」です。本レッスンでは、膨大なテキストデータをAIが扱いやすいサイズに分割する技術であるチャンキングの基本から、精度を最大化するための実践的な戦略までを詳しく解説します。
チャンキング — 長文を検索可能な単位に切る前処理。RAGはチャンク単位で類似度を測るため、ここでの粒度設計がそのまま回答精度に直結します。
RAGにおけるチャンキングの重要性:なぜ分割が必要なのか?
RAG(Retrieval-Augmented Generation)のプロセスにおいて、データはまず「ベクトルデータベース」に保存されます。しかし、書籍一冊分や数千行の仕様書をそのままデータベースに投入しても、AIはうまく情報を探し出すことができません。ここで必要になるのがチャンキング(Chunking)です。
チャンキングとは、長い文章を「チャンク(塊)」と呼ばれる適切な長さに分割するプロセスを指します。なぜこの工程が不可欠なのでしょうか? 主な理由は3つあります。
- 埋め込みモデルの制限はテキストを数値化する「
埋め込みモデル(Embedding Model)」には、一度に処理できる最大トークン数(文字数の制限のようなもの)があります。これを超えると、文章の後方が切り捨てられてしまいます。 - 検索精度の向上はAIが質問に関連する情報を探す際、チャンクが大きすぎると「情報の焦点」がボヤけてしまいます。逆に適切に分割されていれば、ピンポイントで回答に必要な箇所を特定できます。
- LLMのコンテキストウィンドウは生成AI(
LLM)が一度に読み込める情報量には限りがあります。必要な部分だけを抽出して渡すことで、コストを抑えつつ正確な回答を得られます。
代表的なチャンキングの手法と戦略
テキストをどのように分割するかには、いくつかの標準的な手法があります。データの性質に合わせて最適なものを選ぶことが、RAGシステムの品質を左右します。
1. 固定長チャンキング(Fixed-size Chunking)
最もシンプルな手法で、文字数やトークン数に基づいて機械的に分割します。実装が容易で処理が速いのがメリットです。
2. 再帰的文字分割(Recursive Character Text Splitting)
段落、改行、句点(。)、読点(、)などの区切り文字を優先順位に従って探し、可能な限り意味の切れ目で分割を試みる手法です。LangChainなどのライブラリで最も推奨される汎用的な方法です。
3. 特殊構造への最適化
Markdown形式のドキュメントであれば「見出し(#)」で分割し、プログラミングコードであれば「関数やクラス」の単位で分割するなど、ドキュメントの構造を利用する手法です。
避けたい例 悪い例:単純な固定長分割のみを行う 「明日の会議は10時から。場所は3階の会議室です。」という文章を、文字数制限だけで「明日の会議は10時から。場」「所は3階の会議室です。」と分割してしまう。これでは「場所」という単語が分断され、検索エンジンが「場所」というキーワードでヒットできなくなる可能性があります。
良い例 良い例:セマンティック(意味的)な考慮とオーバーラップ 意味の切れ目を考慮して分割し、さらに前後のチャンクの内容を少し重複させる「オーバーラップ(Overlap)」を設定します。「明日の会議は10時から。場所は3階の会議室です。」という情報を一つの文脈として保持できるよう、文の途中で切らないように調整します。
最適なチャンクサイズと「オーバーラップ」の設定
チャンキングを設定する際、最も悩むのが「サイズ(Chunk Size)」と「重ね合わせ(Chunk Overlap)」の数値です。
チャンクサイズの影響
- 小さいサイズ(例は200トークン)は検索の解像度は高まりますが、背景知識(文脈)が不足し、AIが誤解を招く回答をするリスクがあります。
- 大きいサイズ(例は1000トークン)は文脈は豊富になりますが、ノイズ(関係ない情報)が含まれやすくなり、
検索精度が低下する傾向があります。
サイズとオーバーラップはセットで決める — まず500〜800トークン、オーバーラップ10〜20%で開始し、評価ログを見ながら片方ずつ動かして最適点を探るのが定石です。
オーバーラップの役割
チャンク同士の境界で情報が断絶するのを防ぐために、前のチャンクの末尾と次のチャンクの冒頭を少し重ねます。これをコンテキストの維持と呼びます。通常、チャンクサイズの10%〜20%程度をオーバーラップとして設定するのが一般的です。
| 設定項目 | 推奨値の目安 | 特徴 |
|---|---|---|
| チャンクサイズ | 500〜800トークン | バランスが良く、多くのユースケースで機能する |
| オーバーラップ | 50〜100トークン | 文脈の断絶を防ぎ、検索の一致率を高める |
実践!データ形式別のチャンキング戦略
取り扱うデータの種類によって、戦略を使い分けることがプロの技です。
- 社内規定・マニュアル(PDFなど)はセクション(第1章、第1節)ごとに分割するのが理想です。見出し情報を
メタデータとして付与するとさらに精度が上がります。 - 議事録は発言者ごとの区切りや、アジェンダごとの区切りでチャンキングします。
- ナレッジベース(FAQ)は1つの「問いと答え」を1つのチャンクとして扱うのがベストです。無理に分割せず、1つのQ&Aを1つの単位にします。
やってみよう あなたの手元に「100ページの製品マニュアル」があるとします。このマニュアルから特定のトラブルシューティング方法を素早く検索できるようにしたい場合、どのようなチャンキング戦略が最適だと思いますか?「分割の単位」と「オーバーラップの有無」の観点から考えてみましょう。
まとめ
チャンキングは、RAGの精度を決定づける「データの仕込み」作業です。単に短く切れば良いわけではなく、「意味のまとまりを維持すること」と「検索のヒットしやすさ」のバランスを取ることが成功の鍵となります。まずは再帰的な分割から始め、検証を繰り返しながら、自社データに最適なサイズを見つけていきましょう。
次は、分割したテキストをAIが理解できる数値表現に変換する「埋め込み(Embedding)」について学んでいきます。
「神は細部に宿る」と言いますが、RAGにおいては「精度はチャンキングに宿る」と言っても過言ではありません。地味な作業に見えますが、ここでの工夫が最終的な回答の質を大きく変えます。一歩ずつマスターしていきましょう!
現場でよくある具体例
- 業務ケース 1 — 社内規程 200 ページに RAG を導入。チャンクサイズ 512、
top-k=5、Re-ranker 有りで Recall@5 が 0.62 → 0.81 - 業務ケース 2 — エンジニア向け技術文書では「コードブロックを 1 チャンク」にしたら検索精度が大きく改善
- 業務ケース 3 — 営業 FAQ では
BM25+ Embedding の Hybrid Retrieval で、固有名詞検索の取りこぼしが減った
次にとるべきアクション
- 手元の社内 PDF / FAQ 10 件で RAG ミニ版を作る —
LangChainかLlamaIndexで構築し、「チャンキングとは?テキストを効果的に分割する方法」の論点を試す - チャンクサイズと検索件数を 2 通り試す — 256 / 512 トークン × top-k=3 / 5 など、定量比較する
- 評価指標を 1 つ決める — Recall@k / 回答正答率 / コストのいずれかをチームで KPI 化する
次のレッスン
次は 埋め込み(Embedding)とは?テキストをベクトル化する仕組み で、埋め込み(Embedding)とは?テキストをベクトル化する仕組み を学びます。
事前確認 — 進む前に次の 3 つができることを確認しましょう。
- チャンキング の要点を自分の言葉で説明できる
- このレッスンの最小コード (または操作手順) を見ずに書ける
- 練習問題やクイズで間違えた箇所を読み直して理解した
理解度チェック (30 秒)
Q. チャンキング とは何か、1 文で説明してください。
A. 本文の「このレッスンで分かること」または冒頭の説明文を見直し、自分の言葉で要約できれば OK。詰まったら本レッスンの最初の H2 セクションを読み返してみましょう。
関連レッスン
参考にした出典
- Lewis et al.「Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks」 — RAG の原論文(出典: NeurIPS 2020, https://arxiv.org/abs/2005.11401)
- OpenAI Cookbook「Question answering using embeddings」 — Embedding ベース検索の実装例(出典: OpenAI, https://cookbook.openai.com/examples/question_answering_using_embeddings)
- LangChain 公式ドキュメント「RAG」 — チャンク分割・リトリーバ設計のベストプラクティス(出典: LangChain, https://python.langchain.com/docs/tutorials/rag/)
学習を加速したい方へ
RAG (検索拡張生成) 入門ガイドを体系的にマスターするなら、chotdekiru の無料学習ポータル で実際に手を動かして学習を始めるのがおすすめです。質問・つまずきも現役エンジニアが伴走します。
復習ミニクイズ
法律の条文や技術マニュアルをRAGで扱う際、「文の途中で情報が途切れてしまい、AIが検索結果の文脈を正しく理解できない」という課題が発生しました。この問題を解決し、検索精度と回答品質を両立させるために最も効果的なチャンキングの工夫はどれですか?