Analysez des données multimodales dans BigQuery

Ce document décrit les fonctionnalités BigQuery que vous pouvez utiliser pour créer et analyser des données multimodales. Vous pouvez utiliser ces fonctionnalités dans BigQuery avec GoogleSQL et avec Python à l'aide de BigQuery DataFrames.

Les fonctionnalités de données multimodales de BigQuery vous permettent d'effectuer les tâches suivantes :

  • Intégrez les données non structurées stockées dans Cloud Storage en tant que colonne supplémentaire à côté des données structurées dans les tables BigQuery standards en représentant les données non structurées sous forme de valeurs ObjectRef.
  • Générez des annotations, des embeddings et des valeurs scalaires à partir de données multimodales en utilisant les fonctions d'IA générative de BigQuery ML avec les modèles Gemini.
  • Générez des annotations, des embeddings et des valeurs scalaires à partir de données multimodales en créant des DataFrames multimodaux dans BigQuery DataFrames et en utilisant des bibliothèques Python.

Pour obtenir un tutoriel détaillé qui utilise la console Google Cloud , consultez Analyser des données multimodales avec SQL et Python.

Avantages

Les fonctionnalités de données multimodales de BigQuery offrent les avantages suivants :

  • Composabilité : vous pouvez stocker et gérer des données structurées et non structurées dans la même ligne de tableau standard en utilisant des valeurs ObjectRef. Par exemple, vous pouvez stocker les images d'un produit sur la même ligne que le reste des informations le concernant. Vous pouvez utiliser des fonctions SQL standard pour créer et mettre à jour des colonnes contenant des valeurs ObjectRef. Vous pouvez également créer des valeurs ObjectRef comme résultat d'une action de transformation sur un objet.
  • Ajouter plusieurs données non structurées dans les requêtes d'IA générative : ajoutez plusieurs valeurs ObjectRef comme entrée aux fonctions d'IA générative. Par exemple, vous pouvez générer des embeddings de données d'image et de texte à partir de la même table. Pour la génération de texte et de valeurs scalaires, vous pouvez également faire référence à plusieurs objets dans la requête que vous envoyez à un modèle. Par exemple, vous pouvez créer une requête qui demande au modèle de générer une description de produit en fonction des images et des attributs du produit.
  • Persistance de l'ordre des blocs : vous pouvez segmenter des objets, puis stocker les blocs sous forme de tableau de valeurs ObjectRef dans une colonne de table standard afin de conserver leur ordre. Par exemple, vous pouvez analyser des images à partir d'une vidéo, puis les stocker sous forme de tableau de valeurs ObjectRef, afin que les images restent dans le même ordre que dans la vidéo d'origine.

ObjectRef valeurs

Une valeur ObjectRef est une valeur STRUCT qui utilise le schéma ObjectRef. Vous pouvez stocker les métadonnées d'objet Cloud Storage et un autorisateur associé dans une table BigQuery standard en créant une colonne STRUCT ou ARRAY<STRUCT> qui utilise ce format. La valeur de l'autorisation identifie la connexion aux ressources Cloud que BigQuery utilise pour accéder à l'objet Cloud Storage. Si vous définissez l'autorisation sur NULL, BigQuery utilise vos identifiants d'utilisateur final.

Utilisez les valeurs ObjectRef lorsque vous devez intégrer des données non structurées dans un tableau standard. Par exemple, dans une table de produits, vous pouvez stocker des images de produits sur la même ligne que le reste des informations produit en ajoutant une colonne contenant une valeur ObjectRef.

Créez et mettez à jour des valeurs ObjectRef à l'aide des fonctions GoogleSQL suivantes :

  • OBJ.MAKE_REF : créez une valeur ObjectRef contenant les métadonnées d'un objet Cloud Storage.
  • OBJ.FETCH_METADATA : récupère les métadonnées Cloud Storage pour une valeur ObjectRef partiellement renseignée avec les valeurs uri et authorizer.
  • OBJ.LIST : renvoie un tableau de métadonnées et de valeurs ObjectRef pour les fichiers stockés dans Cloud Storage.

Pour en savoir plus, consultez Utiliser des valeurs ObjectRef.

ObjectRefRuntime valeurs

Une valeur ObjectRefRuntime est une valeur JSON qui utilise le schéma ObjectRefRuntime. Une valeur ObjectRefRuntime contient les métadonnées de l'objet Cloud Storage à partir de la valeur ObjectRef qui a été utilisée pour le créer, un autorisateur associé et des URL d'accès. Vous pouvez utiliser les URL d'accès pour lire ou modifier l'objet dans Cloud Storage.

