このセクションでは、RAGドキュメント・ベースの保存と取得のためのツールと考慮事項について説明します。ストレージ・テクノロジーによって、保管されたデータのクエリーと取得に利用できる検索メカニズムが制限されるため、ここでは2つのトピックを共同で扱います。
IBM Cloud Databases for Elasticsearchを搭載したIBM watsonx Discoveryは、検索および検索拡張生成(RAG)のユースケースをサポートおよび強化するために設計された完全なエンタープライズ・ソリューションです。ベクトル検索、セマンティック検索、フェデレーテッド検索などの堅牢な機能を備えたwatsonx Discoveryは、コンテキストに応じたAI駆動型アプリケーションを構築するための豊富なツールセットを提供します。IBMの対話型AIプラットフォーム「watsonx Assistant」や、watsonx Orchestrateなどのオーケストレーションレイヤーとシームレスに統合して、高度なビジネス・ソリューションを提供します。
watsonx Discoveryは、IBM Cloud Databases for Elasticsearchを活用し、エンタープライズ検索のニーズを管理するための強力かつ柔軟なバックエンドを提供します。
モニタリングとヘルスチェック:Elasticsearchでは、開発者は包括的なモニタリングおよびヘルスチェックツールにアクセスして、埋め込み、メタデータ、チャンクサイズ、ドキュメント構造が最適化されていることを確認できます。Elasticsearchウェブページでは、シームレスな管理とスケーリングが可能で、バックアップ、ロギング、モニタリング、セットアップなどの運用タスクではなく、アプリケーション開発に重点を置くことができます。
高度な検索機能:watsonx Discoveryは、スパースおよび高密度のセマンティック検索、メタデータのフィルター検索、レキシカル検索、ブール検索(AND/OR/NOT/SLOP)、プレフィックス検索、ファジー検索、ハイブリッド検索などのさまざまな高度な検索アルゴリズムをサポートしています。これらの機能は、複雑なクエリーやドキュメントを含む難しいRAGのユースケースにとって必要不可欠です。このノートブックで概説されている高度な検索タイプを実装して、デプロイメントを最適化します。
LLMフレームワークとの統合:ElasticsearchはLangChainやLlamaIndexなどの人気LLMオーケストレーションフレームワークとの互換性、RAGソリューションを後押しするwatsonx Discovery連携に最適です。
watsonx Discoveryは、幅広い検索方法をサポートする多用途のソリューションです。
ELSER(Elastic Search Embeddings)モデルは、セマンティック検索に使用される事前構築済みの主要な埋め込みモデルであり、カスタム・ベクトル・データベースを必要とせずにコンテキスト検索を可能にします。
watsonx Discoveryは、既存のデプロイメント全体でのフェデレーテッド検索をサポートし、重複データを保存・維持する必要性を軽減します。これにより、複数のデータ・サイロにわたる企業全体の検索と取得が可能になります。
watsonx Discoveryは、豊富なデータ取り込みツール・スイートによって、コンテンツの抽出とインデックス作成を簡素化します。
詳しくは、watsonx Discoveryの開発を加速させる次のElasticSearchの参考情報をご覧ください:
watsonx Discoveryは、KibanaおよびEnterprise Searchと統合し、大規模なエンタープライズ環境に合わせてスケーラブルなAI駆動型の情報検索と視覚化を提供します。
Kibana for Data Visualization:watsonx Discoveryによって取り込まれたデータに基づいてカスタムダッシュボードと視覚化を作成します。エンティティー抽出、センチメント分析、文書分類などの主要なメトリクスに関するリアルタイム分析を提供します。これにより、非構造化データの傾向、パターン、異常を追跡し、分析プロセスを合理化し、意思決定を改善することができます。
スケーラブルな検索のためのエンタープライズ検索:NLPとセマンティック検索を活用して、構造化データ・ソースと非構造化データ・ソース全体で高速かつ正確な検索を可能にします。検索機能をカスタマイズして、ドキュメント、Eメール、データベースなどの複数のデータ・ソースからインデックスを作成、取得し、ビジネス・ワークフローに直接統合できるドメイン固有の検索アプリケーションを作成します。
watsonx Discoveryは、ロールベースおよび属性ベースのアクセス制御にネイティブ・サポートを適用して、コンテンツ・アクセスを保護し、データ・プライバシーを保護します。これにより、許可されたユーザーのみが機密情報にアクセスできるようになり、企業データが保護されます。
watsonx Discoveryをwatsonx Orchestrateと組み合わせると、コンテキストに応じたデータ検索を通じてオートメーション・ワークフローを強化できます。Orchestrateにより非構造化データからの洞察を必要とするビジネス・プロセスを自動化する場合、Discoveryを活用して関連コンテンツを取得して分析し、次のようなインテリジェントなタスクを実行できるようにします。
IBM watsonx.dataは、オープンレイクハウス・アーキテクチャー上に構築された強力なデータ・プラットフォームであり、データウェアハウスとデータレイクの両方の利点を兼ね備えています。共有されたオープンなメタデータ層を通じてすべてのデータにアクセスするための単一のエントリー・ポイントを提供し、データ管理の合理化を目指す組織にとって理想的なソリューションです。オープンなデータ形式、ベクトル化された統合型の埋め込み機能、データ・インサイト向けの生成AIを活用した対話型インターフェースをサポートするwatsonx.dataは、リアルタイム分析とAIのユースケースを強化します。このプラットフォームは、既存のデータベースやツールとシームレスに統合でき、クラウドやオンプレミス構成など、柔軟な導入オプションを提供します。
IBM watsonx.dataの主要コンポーネントはwatsonx.data Milvusで、ベクトル埋め込みなどの高次元ベクトル・データを保存、管理、転送するために特別に設計されたオープンソースのベクトル・データベースです。この高度に構成可能なベクトル・データベースは、ベクトルのインデックス作成と取得を効率的に行うために最適化されており、AIアプリケーションでベクトルの類似性検索が必要なユースケースに最適です。watsonx.data Milvusは、ベクター・データベース機能とのシームレスな統合を必要とするwatsonx.aiを活用しているお客様や、検索拡張生成(RAG)パターンでよく使用されるLangChainなどのオープンソース・フレームワークの実装に関心があるお客様にとって特に有益です。
IBM watsonx.dataには、多様なニーズに合わせて3つのデプロイメント・オプションがあります。
また、ベクトル・データベースの活用を検討している組織向けに、watsonx.dataはオープンソースのMilvusとの統合をサポートしており、リアルタイムAIアプリケーションに不可欠なベクトル類似検索などの高度な機能を実現しています。
IBM watsonx.dataの使用を開始するには、要件に最適なデプロイメント・オプションを選択します。
インスタンスをプロビジョニングします。
オンプレミス・デプロイメントの場合:
IBMは、コアのwatsonx.dataプラットフォームとMilvusベクトル・データベースの両方を使い始めるのに役立つ広範なドキュメントを提供しています。
watsonx.dataのオープン・アーキテクチャー、統合されたベクトル・データベース機能、高度なAI機能を活用することにより、組織はデータ・エンジニアリング・プロセスを最適化し、リアルタイム分析を改善し、AI搭載機能を通じて新しい洞察を解き放つことができます。この統合プラットフォームにより、チームは構造化データと非構造化データを革新的な方法で操作できるようになり、従来の分析と最先端のベクトル類似性検索を単一のソリューションに統合できます。
IBM watson Discoveryは、非構造化データを取得して分析するために設計されたツールです。主な機能はキーワード検索で、ユーザーは特定の用語やフレーズを使用して大規模なデータセットを検索できます。テキスト・マッチングを使用する傾向がある従来の検索エンジンとは異なり、watson Discoveryはキーワードの背後にあるコンテキストを使用して、より関連性の高い結果を提供します。
watson Discoveryのもう1つの重要な機能はエンティティー抽出です。これは、watson Discoveryが非構造化テキストから人、場所、組織、日付などの重要な情報を自動的に抽出できることを意味します。このプロセスにより、データが理解しやすくなり、RAG応答に直接組み込むことができるようにデータが構造化されます。
多くのLLMアプリケーションでは、モデルのトレーニング・セットに含まれていないユーザー固有のデータが必要となります。これを実現する主な方法は、検索拡張生成(RAG)です。このプロセスでは、生成ステップを実行するときに、外部データが取得され、LLMに渡されます。
LangChainはさまざまな検索アルゴリズムをサポートしています。LangChainは、セマンティック検索などの基本的な手法をサポートしています。ただし、性能を向上させるために、この上に一連のアルゴリズムを追加することもできました。それには、以下が含まれます。
Milvusは、非構造化ドキュメントからの構造化データの自動化と抽出のためのAIプラットフォームで、特定の検索シナリオでwatsonx Discoveryと一緒に使用されることがよくあります。Milvusはさまざまなフォーマットに適応できるため、大規模な処理ワークフローに最適です。AIエンジニアにとっては、精度と効率を確保しながらデータ抽出における手作業を削減するスケーラブルなソリューションを提供します。
Milvusは主に大規模なデータセット全体での類似性検索のために設計されたベクトル・データベースで、特に高次元ベクトルに優れています。一方、watsonx Discoveryは、対話型セマンティック検索やドキュメントの理解/処理に特化しており、特に対話型およびセマンティック検索機能に重点を置いています。
Milvusは、スパース・ベクトル、バルク・ベクトル、フィルタリング検索、ハイブリッド検索などの高度な機能を提供します。また、スケールアウト/インとスケールアップ/ダウンの両方を可能にする分散アーキテクチャーを備えているため、大規模なデータセットに対して非常にスケーラブルです。
Milvusは大規模なベクトル・データを処理でき、大規模なデータセットから情報を取得するRAGソリューションに不可欠な、高性能なベクトル類似検索をサポートします。
Milvusはwatsonx.dataとシームレスに統合し、AIモデルとアプリケーションのデータ管理を簡素化します。これにより、管理対象の大規模なデータセットにわたるスケーラブルなRAGユースケースが可能になります。
Milvusは、メタデータのフィルタリングなどの高度な機能をサポートし、検索結果の関連性を高め、RAGシステムの有効性を向上させます。
基本的なベクトル・ストアは単純なRAGソリューションには適していますが、ドキュメント内に複数の類似した情報があり(類似していることと関連している情報は同じではありません)、クエリーに答えるための情報が複数のドキュメントに分散している場合や、文書の複数のセクションに分散されている場合にはすぐに分解します。いくつかの例を挙げると...
例1
ある企業が複数の州にオフィスを運営しており、それぞれに独自の人事ポリシーがあります。この組織は、人事情報に関してすべてのオフィスで共通の文書形式を使用しています。会社が人事方針をベクトル・データベースに埋め込むと、例えば休暇を申請するための複数のチャンクが存在し、異なるサポートテキストが使用され、ハルシネーションの可能性が高くなります。
例2
サービス契約には、契約を通じて資本化された定義済みの用語の用語集があり、定義への参照を示します(例:レッサー、評価期間など)。契約を最初から最後まで解析およびチャンクした、契約のナイーブな解析とチャンク化では、次のようなやり取りが発生します。
クエリー:サービス完了後、請求が行われるまでのAcmeの時間はどのくらいですか?回答:購入者には、評価期間後10日間の猶予が与えられてから、サービスに対して請求が行われます。
便利ですが、後続のクエリーを作成したり、簡単な追加を行ったりして、より完全な回答を得ることが保証されます。
例3
官公庁・自治体は、その法律の修正を既存の法律の「編集物」として発表します。例えば、「麻薬規制法のセクション12.2は、CannabisおよびCannabis関連製品を除外するために改訂される」などです。ベクトル・データベースは、このテキスト・スニペットがCannabisのトピックを扱う他のすべてのチャンクよりも優先される必要があることをどのように決定するのでしょうか。
ドキュメント階層は、ドキュメントのチャンクを関連するドキュメントをグループ化するカテゴリーに整理します。コンピューターの目次やフォルダーのセットに似ています。ドキュメント階層を使用すると、RAGソリューションはユーザー・クエリーの主題を「絞り込む」ことができ、最も関連性の高いドキュメントのみを取得できるようになります。
これを上記の複数の状態のHRドキュメントの例に適用すると、有用なドキュメント階層はドキュメントを状態ごとに分類し、RAGソリューションが特定の状態に関連するドキュメントのチャンクのみを取得できるようにします。以下の図に示すように、最初に国域別、次に該当する州/県別、次にポリシー分野またはトピック別にドキュメントを階層化できます。もちろん、このソリューションは、ユーザーがリストに挙げた居住地域から関連する州を推測するか、ユーザーに関心のある州を提供するよう促す必要があります。
ドキュメント階層は、ハイブリッド・ベクトル・ストアで実装できます。これは、以下のMilvusスキーマ定義に示すように、検索基準の一部としてカテゴリーおよびサブカテゴリー・フィールドを使用して、Milvusなどのベクトルとともに数値およびカテゴリー・データ・タイプで構成されるスキーマをサポートするベクトル・ストアです。
chunk_id = FieldSchema( name="chunk_id", dtype=DataType.INT64, auto_id=True, ) state_id = FieldSchema( name="state_id", dtype=DataType.INT64, ) chunk = FieldSchema( name="chunk", dtype=DataType.FLOAT_VECTOR, dim=2 ) schema = CollectionSchema( fields=[chunk_id, state_id, chunk], description="HR documents by state" )
ナレッジ・グラフは、ドキュメント内またはドキュメント間のエンティティー間関係を捉えます。ベクトル・データベースでの類似性検索とは異なり、ナレッジ・グラフは関連する関係とコンテンツを一貫して正確に取得できるため、ハルシネーションの発生を大幅に減らすことができます。ベクトル・データベースの類似性検索と組み合わせると、グラフ・データベースを使用して、RAGソリューションでドキュメント内および/またはドキュメント・セット全体から関連するコンテンツを組み合わせることができます。以下の画像は、サービス契約の潜在的なナレッジ・グラフを示しています。
RAGソリューションに最適なナレッジ・グラフは人間が作成・維持するものですが、大規模言語モデル(LLM)を使用して文書内のエンティティーと関係を解析し、ナレッジ・グラフを作成すると、驚くほど良い結果が得られます。
Neo4jは、人気のオープンソース(GPLv3)グラフ・データベースです。このチュートリアルでは、neo4jとLangchainを使用して、ナレッジ・グラフで強化されたRAGソリューションの設定とコーディングについて説明します。