Tous les produits
Search
Centre de documentation

Intelligent Media Management:Recherche sémantique

Dernière mise à jour :Aug 10, 2026

Intelligent Media Management (IMM) utilise un modèle de recherche vectorielle sémantique pour retrouver des données multimédias en fonction de leur signification. Cette rubrique explique comment utiliser la recherche sémantique.

Description de la fonctionnalité

La méthode de recherche scalaire traditionnelle s'appuie sur des attributs de métadonnées tels que le nom du fichier, la date de création et le format pour retrouver des informations. Contrairement à la recherche scalaire, la recherche sémantique utilise une méthode de recherche vectorielle fondée sur le sens ou la sémantique du contenu, par exemple « vue aérienne de forêts », « ville enneigée » ou « prairie de l'été dernier ». Vous pouvez utiliser la fonctionnalité de recherche sémantique pour retrouver des données stockées dans Object Storage Service et Photo and Drive Service.

Scénarios

Recherche de fichiers professionnels

La recherche sémantique vous permet de trouver les fichiers professionnels souhaités en fonction du contenu sémantique ou de mots-clés, tels que « instructions du système ERP », « procédure de réparation des équipements » et « analyse des opérations commerciales pour 2024 », afin de faciliter la recherche de fichiers et d'améliorer l'efficacité au travail.

Recherche multimédia

La recherche sémantique vous permet d'intégrer des capacités de recherche et de récupération rapides et efficaces de données multimédias dans vos applications de réseau multimédia. Par exemple, vous pouvez implémenter la recherche sémantique dans une application de réseau social axée sur les images pour permettre aux utilisateurs de rechercher des images à l'aide de contenus sémantiques tels que « excursion en banlieue au printemps dernier », « réunion du Nouvel An chinois » et « mes expériences océaniques ». Cela offre plus de commodité et de plaisir.

Stockage en ligne

De nombreux services de stockage en ligne proposent une recherche de fichiers basée sur des scalaires, selon des attributs tels que les noms de fichiers, la date de création et les extensions. La recherche sémantique vous permet de retrouver efficacement des types de données spécifiques, tels que des documents et des images, en fonction du contenu sémantique.

Récupération de vidéos de surveillance

La recherche sémantique permet de rechercher et de récupérer des vidéos de surveillance en fonction de mots-clés sémantiques, tels que « vidéo de surveillance extérieure sous la neige hier » et « verger par temps ensoleillé ».

Limites

Important
  • La recherche sémantique prend uniquement en charge les images et les documents.

  • La recherche sémantique est disponible uniquement dans la région Chine (Pékin).

  • La recherche sémantique prend en charge les formats d'image suivants : JPG, PNG, BMP, GIF, WebP, TIFF, HEIC et AVIF.

  • La fonctionnalité prend en charge une image d'une taille maximale de 20 Mo, dont la largeur ou la hauteur ne dépasse pas 30 000 pixels et dont le nombre total de pixels ne dépasse pas 250 millions. Le nombre total de pixels d'une image dynamique, telle qu'une image GIF, est calculé à l'aide de la formule suivante : Largeur × Hauteur × Nombre d'images. Le nombre total de pixels d'une image statique, telle qu'une image PNG, est calculé à l'aide de la formule suivante : Largeur × Hauteur.

  • La limite de longueur de caractères pour un document est de 300 000. Les caractères situés au-delà de cette limite sont tronqués.

  • L'indexation et l'analyse des données s'effectuent de manière asynchrone. Lorsque vous appelez des opérations API d'indexation telles que IndexFileMeta pour créer un index, utilisez un callback pour vérifier si l'analyse des données est terminée. L'analyse des données nécessite un temps d'exécution allant de quelques secondes à quelques minutes, selon le type de données, la taille et la complexité de l'analyse. Une fois l'analyse des données terminée, le moteur de stockage crée un index, ce qui prend quelques secondes. Après la création de l'index, vous pouvez rechercher les données à l'aide de la recherche sémantique.

Prérequis

  • Un index a été créé en fonction des métadonnées de votre scénario d'application. Pour plus d'informations, consultez Créer un index de métadonnées.

  • Pour le dataset, sélectionnez le modèle de workflow « Official:CognitionImageManagement » ou « Official:CognitionDocumentManagement ». Ces modèles correspondent respectivement à la recherche sémantique pour les images et les documents.

Important

Si vous n'avez plus besoin de la recherche sémantique, nous vous recommandons de supprimer le dataset. Un dataset extrait automatiquement et continuellement les métadonnées depuis OSS, ce qui génère des frais d'appel API.

Facturation

  • Facturation IMM : La recherche sémantique génère des frais liés à la gestion des métadonnées. Pour plus d'informations, consultez Éléments facturables.

Remarque

