Azure OpenAIまたはAzure AI 検索を使用したエンタープライズナレッジベースの検索とクエリ

Azure Blob Storage
Azure Cache for Redis
Azure AI Search
Azure AI サービス
Azure AI Document Intelligence

この記事では、Azure OpenAI ServiceまたはAzure AI 検索(旧Azure Cognitive Search)を使用して、エンタープライズデータ内のドキュメントを検索し、結果を取得してChatGPTスタイルの質問と回答エクスペリエンスを提供する方法について説明します。 このソリューションでは、次の 2 つのアプローチについて説明します。

  • 埋め込みアプローチ: Azure OpenAI 埋め込みモデルを使用して、ベクトル化されたデータを作成します。 ベクトル検索は、検索結果の意味の関連性を大幅に高める機能です。

  • Azure AI 検索アプローチAzure AI 検索を使用して、ユーザークエリに基づいて関連するテキストデータを検索および取得します。 このサービスは、フルテキスト検索セマンティック検索ベクトル検索ハイブリッド検索をサポートしています。

Note

Azure AI 検索では、セマンティック検索ベクトル検索機能が現在パブリックプレビューで公開されています。

アーキテクチャ: 埋め込みアプローチ

Diagram that shows the embeddings approach.このアーキテクチャの Visio ファイルをダウンロードします。

データフロー

取り込まれるドキュメントは、FTP サーバー上のファイル、メールの添付ファイル、Web アプリケーションの添付ファイルなど、さまざまなソースから取得できます。 これらのドキュメントは、Azure Logic AppsAzure FunctionsAzure Data Factory などのサービスを介して Azure Blob Storage に取り込むことができます。 Data Factory は、大量のデータの転送に最適です。

埋め込みの作成:

  1. ドキュメントが Blob Storage に取り込まれ、Azure 関数がトリガーされてドキュメントからテキストが抽出されます。

  2. ドキュメントが英語以外の言語で書かれており、翻訳が必要な場合、Azure 関数は Azure Translator を呼び出して翻訳を実行できます。

  3. ドキュメントが PDF または画像の場合、Azure 関数は Azure AI Document Intelligence を呼び出してテキストを抽出できます。 ドキュメントが Excel、CSV、Word、またはテキスト ファイルの場合は、Python コードを使用してテキストを抽出できます。

  4. 抽出されたテキストは適切にチャンク化され、 Azure OpenAI 埋め込みモデルを使用して各チャンクが埋め込みに変換されます。

  5. これらの埋め込みはベクトル データベースに保存されます。 このソリューションでは Azure Cache for Redis のエンタープライズ レベルを使用しますが、任意のベクター データベースを使用できます。

クエリと取得:

  1. ユーザーはユーザー アプリケーションを介してクエリを送信します。

  2. Azure OpenAI 埋め込みモデルは、クエリをベクトル埋め込みに変換するために使用されます。

  3. ベクトル データベース内のこのクエリ ベクトルを使用するベクトル類似性検索では、一致する上位 k 個のコンテンツが返されます。 取得される一致するコンテンツは、コサイン類似度などの類似性尺度によって定義されたしきい値に従って設定できます。

  4. 取得された上位 k 個のコンテンツとシステム プロンプトは、GPT-3.5 Turbo や GPT-4 などの Azure OpenAI 言語モデルに送信されます。

  5. 検索結果は、ユーザーが開始した検索クエリに対する回答として表示されるか、複数ターンの会話シナリオの基礎データとして使用できます。

アーキテクチャ:Azure AI 検索プルアプローチ

Diagram that shows the pull approach.このアーキテクチャの Visio ファイルをダウンロードします。

