page_type | languages | products | name | urlFragment | description | ||||
---|---|---|---|---|---|---|---|---|---|
sample |
|
|
Generate Image Embeddings Custom Skill |
azure-cognitive-search-generate-embeddings-skill |
This custom skill enables |
このカスタムスキルは、Azure AI services の Vectorize Image API を使用して画像をベクトル化します。
本スキルは、Azure AI services リソースが必要です。また、COMPUTER_VISION_ENDPOINT
と COMPUTER_VISION_KEY
が必要です。Azure Functions にデプロイする際は、「アプリケーション設定」項目に設定する必要があります。
- Azure portal で、Azure AI services リソースを作成します。
- Azure AI services の API キーとエンドポイントをコピーします。
- このレポジトリを clone します。
- Visual Studio Code でレポジトリのフォルダを開き、Azure Functions にリモートデプロイします。
- Functions にデプロイが完了したら, Azure Portal の Azure Functions の設定→構成から、
COMPUTER_VISION_ENDPOINT
とCOMPUTER_VISION_KEY
環境変数にそれぞれ値を貼り付けます。
Azure Functions へデプロイする場合、以下が必要となります。
この Funcsions は、有効な Azure AI services API キーが設定された COMPUTER_VISION_KEY
の設定と、Azure AI services エンドポイント COMPUTER_VISION_ENDPOINT
を必要とします。
ローカルで実行する場合は、プロジェクトのローカル環境変数で設定できます。これにより、API キーが誤ってコードに埋め込まれることがなくなります。
Azure Functions で実行する場合、これは「アプリケーションの設定」で設定できます。
カスタムスキルは画像の data 項目などを Azure Cognitive Search から受け取ります。data 項目には Base64 エンコードされた画像データが格納されているので、デコードして Python の バイナリストリームにロードします。
{
"values": [
{
"recordId": "record1",
"data": {
"image": {
"$type": "file",
"data": "/9j/4AAQS...",
...
}
}
}
]
}
{
"values": [
{
"recordId": "record1",
"embeddings": [0.6376953,2.2128906,...],
"errors": {}
}
]
}
このスキルを Azure Cognitive Search パイプラインで使用するには、スキル定義をスキルセットに追加する必要があります。この例のスキル定義の例を次に示します(特定のシナリオとスキルセット環境を反映するように入力と出力を更新する必要があります)。
{
"@odata.type": "#Microsoft.Skills.Custom.WebApiSkill",
"name": "GenerateImageEmbeddingsSkill",
"description": "Convert an image to a vector using the Vectorize Image API.",
"uri": "[AzureFunctionEndpointUrl]/api/GenerateImageEmbeddings?code=[AzureFunctionDefaultHostKey]",
"context": "/document/normalized_images/*",
"inputs": [
{
"name": "image",
"source": "/document/normalized_images/*"
}
],
"outputs": [
{
"name": "embeddings",
"targetName": "embeddings"
}
]
}
インデクサーに出力フィールドのマッピングを設定します。これを行わないと、エンリッチ処理されたツリーから embeddings データを検索フィールドへマッピングすることができません。
{
"outputFieldMappings": [
{
"sourceFieldName": "/document/normalized_images/0/embeddings",
"targetFieldName": "embeddings"
}
],
}