Lorsque vous utilisez la recherche sémantique, vous devez sélectionner le modèle de workflow « Official:CognitionImageManagement » ou « Official:CognitionDocumentManagement » pour votre dataset. Ces modèles sont utilisés respectivement pour la recherche sémantique d'images et de documents. Les modèles contiennent plusieurs opérateurs. L'opérateur de recherche sémantique est gratuit, mais les autres opérateurs sont facturés. Pour plus d'informations sur la correspondance entre les modèles et les opérateurs, consultez Modèles de workflow et opérateurs.

Utilisation

Appelez l'opération SemanticQuery pour rechercher les métadonnées dans le dataset test-dataset du projet test-project.

Recherche sémantique d'images

Par exemple, un album photo contient de nombreuses photos de voyage, dont certaines représentent des pandas pris à la base de recherche et d'élevage des pandas géants de Chengdu en juillet 2020. Pour trouver ces photos à l'aide de la recherche sémantique, créez un dataset pour indexer les métadonnées des photos. Ensuite, utilisez une requête par mot-clé telle que « Pandas à Chengdu en juillet 2020 » pour les retrouver.

L'exemple suivant montre comment rechercher des fichiers contenant « Pandas à Chengdu en juillet 2020 » dans le dataset test-dataset du projet test-project :

Exemple de requête

{
    "ProjectName": "test-project",
    "DatasetName": "test-dataset",
    "Query": "Pandas in Chengdu in July 2020"
}

Exemple de réponse

{
    "RequestId": "645FB6D9-5EA0-02C9-B253-****",
    "Files": [
        {
            "ProduceTime": "2020-07-19T17:11:11+08:00",
            "ObjectACL": "default",
            "ContentType": "image/jpeg",
            "ProjectName": "test-project",
            "Size": 22868,
            "URI": "oss://test-bucket/test-object.jpg",
            "Addresses": [
                {
                    "Language": "zh-Hans",
                    "Township": "Sanhe Sub-district",
                    "AddressLine": "Chengdu Research Base of Giant Panda Breeding, Sanhe Sub-district, Xindu District, Chengdu City, Sichuan Province",
                    "Country": "China",
                    "City": "Chengdu",
                    "District": "Xindu District",
                    "Province": "Sichuan Province"
                }
            ],
            "ObjectType": "file",
            "OwnerId": "****",
            "FileModifiedTime": "2021-05-13T10:22:44+08:00",
            "ImageWidth": 270,
            "OSSStorageClass": "Standard",
            "MediaType": "image",
            "ObjectId": "****",
            "CreateTime": "2022-07-06T07:10:18.497753661+08:00",
            "Filename": "1.jpg",
            "Labels": [
                {
                    "CentricScore": 0.757,
                    "Language": "zh-Hans",
                    "LabelConfidence": 0.946,
                    "LabelName": "Panda",
                    "LabelLevel": 2,
                    "ParentLabelName": "Wildlife"
                },
                ...
            ],
            "Orientation": 1,
            "EXIF": "...",
            "ContentMd5": "HZwoCnxPZ/fvhz4oRJ****",
            "ImageHeight": 270,
            "ImageScore": {
                "OverallQualityScore": 0.719
            },
            "ETag": "\"1D9C280A7C4F67F7EF873E28449D****\"",
            "DatasetName": "test-dataset",
            "FileHash": "\"1D9C280A7C4F67F7EF873E2****\"",
            "UpdateTime": "2022-07-06T07:10:18.497753661+08:00",
            "OSSCRC64": "5634447745650079669",
            "OSSTaggingCount": 0,
            "LatLong": "34.000000,119.000000",
            "OSSObjectType": "Normal"
        }
    ]
}

Exemple de code (SDK IMM pour Python 1.27.3)

# -*- coding: utf-8 -*-

import os
from alibabacloud_imm20200930.client import Client as imm20200930Client
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_imm20200930 import models as imm_20200930_models
from alibabacloud_tea_util import models as util_models
from alibabacloud_tea_util.client import Client as UtilClient

class Sample:
    def __init__(self):
        pass

    @staticmethod
    def create_client(
        access_key_id: str,
        access_key_secret: str,
    ) -> imm20200930Client:
        """
        Use your AccessKey ID and AccessKey secret to initialize the client. 
        @param access_key_id:
        @param access_key_secret:
        @return: Client
        @throws Exception
        """
        config = open_api_models.Config(
            access_key_id=access_key_id,
            access_key_secret=access_key_secret
        )
        config.endpoint = f'imm.cn-beijing.aliyuncs.com'
        return imm20200930Client(config)

    @staticmethod
    def main() -> None:
        # The AccessKey pair of an Alibaba Cloud account has permissions on all API operations. To prevent security risks, we recommend that you call API operations or perform routine O&M as a RAM user. 
        # We recommend that you do not include your AccessKey pair (AccessKey ID and AccessKey secret) in your project code. Otherwise, the AccessKey pair may be leaked and the security of all the resources within your account may be compromised. 
        # In this example, the AccessKey pair is read from the environment variables to implement identity verification for API access. For information about how to configure environment variables, visit https://www.alibabacloud.com/help/document_detail/2361894.html. 
        imm_access_key_id = os.getenv("AccessKeyId")
        imm_access_key_secret = os.getenv("AccessKeySecret")
        client = Sample.create_client(imm_access_key_id, imm_access_key_secret)
        semantic_query_request = imm_20200930_models.SemanticQueryRequest(
            query='Pandas in Chengdu in July 2020',
            project_name='test-project',
            dataset_name='test-dataset',
            max_results=100
        )
        runtime = util_models.RuntimeOptions()
        try:
            # Print the response of the API operation. 
            response = client.semantic_query_with_options(semantic_query_request, runtime)
            print(response.body.to_map())
        except Exception as error:
            # Print the error message if necessary. 
            UtilClient.assert_as_string(error.message)
            print(error)