インデックス作成:

  1. Azure AI 検索は、Blob Storageでドキュメントの検索インデックスを作成するために使用されます。 Azure AI 検索は、Blob Storageをサポートしているため、プルモデルを使用してコンテンツをクローリングし、インデックス経由で機能を実装します。

    Note

    Azure AI 検索は、プルモデルを使用する際のインデックス作成に他のデータソースをサポートしています。 複数のデータ ソースからドキュメントにインデックスを作成し、単一のインデックスに統合することもできます。

  2. 特定のシナリオでドキュメントの翻訳が必要な場合は、組み込みスキルに含まれる機能である Azure Translator を使用できます。

  3. スキャンしたPDFや画像のように文書が検索不可能な場合、Azure AI 検索で内蔵またはカスタムスキルをスキルセットとして使用してAIを適用することができます。 フルテキスト検索できないコンテンツに AI を適用することは、AI エンリッチメントと呼ばれます。 要件に応じて、Azure AI Document Intelligence をカスタム スキルとして使用し、ドキュメント分析モデル事前構築済みモデル、またはカスタム抽出モデルを介して PDF または画像からテキストを抽出できます。

    AI エンリッチメントが要件の場合は、プル モデル (インデクサー) を使用してインデックスを読み込む必要があります。

    ベクトル フィールドがインデックス スキーマに追加され、インデックス付けのためにベクトル データが読み込まれる場合、そのベクトル データにインデックスを付けることでベクトル検索を有効にすることができます。 ベクトル データは、Azure OpenAI 埋め込み経由で生成できます。

クエリと取得:

  1. ユーザーはユーザー アプリケーションを介してクエリを送信します。

  2. このクエリは、検索ドキュメントREST APIを介してAzure AI 検索に渡されます。 クエリの種類は、フルテキスト検索に最適な simple、または正規表現、あいまい検索およびワイルドカード検索、近接検索などの高度なクエリ構成に最適な full にすることができます。 クエリの種類が semantic に設定されている場合、ドキュメントに対してセマンティック検索が実行され、関連するコンテンツが取得されます。 Azure AI 検索はまた、ベクトル検索ハイブリッド検索をサポートしており、ユーザークエリをベクトル埋め込みに変換する必要があります。

  3. 取得されたコンテンツとシステム プロンプトは、GPT-3.5 Turbo や GPT-4 などの Azure OpenAI 言語モデルに送信されます。

  4. 検索結果は、ユーザーが開始した検索クエリに対する回答として表示されるか、複数ターンの会話シナリオの基礎データとして使用できます。

アーキテクチャ:Azure AI 検索プッシュアプローチ

データソースがサポートされていない場合は、プッシュモデルを使用して Azure AI 検索にデータをアップロードできます。

Diagram that shows the push approach.このアーキテクチャの Visio ファイルをダウンロードします。

インデックス作成:

  1. 取り込むドキュメントを翻訳する必要がある場合は、Azure Translator を使用できます。
  2. ドキュメントが PDF や画像などの検索不可能な形式の場合、Azure AI Document Intelligence を使用してテキストを抽出できます。
  3. 抽出されたテキストは、Azure OpenAIエンベッディングベクトル検索を介してベクトル化することができ、データはRest APIまたはAzure SDKを介してAzure AI 検索インデックスにプッシュすることができます。

クエリと取得:

このアプローチのクエリと取得は、この記事で前述したプル アプローチと同じです。

