チャンク分割とは——社内文書を、AIが探せる大きさに切る
長い文書を、検索して取り出せる大きさに切り分けること。切り方が粗いと的が絞れず、細かすぎると前後の文脈が失われます。
社内文書をAIに読ませる仕組み(RAG)を作ると、必ずこの工程が出てきます。文書をどう切るか。
地味な工程ですが、回答の質を左右するのはここです。
なぜ、切る必要があるのか
AIが一度に見渡せる範囲には上限があります(コンテキストウィンドウ)。社内文書を全部渡すことはできません。
そこで、あらかじめ文書を小さな単位に切っておき、質問に関係する部分だけを取り出して渡します。この切り分けた一つひとつをチャンクと呼びます。
図書館で本を丸ごと渡すのではなく、該当するページを開いて渡すイメージです。渡すページの選び方が的確なら、答えの質は上がります。
習い事の現場でいうと
ピアノの発表会前、通しで弾かせても直りません。
止まる場所は毎回同じなのに、通すたびに勢いで越えていく。直るのは、そのフレーズだけを取り出して繰り返したときです。かといって一音ずつ区切ると、今度は曲として繋がらなくなります。
効くのは、フレーズで区切ることです。作った人が一つのまとまりとして書いた単位。
文書を切るときも、正解はたいてい元の構造にあります。章、条、見出し。書いた人が一つの話として書いた場所で切ると、後から探すときに素直に見つかります。
そして、切った断片には「曲のどこか」を必ず添えておく。楽譜の途中の四小節だけ渡されても、何の曲か分からないのと同じです。
切り方で、答えが変わる
粗すぎる切り方。就業規則を丸ごと一つのチャンクにすると、「有給の申請期限は」という質問に対して規則全体が渡されます。AIは大量の文章の中から該当箇所を探すことになり、周辺の条文に引きずられた答えが返ることがあります。
細かすぎる切り方。文単位で切ると、「ただし、前項の場合はこの限りでない」といった一文が単独で取り出されます。何の例外なのか分からないまま渡されるので、答えが成り立ちません。
構造に沿った切り方。規程なら条ごと、マニュアルなら手順の見出しごと、議事録なら議題ごと。人が「ここまでが一つの話」と感じる単位が、実務ではいちばん安定します。
文字数で機械的に切る方法もありますが、その場合も見出しの情報を各チャンクに添えておくと、精度が違います。「第3章 休暇 / 第12条 年次有給休暇」という見出しが付いていれば、本文が短くても何の話か伝わります。
表と図が、いちばん崩れる
文章はそのまま切れますが、表と図は扱いが違います。
表を機械的に切ると、見出し行と中身が別のチャンクに分かれます。数字だけが並んだ断片が渡され、何の数字か分からないまま答えが作られます。これはハルシネーションの温床です。
現実的な対処は二つです。表は途中で切らず一つの単位として扱うこと。そして、表が何を示しているかを説明する一文を添えておくこと。一文があるだけで、埋め込みによる検索にも引っかかるようになります。
図やスクリーンショットは、そのままでは検索できません。何が描かれているかを文章で書いておく必要があります。手間はかかりますが、人が読むときにも効きます。
文書側でできること
仕組みの側でどれだけ工夫しても、元の文書が整っていなければ限界があります。文書側でやっておくと効くのは、この三つです。
- 見出しを付ける。構造で切れるようになり、切った後も何の話か伝わる
- 最新版を一つに決める。古い版が残っていると、仕組みは平然と古いほうを引きます
- 用語を揃える。略称と正式名称の対応を、用語集として置いておく
どれも、AIのためだけの作業ではありません。人が探すときにも効くので、投資として無駄になりにくい部分です。
切ったチャンクをどこに置くかについては、ベクトルデータベースで続けます。
顧問先によく聞かれること
- 何文字くらいで切るのが正解ですか。
- 文字数で決めるより、文書の構造で切るほうが安定します。規程なら条ごと、マニュアルなら手順の見出しごと、議事録なら議題ごと。人が「ここまでが一つの話」と感じる区切りが、たいてい正解に近くなります。
- 文書を作り直す必要がありますか。
- 全部を作り直す必要はありません。効くのは、見出しを付けること・最新版を一つに決めること・用語を揃えることの三つです。この三つは人が読むときにも効くので、AIのためだけの作業にはなりません。
出典(一次情報)
- File search(文書の分割・埋め込み・検索) OpenAI API Docs
解釈を挟まない一次情報だけを挙げています。仕様・条件・制度は改定されるため、 判断に使う際は必ずリンク先の最新版をご確認ください。