Azure Search 内のナレッジ ストアとはWhat is knowledge store in Azure Search?

注意

ナレッジ ストアはプレビュー段階にあり、運用環境での使用は意図していません。Knowledge store is in preview and not intended for production use. REST API バージョン 2019-05-06-Preview でこの機能を提供します。The REST API version 2019-05-06-Preview provides this feature. 現時点で .NET SDK のサポートはありません。There is no .NET SDK support at this time.

ナレッジ ストアは、Azure Search の機能であり、AI ベースのインデックス作成パイプライン (コグニティブ検索) によって作成される、エンリッチメントされたドキュメントとメタデータを保存します。Knowledge store is a feature of Azure Search that saves enriched documents and metadata created by an AI-based indexing pipeline (cognitive search). エンリッチメントされたドキュメントとは、Cognitive Services のリソースを使用して抽出、構造化、および分析されたコンテンツから作成される、パイプラインの出力のことです。An enriched document is a pipeline's output, created from content that has been extracted, structured, and analyzed using resources in Cognitive Services. 標準的な AI ベースのパイプラインでは、エンリッチメントされたドキュメントは一時的なものであり、インデックス作成時にのみ使用され、その後破棄されます。In a standard AI-based pipeline, enriched documents are transitory, used only during indexing and then discarded. ナレッジ ストアを使用すると、ドキュメントは後続の評価や探索のために保存され、下流のデータ サイエンス ワークロードへの入力になる可能性があります。With knowledge store, documents are saved for subsequent evaluation, exploration, and can potentially become inputs to a downstream data science workload.

過去にコグニティブ検索を使用したことがある場合は、スキルセットを使用して、一連のエンリッチメントを通じてドキュメントを移動することは既にわかっています。If you have used cognitive search in the past, you already know that skillsets are used to move a document through a sequence of enrichments. 結果は、Azure Search インデックスまたは (このプレビューの新機能である) ナレッジ ストア内のプロジェクションです。The outcome can be an Azure Search index, or (new in this preview) projections in a knowledge store. 2 つの出力 (検索インデックスとナレッジ ストア) は、互いに物理的に異なります。The two outputs, search index and knowledge store, are physically distinct from each other. 同じコンテンツを共有していますが、まったく異なる方法で格納および使用されます。They share the same content, but are stored and used in very different ways.

物理的には、ナレッジ ストアは、パイプラインの構成方法に応じて、Azure Table Storage、Blob Storage、またはその両方としての Azure Storage アカウントです。Physically, a knowledge store is an Azure Storage account, either as Azure Table storage, Blob storage or both, depending on how you configure the pipeline. Azure Storage に接続できるすべてのツールまたはプロセスは、ナレッジ ストアのコンテンツを使用できます。Any tool or process that can connect to Azure Storage can consume the contents of a knowledge store.

プロジェクションとは、ナレッジ ストア内にデータを構築するためのメカニズムのことです。Projections are your mechanism for structuring data in a knowledge store. たとえば、プロジェクションを使用して、出力を 1 つの BLOB として保存するのか、関連するテーブルのコレクションとして保存するのかを選択できます。For example, through projections, you can choose whether output is saved as a single blob or a collection of related tables. ナレッジ ストアのコンテンツを表示する簡単な方法は、Azure Storage の組み込みの Storage Explorer を使用することです。An easy way to view knowledge store contents is through the built-in Storage Explorer for Azure storage.

パイプライン ダイアグラム内のナレッジ ストアKnowledge store in pipeline diagram

ナレッジ ストアを使用するには、インデックス作成パイプラインに段階的な操作を定義するスキルセットに knowledgeStore 要素を追加します。To use knowledge store, add a knowledgeStore element to a skillset that defines step-wise operations in an indexing pipeline. 実行中に、Azure Search によって Azure ストレージ アカウント内にスペースが作成され、パイプライン内に作成された定義を使用してエンリッチされたドキュメントがプロジェクションされます。During execution, Azure Search creates a space in your Azure storage account and projects the enriched documents with the definition created within the pipeline.

ナレッジ ストアのメリットBenefits of knowledge store