コンポーネント

  • Azure OpenAI は、GPT-3、Codex、コンテンツ生成、要約、セマンティック検索、自然言語からコードへの変換のための埋め込みモデル シリーズを含む Azure OpenAI の言語モデルへの REST API アクセスを提供します。 REST API、Python SDK、または Azure OpenAI Studio の Web ベースのインターフェイスを使用して、サービスにアクセスします。

  • Azure AI Document Intelligence は、Azure AI サービスです。 印刷されたテキストや手書きのテキスト、表、キーと値のペアを抽出するドキュメント分析機能を提供します。 Azure AI Document Intelligence は、請求書、ドキュメント、領収書、ID カード、名刺からデータを抽出できる事前構築済みモデルを提供します。 また、カスタム テンプレート フォーム モデルまたはカスタム ニューラル ドキュメント モデルを使用して、カスタム モデルをトレーニングおよびデプロイするために使用することもできます。

  • Document Intelligence Studio は、Azure AI Document Intelligence の機能とモデルを探索し、カスタム モデルを構築、タグ付け、トレーニング、デプロイするための UI を提供します。

  • Azure AI 検索は、検索のためのインフラやAPI、ツールを提供するクラウドサービスです。 Azure AI 検索を使用して、ウェブ、モバイル、およびエンタープライズアプリケーションのプライベートな異なるコンテンツに対する検索エクスペリエンスを構築します。

  • Blob Storage は、このシナリオの生ファイル用オブジェクト ストレージ ソリューションです。 Blob Storage は、.NET、Node.js、Python などのさまざまな言語のライブラリをサポートしています。 アプリケーションでは、HTTP または HTTPS を経由して Blob Storage 内のファイルにアクセスできます。 Blob Storage には、大量のデータを格納するためのコスト最適化をサポートするために、ホット、クール、アーカイブのアクセス層があります。

  • Azure Cache for Redis の Enterprise レベルでは、RediSearch、RedisBloom、RedisTimeSeries、RedisJSON などのマネージド Redis Enterprise モジュールが提供されます。 ベクトル フィールドを使用すると、ベクトル類似性検索が可能になり、リアルタイム ベクトル インデックス作成 (ブルート フォース アルゴリズム (FLAT) および階層的ナビゲーション可能なスモールワールド アルゴリズム (HNSW))、リアルタイム ベクトル更新、k 最近傍検索がサポートされます。 Azure Cache for Redis によって、きわめて低遅延かつ高スループットのデータ ストレージ ソリューションがモダン アプリケーションにもたらされます。

代替

シナリオに応じて、次のワークフローを追加できます。

  • Azure AI Language 機能である質問応答会話言語理解を使用して、データ上に自然な会話レイヤーを構築します。 これらの機能は、カスタム ナレッジ ベースの情報からの入力に対する適切な回答を見つけます。

  • ベクトル化されたデータを作成するには、任意の埋め込みモデルを使用できます。 Azure AI サービスの Vision 画像取得 API を使用して画像をベクトル化することもできます。 このツールはプライベート プレビューで利用できます。

  • Azure FunctionsDurable Functions 拡張機能をコードファースト統合ツールとして使用し、手書き文字、テキスト、表の読み取りなどのテキスト処理ステップと、ワークロードのサイズと規模に基づいてデータのエンティティを抽出する処理言語を実行します。

  • 抽出された埋め込みの永続ストレージには、次のような任意のデータベースを使用できます。

シナリオの詳細

膨大な量のドキュメントがあるため、手動処理はますます時間がかかり、エラーが発生しやすくなり、リソースも大量に消費されます。 PDF、Excel、CSV、Word、PowerPoint、画像形式などのさまざまな形式の非構造化データである膨大な量のドキュメントを扱う組織は、顧客からのスキャンされた手書きのドキュメントやフォームを処理するという重大な課題に直面しています。

これらのドキュメントやフォームには、個人情報、病歴、損害評価報告書などの重要な情報が含まれており、これらは正確に抽出して処理する必要があります。

多くの場合、組織は独自の情報の知識ベースをすでに持っており、質問に最も適切な答えを返すために使用できます。 これらのソリューションで説明されているサービスとパイプラインを使用して、ドキュメントの検索メカニズムのソースを作成できます。

考えられるユース ケース

このソリューションは、製薬会社や金融サービスなどの業界の組織に価値を提供します。 これは、情報が埋め込まれた文書を大量に保有するあらゆる企業に当てはまります。 この AI を活用したエンドツーエンドの検索ソリューションを使用すると、ユーザーのクエリに基づいてドキュメントから有意義な情報を抽出し、ChatGPT スタイルの質問と回答のエクスペリエンスを提供できます。

共同作成者

この記事は、Microsoft によって保守されています。 当初の寄稿者は以下のとおりです。

プリンシパルの作成者:

  • Dixit Arora | ISV DN CoE のシニア カスタマー エンジニア
  • Jyotsna Ravi | ISV DN CoE のプリンシパル カスタマー エンジニア

パブリックでない LinkedIn プロファイルを表示するには、LinkedIn にサインインします。

次のステップ