if __name__ == '__main__':
    Sample.main()

Recherche sémantique de documents

Par exemple, vous stockez divers documents dans un stockage en ligne. Pour utiliser la recherche sémantique afin de retrouver un document sur le processus de service informatique depuis le stockage en ligne, créez un dataset pour indexer les documents et utilisez des mots-clés tels que « processus de service informatique » pour retrouver le document.

L'exemple suivant montre comment rechercher des fichiers contenant « processus de service informatique » dans le dataset test-dataset du projet test-project avec les paramètres de requête suivants :

Exemple de requête

{
    "ProjectName": "test-project",
    "DatasetName": "test-dataset",
    "MediaTypes": ["document"],  
    "Query": "IT service process"
}

Exemple de réponse

{
  "RequestId": "CD870E69-D2E8-031B-BD3E-****",
  "Files": [
    {
      "ObjectACL": "default",
      "ContentType": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
      "ProjectName": "test-project",
      "ObjectId": "2f66ba6e902e5ad42341a9e7365b19f6130d4a077e4f57150450e281d0b7afd9",
      "Size": 28340,
      "CreateTime": "2024-03-08T10:13:19.569053164+08:00",
      "Filename": "3839a9a0-c630-420d-ae69-ea24792412fd.docx",
      "URI": "oss://test-bucket/test-object.docx",
      "ObjectType": "file",
      "ContentMd5": "Y7SmYa831Hq1qryuRyl6mg==",
      "OwnerId": "****",
      "FileModifiedTime": "2024-01-10T16:18:31+08:00",
      "ETag": "\"63B4A661AF37D47AB5AABCAE47297A9A\"",
      "DatasetName": "test-dataset",
      "FileHash": "63B4A661AF37D47AB5AABCAE47297A9A",
      "UpdateTime": "2024-03-08T10:13:19.569053164+08:00",
      "OSSStorageClass": "Standard",
      "MediaType": "document",
      "OSSCRC64": "6833019149643646551",
      "OSSTaggingCount": 0,
      "OSSObjectType": "Normal"
    }
  ]
}

Exemple de code (SDK IMM pour Python 1.27.3)

# -*- coding: utf-8 -*-

import os
from alibabacloud_imm20200930.client import Client as imm20200930Client
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_imm20200930 import models as imm_20200930_models
from alibabacloud_tea_util import models as util_models
from alibabacloud_tea_util.client import Client as UtilClient

class Sample:
    def __init__(self):
        pass

    @staticmethod
    def create_client(
        access_key_id: str,
        access_key_secret: str,
    ) -> imm20200930Client:
        """
        Initializes a client using an AccessKey ID and an AccessKey Secret.
        @param access_key_id:
        @param access_key_secret:
        @return: Client
        @throws Exception
        """
        config = open_api_models.Config(
            access_key_id=access_key_id,
            access_key_secret=access_key_secret
        )
        config.endpoint = f'imm.cn-beijing.aliyuncs.com'
        return imm20200930Client(config)

    @staticmethod
    def main() -> None:
        # We recommend using a RAM user for API calls and routine O&M, as this is more secure. An AccessKey pair from an Alibaba Cloud account grants full permissions on all API operations.
        # To prevent security risks, do not hard-code the AccessKey ID and AccessKey Secret in your code. We recommend that you obtain the AccessKey pair from environment variables.
        # In this example, the AccessKey pair is obtained from environment variables. For more information about how to configure environment variables, see https://www.alibabacloud.com/help/document_detail/2361894.html.
        imm_access_key_id = os.getenv("AccessKeyId")
        imm_access_key_secret = os.getenv("AccessKeySecret")
        client = Sample.create_client(imm_access_key_id, imm_access_key_secret)
        semantic_query_request = imm_20200930_models.SemanticQueryRequest(
            query='IT service process',
            project_name='test-project',
            dataset_name='test-dataset',
          	media_types=['document'],
            max_results=100
        )
        runtime = util_models.RuntimeOptions()
        try:
            # Prints the API response.
            response = client.semantic_query_with_options(semantic_query_request, runtime)
            print(response.body.to_map())
        except Exception as error:
            # Prints the error message if an exception is caught.
            UtilClient.assert_as_string(error.message)
            print(error)

if __name__ == '__main__':
    Sample.main()