チャンクとオーバーラップの効果的な設定値
はじめに
MSの記事に「Azure AI Search: ハイブリッド検索とランキング機能により、ベクター検索を上回るパフォーマンスを実現」という記事があるのですがここにチャンクとオーバーラップの設定値がどれくらいだとスコアが高いのかということの検証結果が書かれていたので、その部分に焦点を当てました。
詳しい内容は以下をご参照ください
ベクター検索は、文章の意味に基づいて関連する情報を探す方法です。
例えば、「犬が好き」という検索クエリに対して、「犬の飼い方」や「犬の種類」などの関連する情報を見つけます。
ベクター検索の効果を最大限に発揮するためには、いくつかの工夫が必要です。
その要素に「チャンク」と「オーバーラップ」というものがります。
ですがどれくらいの設定値がいいのか?という疑問があったので調べました。
チャンクとは?
チャンクとは、長いドキュメントを小さな部分に分割することを指します。例えば、5000単語のドキュメントを500単語ごとの部分に分割すると、それぞれの部分がチャンクになります。
チャンクに分割することで、検索クエリに対してより関連性の高い部分を見つけやすくなります。
オーバーラップとは?
オーバーラップとは、隣り合うチャンクが一部重なるように分割することを指します。
オーバーラップを設定することで、重要な情報がチャンクの境界で切り捨てられないようにすることができます。
![](https://assets.st-note.com/img/1716736685765-i5u1xWwPlG.png?width=1200)
チャンクとオーバーラップの重要性
ベクター検索の精度を向上させるためには、適切なチャンクサイズとオーバーラップの設定が重要です。
長いドキュメントを適切に分割し、重なりを持たせることで、より精度の高い検索結果を得ることができます。
MSの記事(Azure AI Search)では、さまざまなチャンクサイズとオーバーラップ設定におけるベクター検索のパフォーマンスを比較していてその結果は以下です。
チャンクサイズの最適化(MS記事内の表3)
表3は、文章を異なるチャンクサイズに分けた際の検索性能(Recall@50)を示しています。
![](https://assets.st-note.com/img/1716737252061-595bbqgVwg.png)
結果から、512トークンのチャンクが最も高いRecall@50を示し、ベクター検索において優れたパフォーマンスを発揮することがわかります。
一方、チャンクサイズが大きくなるほどリコール値は低下しています。
オーバーラップの最適化(MS記事内の表4)
表4は、ドキュメントを分割する際のオーバーラップ設定がRecall@50に与える影響を示しています。
![](https://assets.st-note.com/img/1716737160536-5NpjvYXpoe.png)
結果から、25%の重複を含む512トークンのチャンクが最も高いRecall@50を示し、ベクター検索の精度が向上することがわかります。
結論
この記事によるとベクター検索のパフォーマンスを最大化するためには、ドキュメントを512トークンのチャンクに分割し、25%のオーバーラップを設定することで精度が向上すると書かれています。
この記事が気に入ったらサポートをしてみませんか?