Azure Cognitive Search とは
Azure Cognitive Search (旧称 Azure Search) は、Web、モバイル、エンタープライズ アプリケーションに、プライベートで異種のコンテンツに対するリッチな検索エクスペリエンスを組み込むためのインフラストラクチャ、API、およびツールを開発者に提供するクラウド検索サービスです。
検索は、ユーザーにテキストを表示するすべてのアプリの基本となるものです。一般的なシナリオには、カタログやドキュメントの検索、オンライン小売アプリ、専用コンテンツでのデータの探索などがあります。 検索サービスを作成するときは、次の機能を使用して作業します。
- ユーザー所有コンテンツなど、検索インデックスを介したフルテキスト検索用の検索エンジン
- コンテンツの抽出と変換のために字句解析とオプションの AI エンリッチメントを使用する高度なインデックス作成機能
- テキスト検索、あいまい検索、オートコンプリート、地理空間検索などのための高度なクエリ構文
- Azure SDK の REST API とクライアント ライブラリを使用したプログラミング
- データ レイヤー、機械学習レイヤー、AI (Cognitive Services) での Azure 統合
アーキテクチャ上、検索サービスは、インデックスが設定されていないデータを含む外部データ ストアと、検索インデックスにクエリ要求を送信して応答を処理するクライアント アプリとの間に配置されます。
クライアント アプリで、検索エクスペリエンスは Azure Cognitive Search の API を使用して定義され、関連性のチューニング、セマンティック ランク付け、オートコンプリート、シノニムの一致、あいまい一致、パターン マッチング、フィルター、並べ替えを含めることができます。
Azure プラットフォーム全体で、Cognitive Search は、他の Azure サービスと統合できます。これには、Azure データ ソースからのデータのインジェストと取得を自動化する "インデクサー" という形式があるほか、Cognitive Services で提供されている AI (画像や自然言語処理など) や、Azure Machine Learning 内で作成したり Azure Functions 内にラップしたりするカスタム AI を組み込んだ "スキルセット" という形式があります。
検索サービスの内部
検索サービス自体は、"インデックスの作成" と "クエリの実行" の 2 つが主なワークロードとなります。
インデックス作成は、取り込みのプロセスです。コンテンツを検索サービスに読み込んで検索可能にします。 内部では、受信テキストはトークンへと処理され、高速スキャンできるように逆インデックスに格納されます。 JSON ドキュメントをアップロードすることや、インデクサーを使用してデータを JSON にシリアル化することができます。
コグニティブ スキルによる AI エンリッチメントは、インデックス付けの拡張機能です。 インデックスを付ける前に画像や言語の分析がコンテンツに必要な場合、AI エンリッチメントで、アプリケーション ファイルに埋め込まれたテキストの抽出、テキストの翻訳、さらにコンテンツを分析することによるテキスト以外のファイルのテキストと構造の推論もできます。
クエリが実行できるようになるのは、検索可能なテキストがインデックスに投入された後です。クライアント アプリが検索サービスにクエリ要求を送信して応答を処理します。 すべてのクエリは、ユーザーが制御する検索インデックスを介して実行されます。
セマンティック検索は、クエリ実行の拡張機能です。 検索結果の処理に言語理解が加わり、最も意味の関連が高い結果が上位に昇格されます。
Cognitive Search を使用する理由
Azure Cognitive Search は、次のアプリケーション シナリオに適しています。
ユーザー定義のプライベートな検索インデックスへの異種コンテンツの統合。
インデックス作成とクエリワークロードを専用の検索サービスにオフロードします。
関連性のチューニング、ファセット ナビゲーション、フィルター (地理空間検索)、同意語マッピング、オートコンプリートなど、検索に関連した機能を容易に実装。
Azure Blob Storage や Azure Cosmos DB に格納されている未区分の大きなテキスト ファイル、画像ファイル、またはアプリケーション ファイルを検索可能なチャンクに変換。 これは、外部処理を追加するコグニティブ スキルを使ってインデックスを作成するときに行われます。
言語分析またはカスタム テキスト分析を追加。 英語以外のコンテンツがある場合、Azure Cognitive Search では、Lucene アナライザーと Microsoft の自然言語プロセッサの両方がサポートされます。 また、生コンテンツの特殊な処理 (分音記号のフィルター処理や、文字列内のパターンの認識と保持など) を実行するようにアナライザーを構成することもできます。
特定の機能の詳細については、「Azure Cognitive Search の機能」を参照してください
ファースト ステップ
機能は、Azure portal、シンプルな REST API、または Azure SDK for .NET などの Azure SDK を使用して公開されます。 Azure portal は、インデックスとスキルセットのプロトタイプ作成やクエリを実行するためのツールによるサービスの管理とコンテンツの管理をサポートしています。
次の 4 つのステップにより、主要な検索機能をエンド ツー エンドで試すことができます。
レベルとリージョンを決定します。 サブスクリプションごとに 1 つだけ無料 Search サービスが許可されます。 すべてのクイックスタートは、Free レベルで完了できます。 さらに容量と機能が必要な場合は、有料のレベルが必要です。
[データのインポート] ウィザードから開始します。 組み込みのサンプルまたはサポートされているデータ ソースを選ぶと、インデックスの作成、ロード、クエリを数分で実行できます。
また、検索インデックスの作成、読み込み、クエリをアトミックな手順で行うこともできます。
ポータル、REST API、.NET SDK、または他の SDK を使用して検索インデックスを作成します。 検索可能なコンテンツの構造は、インデックス スキーマによって定義されます。
"プッシュ" モデルを使用して任意のソースから JSON ドキュメントをプッシュしてコンテンツをアップロードします。または、ソース データがサポートされる型である場合は "プル" モデル (インデクサー) を使用します。
ポータルの検索エクスプローラー、REST API、.NET SDK、または他の SDK を使用して、インデックスを照会します。
ヒント
複雑なソリューションやカスタム ソリューションについては、Cognitive Search テクノロジに関する深い専門知識を備えるパートナーにお問い合わせください。
検索オプションの比較
お客様から、Azure Cognitive Search が他の検索に関連するソリューションと比較してどうなのかよくお問い合わせいただきます。 主な相違点を次の表に示します。
比較対象 | 主な相違点 |
---|---|
Microsoft Search | Microsoft Search は、SharePoint 内のコンテンツに対してクエリを実行する必要がある、Microsoft 365 の認証済みユーザーを対象としています。 すぐに使用できる検索環境として提供され、管理者によって有効にされて構成が行われます。Microsoft や他のソースから提供されているコネクタを通じて外部コンテンツを受け入れることができます。 それが目的に合致していれば、Microsoft Search と Microsoft 365 は、試す価値のある選択肢となります。 これに対し、Azure Cognitive Search は、所有するデータやドキュメントを、多くの場合さまざまなソースから取り込んで定義したインデックスに対してクエリを実行します。 Azure Cognitive Search はインデクサーにより複数の Azure データ ソースに対するクローラー機能を備えていますが、インデックス スキーマに準拠している任意の JSON ドキュメントを 1 つの統合された検索可能なリソースにプッシュできます。 また、機械学習と字句解析器を含むようにインデックス作成パイプラインをカスタマイズすることもできます。 Cognitive Search は、より大きなソリューションのプラグイン コンポーネントとなるように作成されているため、プラットフォームにかかわらず、ほぼすべてのアプリに検索機能を統合することができます。 |
Bing | Bing Web Search API は Bing.com のインデックスで送信された語句と一致するものを検索します。 インデックスは、公開サイトの HTML、XML、および他の Web コンテンツから構築されます。 同じ基板上に構築されている Bing Custom Search は、個々の Web サイトに範囲指定して、各 Web コンテンツ タイプに対して同じクローラー テクノロジを提供します。 Cognitive Search では、インデックスを自分で定義してデータを投入することができます。 インデクサーを使用して Azure データ ソース上のデータをクロールしたり、インデックスに適合する JSON ドキュメントを検索サービスにプッシュしたりすることができます。 |
データベース検索 | 多くのデータベース プラットフォームには、組み込みの検索エクスペリエンスが含まれます。 SQL Server にはフル テキスト検索があります。 Azure Cosmos DB や同種のテクノロジには、クエリ可能なインデックスがあります。 検索とストレージを結合する製品を評価するとき、採用する方法を決めるのが困難な場合があります。 多くのソリューションでは両方が採用され、ストレージには DBMS が、専用の検索機能には Azure Cognitive Search が使用されています。 DBMS 検索と比較すると、Azure Cognitive Search は異種ソースからのコンテンツを格納し、56 言語で言語対応のテキスト処理 (語幹検索、レンマ化、語形) などの専用のテキスト処理機能を提供します。 また、スペルミスの単語のオート コレクト、同意語、候補、スコアリング コントロール、ファセット、カスタム トークン化もサポートしています。 Azure Cognitive Search のフル テキスト検索エンジンは情報取得の業界標準である Apache Lucene に基づいて構築されています。 ただし、Azure Cognitive Search では逆インデックスの形式でデータを保持しますが、真のデータ ストレージの代わりにはならないため、その役割として使用することはお勧めしません。 詳しくは、こちらのフォーラム投稿をご覧ください。 リソース使用率も、このカテゴリで別途考慮する必要があります。 インデックス付けと一部のクエリ操作は、多くの場合、計算を大量に使用します。 DBMS からクラウドの専用ソリューションに検索をオフロードすることにより、トランザクション処理用のシステム リソースを保持します。 さらに、検索を外部化することで、クエリのボリュームに合わせてスケールを簡単に調整できます。 |
専用の検索ソリューション | 全機能を持つ専用の検索を使用する場合、最後の比較カテゴリはオンプレミス ソリューションかクラウド サービスかです。 多くの検索テクノロジには、インデックスの作成とクエリ パイプラインの管理、豊富なクエリとフィルター構文へのアクセス、ランクと関連性の管理、自主的な高度な検索の機能が用意されています。 クラウド サービスは、オーバーヘッドとメンテナンスが最小限で済み、スケールが調整可能なターンキー ソリューションを望むお客様に最適の選択肢です。 クラウドの枠組みでは、複数のプロバイダーがフルテキスト検索、地理空間検索、検索入力の程度のあいまいさを処理する機能など、同等の基本機能を備えるソリューションを提供しています。 使用環境に最も合うものを判断する場合、通常は、特化した機能か、API、ツール、管理の容易さと全体的な単純さが決め手になります。 |
クラウド プロバイダーの中で Azure Cognitive Search は、Azure 上のコンテンツ ストアとデータベースに対するフルテキスト検索のワークロードに関して最も強力で、情報の取得とコンテンツのナビゲーションの両方を主に検索に依存するアプリに適しています。
以下のような大きな強みがあります。
- インデックス層でのデータ統合 (クローラー)
- Azure Cognitive Services による AI と機械学習の統合は、検索できないコンテンツをフル テキスト検索対応にする必要がある場合に便利です。
- 信頼できる接続を実現する Azure Active Directory とのセキュリティ統合と、インターネットを使わないシナリオでの検索インデックスへのプライベート接続をサポートする Azure Private Link との統合。
- 56 言語に対応した言語およびカスタム テキスト分析。
- 完全な検索エクスペリエンス: 豊富なクエリ言語、関連性の調整とセマンティック ランキング、ファセット処理、オートコンプリート クエリと推奨される結果、同意語。
- Azure のスケール、信頼性、世界クラスの可用性
Microsoft のお客様は、オンライン カタログ、基幹業務プログラム、およびドキュメント検索アプリケーションを含む、Azure Cognitive Search の機能を最大限適用できます。