ナレッジ ストアでは、BLOB などの非構造化および半構造化データ ファイル、分析が実行されたイメージ ファイル、または新しいフォームに整形された構造化データから収集された構造体、コンテキスト、および実際のコンテンツが提供されます。A knowledge store gives you structure, context, and actual content - gleaned from unstructured and semi-structured data files like blobs, image files that have undergone analysis, or even structured data that is reshaped into new forms. このプレビュー用に記述されたステップ バイ ステップ チュートリアルでは、高密度の JSON ドキュメントが下部構造にパーティション分割される方法、新しい構造体に再構築される方法、または機械学習やデータ サイエンスのワークロードなどのダウンストリーム プロセスで使用可能にされる方法を直接確認できます。In a step-by-step walkthrough written for this preview, you can see first-hand how a dense JSON document is partitioned out into substructures, reconstituted into new structures, and otherwise made available for downstream processes like machine learning and data science workloads.

AI ベースのインデックス作成パイプラインで何を生成できるかを確認するのに便利ですが、ナレッジ ストアの真価はデータを整形する機能にあります。Although it's useful to see what an AI-based indexing pipeline can produce, the real power of knowledge store is the ability to reshape data. 基本的なスキルセットから開始し、反復処理して構造のレベルを追加し、それを Azure Search 以外のアプリ内でも使用できるように新しい構造に結合できます。You might start with a basic skillset, and then iterate over it to add increasing levels of structure, which you can then combine into new structures, consumable in other apps besides Azure Search.

ナレッジ ストアのメリットの列挙には以下が含まれます。Enumerated, the benefits of knowledge store include the following:

  • 検索以外の分析およびレポート作成ツール内でエンリッチメントされたドキュメントを使用する。Consume enriched documents in analytics and reporting tools other than search. Power Query を使用した Power BI は魅力的な選択肢ですが、Azure ストレージに接続できる任意のツールまたはアプリで、作成するナレッジ ストアからプルできます。Power BI with Power Query is a compelling choice, but any tool or app that can connect to Azure storage can pull from a knowledge store that you create.

  • 手順とスキルセットの定義をデバッグ中に、AI インデックス作成パイプラインを調整する。Refine an AI-indexing pipeline while debugging steps and skillset definitions. ナレッジ ストアによって、AI インデックス作成パイプライン内のスキルセット定義の製品が示されます。A knowledge store shows you the product of a skillset definition in an AI-indexing pipeline. これらの結果を使用すると、エンリッチメントがどのようになるかを正確に確認できるので、より優れたスキルセットを設計できます。You can use those results to design a better skillset because you can see exactly what the enrichments look like. Azure ストレージ内で Storage Explorer を使用して、ナレッジ ストアのコンテンツを表示できます。You can use Storage Explorer in Azure storage to view the contents of a knowledge store.

  • データを新しいフォームに整形する。Shape the data into new forms. 整形はスキルセット内で体系化されていますが、ポイントは、スキルセットでこの機能を提供できるようになったことです。The reshaping is codified in skillsets, but the point is that a skillset can now provide this capability. Azure Search 内のシェーパー スキルは、このタスクに対応するために拡張されました。The Shaper skill in Azure Search has been extended to accommodate this task. 整形により、関係を維持しながら、データの使用目的に合致したプロジェクションを定義することができます。Reshaping allows you to define a projection that aligns with your intended use of the data while preserving relationships.

注意

Cognitive Services を使用した AI ベースのインデックス作成に慣れていませんか?Not familiar with AI-based indexing using Cognitive Services? Azure Search は Cognitive Services の Vision および Language 機能と統合され、イメージ ファイルの光学式文字認識 (OCR)、エンティティの認識、テキスト ファイルからのキー フレーズの抽出などを使用してソース データが抽出およびエンリッチメントされます。Azure Search integrates with Cognitive Services Vision and Language features to extract and enrich source data using Optical Character Recognition (OCR) over image files, entity recognition and key phrase extraction from text files, and more. 詳しくは、コグニティブ検索に関する記事をご覧ください。For more information, see What is cognitive search?.

ナレッジ ストアの作成Create a knowledge store