Utilisez les valeurs ObjectRefRuntime pour travailler avec les données d'objet dans les workflows d'analyse et de transformation. Les URL d'accès dans les valeurs ObjectRefRuntime expirent au bout de six heures maximum, mais vous pouvez configurer une durée d'expiration plus courte. Si vous conservez des valeurs ObjectRefRuntime dans votre workflow, vous devez actualiser ces données régulièrement. Pour conserver les métadonnées d'objet, stockez plutôt les valeurs ObjectRef, puis utilisez-les pour générer des valeurs ObjectRefRuntime lorsque vous en avez besoin. Les valeurs ObjectRef n'ont pas besoin d'être actualisées, sauf si les objets sous-jacents dans Cloud Storage sont modifiés.

Créez des valeurs ObjectRefRuntime à l'aide de la fonction OBJ.GET_ACCESS_URL.

Fonctions d'IA générative

Générez du texte, des embeddings et des valeurs scalaires en fonction de l'entrée ObjectRef à l'aide des fonctions d'IA générative suivantes avec les modèles Gemini :

Travailler avec des données multimodales en Python

Vous pouvez analyser des données multimodales en Python à l'aide des classes et des méthodes BigQuery DataFrames.

DataFrames multimodaux

Créez un DataFrame multimodal qui intègre des données structurées et non structurées à l'aide de la méthode read_gbq : créez un DataFrame multimodal à partir d'une table d'objets.

Pour l'essayer, consultez le tutoriel sur les DataFrames multimodaux sur GitHub.

Méthodes d'IA générative

Utilisez les méthodes suivantes pour effectuer des tâches d'IA générative sur des données multimodales :

Tables d'objets

Toutes les nouvelles tables d'objets que vous créez comportent une colonne ref contenant une valeur ObjectRef pour l'objet donné. La connexion utilisée pour créer la table d'objets sert à remplir les valeurs authorizer dans la colonne ref. Vous pouvez utiliser la colonne ref pour remplir et actualiser les valeurs ObjectRef dans les tables standards.

Ensembles de données Storage Insights

Un ensemble de données Storage Insights est un ensemble de données BigQuery associé que vous pouvez interroger pour analyser et visualiser vos données Cloud Storage. La colonne ref contient des valeurs ObjectRef que vous pouvez utiliser pour analyser les données et les métadonnées des objets.

Limites

Les limites suivantes s'appliquent aux fonctionnalités de données multimodales BigQuery :

  • Si vous ne spécifiez pas explicitement le nom du projet contenant la connexion dans le champ authorizer d'une valeur ObjectRef, la connexion doit exister dans le projet contenant la table d'objets qui la stocke, ou dans le projet dans lequel la requête qui fait référence à la valeur ObjectRef est exécutée.
  • Vous ne pouvez pas avoir plus de 20 connexions de ressources Cloud dans le projet et la région où votre requête accède aux données d'objet en tant que valeurs ObjectRef.
  • Vous pouvez référencer des valeurs ObjectRef provenant d'au maximum cinq projets en plus de celui dans lequel vous exécutez la requête.

Tarifs

Les coûts suivants sont générés lorsque vous utilisez des données multimodales :

  • Le stockage des métadonnées d'objet sous forme de valeurs ObjectRef dans des tables standards contribue au coût de stockage BigQuery de la table.
  • Les requêtes exécutées sur des valeurs ObjectRef entraînent des coûts de calcul BigQuery.
  • Les nouveaux objets que vous créez à partir de transformations d'objets entraînent des coûts Cloud Storage.
  • Les nouvelles données que vous créez et conservez dans BigQuery entraînent des frais de stockage BigQuery.
  • Lorsque vous utilisez des fonctions d'IA générative, vous générez des coûts Gemini Enterprise Agent Platform.
  • Lorsque vous utilisez des UDF Python BigQuery, des DataFrames multimodaux et des méthodes de transformation d'objets dans BigQuery DataFrames, vous générez des coûts d'UDF Python.
  • Les fonctions OBJ telles que OBJ.LIST et OBJ.GET_READ_URL ne traitent que les métadonnées, et non les octets du fichier sous-jacent. Vous générez des coûts lorsque vous transmettez la référence d'objet renvoyée à une fonction AI en aval qui lit le contenu du fichier, par exemple AI.GENERATE ou AI.IF.

Pour en savoir plus, consultez les pages suivantes sur les tarifs :

Étapes suivantes