言語モデルがテキストを処理しセグメント化する方法は、従来の静的なアプローチから、より優れた、より応答性の高いプロセスに変化しています。エージェント型チャンキングでは、固定点で大きな文書をチャンク化する従来の固定サイズチャンキングとは異なり、AIベースの技術を用いて動的プロセスでコンテンツを分析し、テキストをセグメント化する最適な方法を決定します。
エージェント型チャンキングでは、AIベースのテキスト分割手法、再帰的チャンク化、チャンク・オーバーラップ手法を利用し、これらの手法が同時に働き、チャンク化能力を洗練させ、注目すべきアイデア間のリンクを最適化しながら、コンテキスト・ウィンドウをリアルタイムで最適化します。エージェント型チャンキングにより、各チャンクはメタデータで強化され、検索の精度と全体的なモデル効率が向上します。これは、データのセグメンテーションが検索品質と応答の一貫性に直接影響を与える可能性があるRAGアプリケーションでは特に重要です。意味のあるコンテキストはすべての小さなチャンクに保存されるため、このアプローチはチャットボット、知識ベース、生成AIのユースケースにとって非常に重要です。LangchainやLlamaIndexなどのフレームワークでは、検索効率がさらに向上するため、この方法は非常に効果的です。
1. 適応型チャンキング戦略:コンテンツの種類、クエリの背後にある意図、検索のニーズに基づいて最適なチャンク化方法を動的に選択し、効果的なセグメンテーションを実現します。
2. 動的チャンク・サイジング:固定トークンの制限に固執するのではなく、意味構造とコンテキストを考慮することでチャンク・サイズをリアルタイムで変更します。
3. 文脈保持型オーバーラップ:チャンク間のオーバーラップをスマートに評価し、文脈の一貫性を維持しつつ重要な情報を失わないようにすることで、検索効率を向上させます。
IBMニュースレター
AI活用のグローバル・トレンドや日本の市場動向を踏まえたDX、生成AIの最新情報を毎月お届けします。登録の際はIBMプライバシー・ステートメントをご覧ください。
ニュースレターは日本語で配信されます。すべてのニュースレターに登録解除リンクがあります。サブスクリプションの管理や解除はこちらから。詳しくはIBMプライバシー・ステートメントをご覧ください。
エージェント型チャンキングには、従来のチャンキングに比べて次のようなメリットがあります。
a. 文脈の維持:不要な中断なしで重要な情報を保持します。
b. スマートサイジング:意味と重要性に応じてチャンクの境界を調整します。
c. クエリー最適化:特定のクエリーに合わせてチャンクを継続的に改善します。
d. 効率的な検索:不要な断片化を最小限に抑えることで、検索およびRAGシステムの出力を改善します。
このチュートリアルでは、watsonx.ai®で現在利用可能なIBM® Granite-3.0-8B-Instructモデルを使用して、エージェント型チャンキング戦略を試します。全体的な目標は、効率的なチャンク化を実行して、RAGを効果的に実装することです。
watsonx.aiプロジェクトを作成するには、IBM® Cloudのアカウントが必要です。
いくつかのツールから選択することはできますが、このチュートリアルでは、Jupyter Notebookを使用するためにIBMアカウントを設定する方法について説明します。
IBM Cloudアカウントを使用して、watsonx.aiにログインします。
watsonx.aiプロジェクトを作成します。
プロジェクトIDは、プロジェクト内から取得できます。[管理]タブをクリックします。次に、「一般」ページの「詳細」セクションからプロジェクトIDをコピーします。本チュートリアルでは、このIDが必要となります。
Jupyter Notebookを作成します。
このステップでは、このチュートリアルのコードをコピーできるノートブック環境を開きます。あるいは、このノートブックをローカル・システムにダウンロードし、watsonx.aiプロジェクトにアセットとしてアップロードすることもできます。さらにGranite®のチュートリアルを表示するには、 IBM® Granite Communityをご覧ください。このJupyter Notebookと使用されるデータセットはGitHubで見つかります。
watsonx.ai Runtimeサービス・インスタンスを作成します(適切なリージョンを選択し、無料インスタンスであるLiteプランを選択)。
APIキーを生成します。
watsonx.ai Runtimeサービス・インスタンスを、 watsonx.aiで作成したプロジェクトに関連付けます。
このチュートリアルでは、いくつかのライブラリーとモジュールが必要になります。以下のコンポーネントを必ずインポートしてください。インストールされていない場合は、pipをクイックインストールすることで問題が解決されます。
注:このチュートリアルはPython 3.12.7を使用して構築されています
認証情報を設定するには、「WATSONX_APIKEY」 と「WATSONX_PROJECT_ID」が必要です。また、APIのエンドポイントとして機能するURLも設定します。
このチュートリアルでは、同様の成果を得るために、LLMとしてIBMのGranite-3.0-8B-Instructモデルを使用することを推奨します。使用するAIモデルの選択は自由です。watsonxを通じて入手可能な基盤モデルは、こちらからご覧いただけます。
この関数は、機械学習に関するIBMの説明ページからテキスト・コンテンツを抽出します。この関数は、不要なHTML要素(スクリプト、スタイル)を削除し、クリーンで読みやすいテキストを返します。
固定長のチャンクキング方法を使用する代わりに、LLMを使用し意味に基づいてテキストを分割しました。この関数は、LLMを活用して、トピックに基づいてテキストを意味論的に意味を持つチャンクにインテリジェントに分割します。
出力構造をよりよく理解するために、チャンクをプリントしてみましょう。
成功です。チャンクはエージェントによってアウトプットにおいて正常に作成されました。
テキストのエージェント型チャンキングについて実験ができました。次は、RAGの実装に進みましょう。
このチュートリアルでは、エージェントによって生成されたチャンクを選択し、ベクトル埋め込みに変換します。使用できるオープンソースのベクトル・ストアはChroma DBです。langchain_cromaパッケージを通じてChroma機能に簡単にアクセスできます。Chromaベクトル・データベースを初期化し、埋め込みモデルを指定して、エージェント型チャンキングによって生成されたドキュメントを追加してみましょう。
Chromaベクトル・データベースを作成します
各テキストチャンクをドキュメントオブジェクトに変換します
ドキュメントをベクトル・データベースに追加します。
これで、LLMのプロンプト・テンプレートを作成できます。このテンプレートを使用すると、一貫したプロンプト構造を維持しながら、複数の質問をすることができます。さらに、ベクトル・ストアをレトリーバーとして統合し、RAGフレームワークを完成させることができます。
RAGワークフローでこれらのエージェント型チャンキングを使用して、ユーザー・クエリーを開始しましょう。1つ目は、構築したベクトル・ストアから追加のコンテキストを必要とせずにモデルを戦略的にプロンプトすることができ、モデルが組み込みの知識を使用しているか、それとも純粋なRAGコンテキストを使用しているのかをテストすることができます。IBMの機械学習の解説を利用して、ここで質問をしてみましょう。
明らかに、モデルはモデルの最適化プロセスに関する情報に基づいてトレーニングされておらず、外部ツールや情報がなければ、正しい情報を提供することはできません。モデルはハルシネーションを起こします。それでは、構築したエージェント型チャンクを使用して同じクエリーをRAGチェーンに提供してみましょう
成功です。Graniteモデルは、エージェント型のRAGチャンクをコンテキストとして正しく使用し、意味論上の一貫性を維持しながら、モデルの最適化プロセスに関する正しい情報を提供してくれました。
このチュートリアルでは、チャンク化プロセスでAIエージェントを使用して比較的小規模な関連情報を生成し、検索拡張生成(RAG)パイプラインを構築しました。
この方法では、人工知能と自然言語処理(NLP)を使用して、情報検索とコンテキスト・ウィンドウの最適化が改善されます。OpenAIのGPTモデルのような大規模言語モデル(LLM)を活用する際に、データ・チャンクを合理化して検索効率を高め、より良い成果を得ることができます。
開発者が、IBM watsonx.aiを使用してAIエージェントの構築、デプロイ、および監視を行えるようにします。
業界で最も包括的な機能セットの1つを使用して、企業がAIエージェントとアシスタントを構築、カスタマイズ、管理できるようにすることで、生産性を飛躍的に向上させます。
開発者の効率性を考慮したGraniteの小型オープンモデルで、コストを90%以上削減します。エンタープライズ対応モデルは、安全性ベンチマークに対して、さらにサイバーセキュリティーからRAGまでの幅広い企業タスクに対して優れたパフォーマンスを発揮します。