ナレッジ ストアは、スキルセットの定義の一部です。A knowledge store is part of a skillset definition. このプレビューでは、これを作成するには、api-version=2019-05-06-Preview を使用した REST API またはポータル内のデータのインポート ウィザードが必要です。In this preview, creating it requires the REST API, using api-version=2019-05-06-Preview or the Import data wizard in the portal.

次の JSON では、knowledgeStore を指定します。これは、インデクサー (示されていません) によって呼び出されるスキルセットの一部です。The following JSON specifies a knowledgeStore, which is part of a skillset, which is invoked by an indexer (not shown). knowledgeStore 内のプロジェクション内の指定によって、Azure ストレージ内にテーブルとオブジェクトのどちらが作成されるかが決まります。The specification of projections within the knowledgeStore determines whether tables or objects are created in Azure storage.

既に AI ベースのインデックス作成に慣れている場合、スキルセット定義によって、エンリッチメントされた各ドキュメントの作成、編成、内容が決定されます。If you are already familiar with AI-based indexing, the skillset definition determines the creation, organization, and substance of each enriched document.

{
  "name": "my-new-skillset",
  "description": 
  "Example showing knowledgeStore placement, supported in api-version=2019-05-06-Preview. You need at least one skill, most likely a Shaper skill if you are modulating data structures.",
  "skills":
  [
    {
    "@odata.type": "#Microsoft.Skills.Util.ShaperSkill",
    "context": "/document/content/phrases/*",
    "inputs": [
        {
        "name": "text",
        "source": "/document/content/phrases/*"
        },
        {
        "name": "sentiment",
        "source": "/document/content/phrases/*/sentiment"
        }
    ],
    "outputs": [
        {
        "name": "output",
        "targetName": "analyzedText"
        }
    ]
    },
  ],
  "cognitiveServices": 
    {
    "@odata.type": "#Microsoft.Azure.Search.CognitiveServicesByKey",
    "description": "mycogsvcs resource in West US 2",
    "key": "<your key goes here>"
    },
  "knowledgeStore": { 
    "storageConnectionString": "<your connection string goes here>", 
    "projections": [ 
        { 
            "tables": [  
            { "tableName": "Reviews", "generatedKeyName": "ReviewId", "source": "/document/Review" , "sourceContext": null, "inputs": []}, 
            { "tableName": "Sentences", "generatedKeyName": "SentenceId", "source": "/document/Review/Sentences/*", "sourceContext": null, "inputs": []}, 
            { "tableName": "KeyPhrases", "generatedKeyName": "KeyPhraseId", "source": "/document/Review/Sentences/*/KeyPhrases", "sourceContext": null, "inputs": []}, 
            { "tableName": "Entities", "generatedKeyName": "EntityId", "source": "/document/Review/Sentences/*/Entities/*" ,"sourceContext": null, "inputs": []} 

            ], 
            "objects": [ 
               
            ]      
        },
        { 
            "tables": [ 
            ], 
            "objects": [ 
                { 
                "storageContainer": "Reviews", 
                "format": "json", 
                "source": "/document/Review", 
                "key": "/document/Review/Id" 
                } 
            ]      
        }        
    ]     
    } 
}

ナレッジ ストアを支援するコンポーネントComponents backing a knowledge store

ナレッジ ストアを作成するには、次のサービスと成果物が必要です。To create a knowledge store, you need the following services and artifacts.

1 - ソース データ1 - Source data

エンリッチメントするデータまたはドキュメントは、Azure Search インデクサーでサポートされている Azure データ ソース内に存在する必要があります。The data or documents you want to enrich must exist in an Azure data source supported by Azure Search indexers:

2 - Azure Search サービス2 - Azure Search service

データ エンリッチメントに使用するオブジェクトを作成および構成する場合も、Azure Search サービスと REST API が必要です。You also need an Azure Search service and the REST API to create and configure objects used for data enrichment. ナレッジ ストアを作成するための REST API は api-version=2019-05-06-Preview です。The REST API for creating a knowledge store is api-version=2019-05-06-Preview.

