大規模言語モデルを使って組織内の全データを検索する時にはどのような前処理を行うと効率的なのか?

大規模言語モデルを使って組織内の全データを検索する時にはどのような前処理を行うと効率的なのか? - 画像


組織には構造化されたデータベースやきれいにフォーマットされたCSVのほか、何気なく書いたメールから複雑な技術マニュアルまでさまざまな形式のデータが大量に保存されています。検索拡張生成(RAG)は大規模言語モデル(LLM)を使用して全てのデータから適切な情報を引き出すための技術ですが、RAGを使用する際にデータの取り込みと前処理をどのように行うと効率的なのかを、RAG向けデータ前処理サービスを展開するUnstructuredが解説しました。
Understanding What Matters for LLM Ingestion and Preprocessing – Unstructured
https://unstructured.io/blog/understanding-what-matters-for-llm-ingestion-and-preprocessing

大規模言語モデルを使って組織内の全データを検索する時にはどのような前処理を行うと効率的なのか? - 画像


LLMを最大限に活用するには、構造化されていないドキュメントをLLMが読みやすい形式に変換することが大切です。Unstructuredは「変換」「クリーニング」「チャンク化」「要約」「埋め込み」という手順に分けて前処理を解説しています。
・変換(Transform)
変換フェーズでは、まず元となるドキュメントからメインのコンテンツを抽出し、続いて抽出されたテキストを可能な限り最小の要素に分解します。最後にそれぞれの要素をJSONなど構造化された形式にまとめて保存することで、後続の処理においてコードによるより効率的な操作が可能になります。RAGにとっては、元のファイル形式が何であってもデータを共通の構造化形式に変換することが重要です。
・クリーニング
データにはヘッダーやフッター、重複、無関係な情報など多数の不要なコンテンツが含まれています。不要なコンテンツをデータに含めると処理と保存に追加のコストがかかるうえ、コンテキストウィンドウが汚染されるという問題も発生してしまいます。構造化したデータの要素それぞれに付属しているメタデータを使用すると大規模なテキストコーパスを効率的にキュレーションできます。
・チャンク化
チャンク化はドキュメントをセグメントに分割することを指します。任意の文字数で分割したりピリオドなど自然な区切り文字を使用して分割したりと単純な分割が行われることが多いものの、スマートチャンキングと呼ばれる論理的でコンテキストに応じた分割を行った方がセグメント内のデータの関連性が向上してRAGアプリケーションのパフォーマンスが向上するとのこと。

大規模言語モデルを使って組織内の全データを検索する時にはどのような前処理を行うと効率的なのか? - 画像


・要約
チャンクの要約を生成し、データを蒸留(distillation)することでチャンク内の全文を回答の生成に使用できます。また、要約を行う事でデータのさまざまな表現を取得でき、生のデータとクエリとの効率的な照合が可能になるとのこと。画像や表の場合、要約によって発見可能性が大幅に向上します。
・埋め込み(Embedding)
最後に、機械学習モデルを使用してテキストをベクトル文字列に埋め込みます。埋め込みを行う事で元のデータのセマンティック情報をエンコードでき、キーワードの一致だけでなく意味の類似性に基づいてテキストを検索できるようになります。
こうして単一のファイルをRAGに対応させるための前処理が行われるというわけです。Unstructuredはさらに多数のデータソースから全てのファイルを取得して前処理を行う「前処理パイプライン」の構築テクニックも解説しているので、気になる人は確認してみてください。

ジャンルで探す