お問い合わせ

チャンキング

英語表記
Chunking
読み
ちゃんきんぐ
別名
チャンク分割

RAGなどでAIが文書を検索できるように、長い文書を意味のまとまりごとの小さな断片に分けること。

解説

チャンキングは、FAQ記事やマニュアルなどの長い文書を、チャンクと呼ばれる小さな断片に区切る処理です。RAG(検索拡張生成)では、生成AIが回答の根拠にする文書を検索する前に、あらかじめ文書をチャンクに分けておきます。どこで区切るかによって、検索で拾える情報と生成AIの回答の質が変わります。

仕組み

RAGの前処理では、一般に次の順で文書を準備します。

  1. 文書をチャンクに分割する
  2. 各チャンクをエンベディング(ベクトル)に変換する
  3. ベクトルデータベースなどに保存し、検索できるようにする

文書を分割する理由は、埋め込みモデルや生成AIが一度に受け取れる分量(トークン数)に上限があるためです。さらに、1つのチャンクに複数の話題が混ざると、検索で見つかりにくくなります。

分割の方式には、文字数やトークン数で機械的に区切る固定長の方式、文・段落・見出しで区切る方式、意味のまとまりで区切る方式があります。固定長の方式では、区切り目で文脈が切れないように、隣り合うチャンクの一部を重ねて持たせます。たとえば、MicrosoftはAzure AI Searchのドキュメントで、最初に試す値として、512トークンの大きさと25%(128トークン)の重なりを推奨しています。

実務での使われ方

FAQやヘルプ記事の書き方は、チャンキングの結果に直接影響します。見出しごとに1つの話題を扱い、見出しの直下に結論を書いた記事は、見出し単位で区切っても意味が通じるチャンクになります。

一方で、「上記の設定を行ったうえで」のように前の段落を前提にした書き方は、チャンクに分けると前提が失われます。Anthropicは、断片ごとに文書全体での位置づけを説明する短い文を付け足す手法を紹介しています。

注意点

チャンクを小さくしすぎると、1つのチャンクだけでは回答に必要な条件や例外が欠けます。反対に、大きくしすぎると、関係のない内容まで検索結果に含まれます。適切な大きさは文書の種類によって異なるため、実際の質問で検索結果を確かめながら調整します。

なお、「粒度」は、FAQ記事やマニュアルを人が読む単位でどこまで区切るかという考え方です。チャンキングは、AIの検索のために文書を分ける処理であり、記事の粒度とは別に設定されます。