Azure Search ではインデクサー機能が提供されます。インデクサーはプロセス全体のエンド ツー エンドの駆動に使用され、結果として Azure ストレージ内に永続化されエンリッチメントされたドキュメントが生成されます。Azure Search provides the indexer feature, and indexers are used to drive the entire process end-to-end, resulting in persisted, enriched documents in Azure storage. インデクサーでは、データ ソース、インデックス、およびスキルセットが使用されます。ナレッジ ストアの作成と設定にはこれらすべてが必要です。Indexers use a data source, an index, and a skillset - all of which are required for creating and populating a knowledge store.

ObjectObject REST APIREST API 説明Description
データ ソースdata source データ ソースの作成Create Data Source エンリッチメントされたドキュメントを作成するために使用されるソース データを提供する外部 Azure データ ソースを識別するリソースです。A resource identifying an external Azure data source providing source data used to create enriched documents.
スキルセットskillset スキルセットを作成する (api-version=2019-05-06-Preview)Create Skillset (api-version=2019-05-06-Preview) エンリッチメント パイプラインでインデックス作成時に使用される組み込みのスキルカスタム コグニティブ スキルの使用を調整するリソース。A resource coordinating the use of built-in skills and custom cognitive skills used in an enrichment pipeline during indexing.
indexindex インデックスの作成Create Index Azure Search インデックスを表すスキーマです。A schema expressing an Azure Search index. ソース データ内のフィールドやエンリッチメント フェーズで作成されたフィールドにマッピングされるインデックス内のフィールド (たとえば、エンティティ認識によって作成された組織名のためのフィールド)。Fields in the index map to fields in source data or to fields manufactured during the enrichment phase (for example, a field for organization names created by entity recognition).
インデクサーindexer インデクサーの作成 (api-version=2019-05-06)Create Indexer (api-version=2019-05-06) データ ソース、スキルセット、ソースからのフィールドの関連付け、ターゲット インデックスまでの中間データ構造、およびインデックス自体などの、インデックス作成時に使用されるコンポーネントを定義するリソースです。A resource defining components used during indexing: including a data source, a skillset, field associations from source and intermediary data structures to target index, and the index itself. インデクサーを実行すると、データの取り込みやエンリッチメントがトリガーされます。Running the indexer is the trigger for data ingestion and enrichment. 出力は、インデックス スキーマを基に作成され、ソース データが入力され、スキルセットでエンリッチメントされた検索インデックスです。The output is a search index based on the index schema, populated with source data, enriched through skillsets.

3 - Cognitive Services3 - Cognitive Services

スキルセット内に指定されたエンリッチメントは、カスタムであるか、Cognitive Services の Computer Vision 機能と Language 機能に基づいています。Enrichments specified in a skillset are either custom or based on the Computer Vision and Language features in Cognitive Services. Cognitive Services 機能は、スキルセットを通じたインデックス作成時に利用されます。Cognitive Services functionality is leveraged during indexing through your skillset. スキルセットはスキルの合成であり、スキルは特定の Computer Vision および Language 機能にバインドされます。A skillset is a composition of skills, and skills are bound to specific Computer Vision and Language features. Cognitive Services を統合するには、Cognitive Services リソースをスキルセットにアタッチします。To integrate Cognitive Services, you'll attach a Cognitive Services resource to a skillset.

4 - ストレージ アカウント4 - Storage account

Azure Storage アカウントの下に、Azure Search によって、スキルセット内のプロジェクションの構成方法に応じて、BLOB コンテナー、テーブル、または両方が作成されます。Under your Azure Storage account, Azure Search creates a Blob container or tables or both, depending on how you configure projections within the skillset. データのソースが Azure Blob Storage または Azure Table Storage の場合、ストレージ アカウントは既に設定されているため、それを再利用できます。If your data originates from Azure Blob or Table storage, you are already set and can reuse the storage account. そうでない場合は、Azure ストレージ アカウントを作成する必要があります。Otherwise, you will need to create an Azure storage account. Azure ストレージ内のテーブルとオブジェクトには、AI ベースのインデックス作成パイプラインによって作成されるエンリッチメントされたドキュメントが含まれます。Tables and objects in Azure storage contain the enriched documents created by the AI-based indexing pipeline.

ストレージ アカウントは、スキルセット内で指定されます。The storage account is specified in the skillset. api-version=2019-05-06-Preview では、スキルセット定義には、アカウント情報を提供できるようにナレッジ ストア定義が含まれます。In api-version=2019-05-06-Preview, a skillset definition includes a knowledge store definition so that you can provide account information.

5 - アクセスと使用5 - Access and consume

エンリッチメントがストレージ内に存在した後、Azure Blob または Table Storage に接続する任意のツールまたはテクノロジを使用して、コンテンツを探索、分析、または使用できます。Once the enrichments exist in storage, any tool or technology that connects to Azure Blob or Table storage can be used to explore, analyze, or consume the contents. 次の一覧が開始点です。The following list is a start:

  • エンリッチメントされたドキュメントの構造とコンテンツを表示する Storage ExplorerStorage Explorer to view enriched document structure and content. これは、ナレッジ ストアのコンテンツを表示するためのベースライン ツールと考えてください。Consider this as your baseline tool for viewing knowledge store contents.

  • 自然言語クエリ用の Power Query を使用した Power BI、または数値データがある場合はレポートおよび分析ツールを使用します。Power BI with Power Query for natural language queries, or use the reporting and analysis tools if you have numeric data.

  • さらに操作するための Azure Data FactoryAzure Data Factory for further manipulation.

  • コグニティブ検索を使用してインデックスを作成したコンテンツに対するフルテキスト検索用の Azure Search インデックス。Azure Search index for full-text search over content that you've indexed using cognitive search.

ドキュメントの永続性Document persistence

ストレージ アカウント内のエンリッチメントは、Azure Table Storage 内のテーブル、または Azure Blob Storage 内のオブジェクトとして表現できます。Within the storage account, the enrichments can be expressed as tables within Azure Table storage or as objects in Azure Blob storage. 保存されたエンリッチメントは、他のデータベースやツールにデータを読み込むためのソースとして使用できることを思い出してください。Recall that enrichments, once stored, can be used as a source to load data into other databases and tools,

  • Table Storage は、表形式のデータのスキーマ対応表現が必要な場合に便利です。Table storage is useful when you want a schema-aware representation of the data in tabular form. 要素を新しい方法で整形または再結合する場合は、Table Storage によって必要な細分性が提供されます。If you want to reshape or recombine elements in new ways, Table storage gives you the necessary granularity.

  • Blob Storage では、ドキュメントごとに 1 つの包括的な JSON 表現が作成されます。Blob storage creates one all-inclusive JSON representation of each document. 両方のストレージ オプションを 1 つのスキルセット内で使用して、さまざまな表現を取得できます。You can use both storage options in one skillset to get a full range of expressions.

  • Azure Search では、コンテンツがインデックス内に永続化されます。Azure Search persists content in an index. シナリオが検索に関連しない場合、たとえば、別のツールで分析することが目的の場合は、パイプラインによって作成されるインデックスを削除することができます。If your scenario is non-search-related, for example if your objective is analysis in another tool, you can delete the index that the pipeline creates. しかし、インデックスを保持し、コンテンツと対話するために Search エクスプローラーなどの組み込みツールを (Storage Explorer と分析アプリの後ろの) 第 3 のメディアとして使用することもできます。But you could also keep the index and use a built-in tool like Search Explorer as a third medium (behind Storage Explorer and your analytics app) for interacting with your content.

ナレッジ ストアの内部Inside a knowledge store

"プロジェクション" では、目的の用途に一致するエンリッチメントのスキーマと構造を定義します。A projection defines the schema and structure of the enrichments that match your intended use. 形式と形状が異なるデータを使用するアプリケーションがある場合は、複数のプロジェクションを定義できます。You can define multiple projections if you have applications that consume the data in different formats and shapes.

プロジェクションは、オブジェクトまたはテーブルとして表すことができます。Projections can be articulated as objects or tables:

  • オブジェクトとして、プロジェクションは Blob Storage にマップされ、プロジェクションはコンテナーに保存されます。コンテナー内には、データ サイエンス パイプラインなどのシナリオ用に JSON でのオブジェクトまたは階層表現があります。As an object, the projection maps to Blob storage, where the projection is saved to a container, within which are the objects or hierarchical representations in JSON for scenarios like a data science pipeline.

  • テーブルとして、プロジェクションは Table Storage にマップされます。As a table, the projection maps to Table storage. 表形式では、機械学習用のデータ フレームとしてのデータの分析やエクスポートなどのシナリオの関係が維持されます。A tabular representation preserves relationships for scenarios like data analysis or export as data frames for machine learning. エンリッチメントされたプロジェクションは、他のデータ ストアに簡単にインポートできます。The enriched projections can then be easily imported into other data stores.

組織内のさまざまな立場に対応するために、ナレッジ ストアには複数のプロジェクションを作成できます。You can create multiple projections in a knowledge store to accommodate various constituencies in your organization. 開発者は、エンリッチメントされたドキュメントの完全な JSON 表現にアクセスする必要がありますが、データ サイエンティストやアナリストは、スキルセットによって整形されたきめ細かいまたはモジュール形式のデータ構造を必要とする可能性があります。A developer might need access to the full JSON representation of an enriched document, while data scientists or analysts might want granular or modular data structures shaped by your skillset.

たとえば、エンリッチメント プロセスの目標の 1 つがモデルのトレーニングに使用されるデータセットも作成することである場合、オブジェクト ストアへのデータの投影は、データ サイエンス パイプライン内でデータを使用する 1 つの方法です。For example, if one of the goals of the enrichment process is to also create a dataset used to train a model, projecting the data into the object store would be one way to use the data in your data science pipelines. または、エンリッチメントされたドキュメントに基づく簡単な Power BI ダッシュボードを作成する場合は、表形式のプロジェクションがうまく機能します。Alternatively, if you want to create a quick Power BI dashboard based on the enriched documents the tabular projection would work well.

どこから始めるかWhere do I start?

学習目的には無料のサービスをお勧めしますが、無料のトランザクションの数はサブスクリプションごとに 1 日あたり 20 のドキュメントまでに制限されることに注意してください。We recommend the Free service for learning purposes, but be aware that the number of free transactions is limited to 20 documents per day, per subscription.

複数のサービスを使用する場合は、パフォーマンスを最適化し、コストを最小限に抑えるために、すべてのサービスを同じリージョン内に作成します。When using multiple services, create all of your services in the same region for best performance and to minimize costs. 受信データまたは同じリージョン内の別のサービスへの送信データの帯域幅には課金されません。You are not charged for bandwidth for inbound data or outbound data that goes to another service in the same region.

手順 1:Azure Search リソースの作成Step 1: Create an Azure Search resource

手順 2:Azure ストレージ アカウントの作成Step 2: Create an Azure storage account

手順 3:Cognitive Services リソースの作成Step 3: Create a Cognitive Services resource

手順 4:ポータルの概要- または - REST と Postman を使用したサンプル データの概要Step 4: Get started with the portal - or - Get started with sample data using REST and Postman

REST api-version=2019-05-06-Preview を使用して、ナレッジ ストアを含む AI ベースのパイプラインを構築できます。You can use REST api-version=2019-05-06-Preview to construct an AI-based pipeline that includes knowledge store. 最新のプレビュー API では、スキルセット オブジェクトによって knowledgeStore 定義が提供されます。In the newest preview API, the Skillset object provides the knowledgeStore definition.

重要なポイントTakeaways

ナレッジ ストアには、さまざまな利点があります。たとえば、検索以外のシナリオでのエンリッチメントされたドキュメントの使用、コスト管理、エンリッチメント プロセスでの誤差の管理などが有効になるという利点がありますが、これらに限定されません。Knowledge store offers a variety of benefits including but not limited to enabling use of the enriched documents in scenarios other than search, cost controls, and managing drift in your enrichment process. これらすべての機能は、「ナレッジ ストアの使用を開始する方法」の説明に従ってスキルセットにストレージ アカウントを追加し、更新された式言語を使用するだけで使用可能になります。These features are all available to use simply by adding a storage account to your skillset and using the updated expression language as described in How to get started with knowledge store.

次の手順Next steps

エンリッチメントされたドキュメントを作成する最も簡単なアプローチは、データのインポート ウィザードを使用することです。The simplest approach for creating enriched documents is through the Import data wizard.