Un guide pratique de l’analyse des données multimodales




Contenu sponsorisé


Google Cloud
Introduction
Les entreprises gèrent un mélange de données structurées dans des tables organisées et un volume croissant de données non structurées comme les images, l’audio et les documents. L’analyse ensemble de ces divers types de données est traditionnellement complexe, car elles nécessitent souvent des outils distincts. Les supports non structurés nécessitent généralement des exportations vers des services spécialisés pour le traitement (par exemple, un service de vision par ordinateur pour l’analyse d’image, ou un moteur parole à texte pour l’audio), ce qui crée des silos de données et entrave une vue analytique holistique.
Considérez un système de support de commerce électronique fictif: les détails structurés des billets en direct dans une table BigQuery, tandis que les enregistrements d’appels de support correspondants ou les photos de produits endommagés résident dans des magasins d’objets cloud. Sans un lien direct, répondant à une question riche en contexte comme «Identifiez tous les billets de support pour un modèle d’ordinateur portable spécifique où l’audio d’appel indique une forte frustration des clients et la photo montre un écran fissuré« est un processus encombrant et en plusieurs étapes.
Cet article est un guide technique pratique d’Objectref dans BigQuery, une fonctionnalité conçue pour unifier cette analyse. Nous explorerons comment construire, interroger et régir les ensembles de données multimodaux, permettant des informations complètes à l’aide d’interfaces SQL et Python familières.
Partie 1: Objectref – La clé pour unifier les données multimodales
Structure et fonction Objectref
Pour relever le défi des données cloisonnées, BigQuery présente ObjectRef, un type de données de structure spécialisé. Un objectref agit comme une référence directe à un objet de données non structuré stocké dans Google Cloud Storage (GCS). Il ne contient pas les données non structurées elle-même (par exemple une image codée Base64 dans une base de données, ou un audio transcrit); Au lieu de cela, il pointe vers l’emplacement de ces données, permettant à BigQuery d’accéder et de les intégrer dans les requêtes pour analyse.
La structure Objectref est composée de plusieurs champs clés:
- uri (String): un chemin GCS vers un objet
- autorisateur (String): permet à BigQuery d’accéder solidement aux objets GCS
- version (String): stocke l’ID de génération spécifique d’un objet GCS, verrouillant la référence à une version précise pour une analyse reproductible
- détails (JSON): un élément JSON qui contient souvent des métadonnées GCS comme
contentTypeousize
Voici une représentation JSON d’une valeur objectref:
JSON
{
"uri": "gs://cymbal-support/calls/ticket-83729.mp3",
"version": 1742790939895861,
"authorizer": "my-project.us-central1.conn",
"details": {
"gcs_metadata": {
"content_type": "audio/mp3",
"md5_hash": "a1b2c3d5g5f67890a1b2c3d4e5e47890",
"size": 5120000,
"updated": 1742790939903000
}
}
}
En encapsulant ces informations, un Objectref fournit à BigQuery tous les détails nécessaires pour localiser, accéder solidement et comprendre les propriétés de base d’un fichier non structuré dans GCS. Cela constitue les bases de la construction de tables multimodales et de frames de données, permettant aux données structurées de vivre côte à côte avec des références à un contenu non structuré.
Créer des tables multimodales
UN table multimodale est une table BigQuery standard qui comprend une ou plusieurs colonnes Objectref. Cette section couvre comment créer ces tables et les remplir avec SQL.
Vous pouvez définir les colonnes ObjectRef lors de la création d’une nouvelle table ou les ajouter aux tables existantes. Cette flexibilité vous permet d’adapter vos modèles de données actuels pour profiter des capacités multimodales.
Création d’une colonne objectref avec des tables d’objets
Si vous avez de nombreux fichiers stockés dans un seau GCS, un table d’objet est un moyen efficace de générer des objectrefs. Une table d’objet est une table en lecture seule qui affiche le contenu d’un répertoire GCS et comprend automatiquement une colonne nommée refde type objectref.
SQL
CREATE EXTERNAL TABLE `project_id.dataset_id.my_table`
WITH CONNECTION `project_id.region.connection_id`
OPTIONS(
object_metadata="SIMPLE",
uris = ('gs://bucket-name/path/*.jpg')
);
La sortie est un nouveau tableau contenant un ref colonne. Vous pouvez utiliser le ref colonne avec des fonctions comme AI.GENERATE ou rejoignez-le à d’autres tables.
Construction programmatique des objectrefs
Pour des workflows plus dynamiques, vous pouvez créer des objectrefs par programme en utilisant le OBJ.MAKE_REF() fonction. Il est courant d’envelopper cette fonction OBJ.FETCH_METADATA() pour peupler le details élément avec des métadonnées GCS. Le code suivant fonctionne également si vous remplacez le gs:// Chemin avec un champ URI dans un tableau existant.
SQL
SELECT
OBJ.FETCH_METADATA(OBJ.MAKE_REF('gs://my-bucket/path/image.jpg', 'us-central1.conn')) AS customer_image_ref,
OBJ.FETCH_METADATA(OBJ.MAKE_REF('gs://my-bucket/path/call.mp3', 'us-central1.conn')) AS support_call_ref
En utilisant les tables d’objet ou OBJ.MAKE_REFvous pouvez construire et maintenir des tables multimodales, en préparant la voie à l’analyse intégrée.
Partie 2: Tables multimodales avec SQL
Accès sécurisé et gouverné
ObjectRef s’intègre aux fonctionnalités de sécurité natives de BigQuery, permettant la gouvernance sur vos données multimodales. L’accès aux objets GCS sous-jacents n’est pas accordée directement à l’utilisateur final. Au lieu de cela, il est délégué via une ressource de connexion BigQuery spécifiée dans le champ Authorizer d’Objectref. Ce modèle permet plusieurs couches de sécurité.
Considérez la table multimodale suivante, qui stocke des informations sur les images du produit pour notre magasin de commerce électronique. Le tableau comprend une colonne Objectref nommée image.


Sécurité au niveau de la colonne: restreindre l’accès aux colonnes entières. Pour un ensemble d’utilisateurs qui ne doivent analyser les noms et les évaluations des produits, un administrateur peut appliquer la sécurité au niveau de la colonne au image colonne. Cela interdit à ces analystes de sélectionner le image colonne tout en permettant l’analyse d’autres champs structurés.


Sécurité au niveau des lignes: BigQuery permet le filtrage des lignes qu’un utilisateur peut voir en fonction des règles définies. Une stratégie au niveau des lignes pourrait restreindre l’accès en fonction du rôle d’un utilisateur. Par exemple, une politique peut indiquer «ne permettez pas aux utilisateurs de demander des produits liés aux chiens», qui filtre ces lignes à partir des résultats de la requête comme s’ils n’existaient pas.


Plusieurs autorités: ce tableau utilise deux connexions différentes dans le image.authorizer élément (conn1 et conn2).
Cela permet à un administrateur de gérer les autorisations GCS de manière centralisée via des connexions. Par exemple, conn1 pourrait accéder à un seau d’image public, tandis que conn2 accède à un seau restreint avec de nouveaux conceptions de produits. Même si un utilisateur peut voir toutes les lignes, sa capacité à interroger le fichier sous-jacent pour le produit «graine d’oiseau» dépend entièrement de savoir s’il a la permission d’utiliser les plus privilégiés conn2 connexion.


Inférence à base de l’AI avec SQL
Le AI.GENERATE_TABLE La fonction crée un nouveau tableau structuré en appliquant un modèle d’IA génératif à vos données multimodales. Ceci est idéal pour les tâches d’enrichissement des données à grande échelle. Utilisons notre exemple de commerce électronique pour créer des mots clés de référencement et une courte description marketing pour chaque produit, en utilisant son nom et son image comme matériel source.
La requête suivante traite le products table, prenant le product_name et image Objectref comme entrées. Il génère une nouvelle table contenant l’original product_idune liste de mots clés SEO et une description du produit.
SQL
SELECT
product_id,
seo_keywords,
product_description
FROM AI.GENERATE_TABLE(
MODEL `dataset_id.gemini`, (
SELECT (
'For the image of a pet product, generate:'
'1) 5 SEO search keywords and'
'2) A one sentence product description',
product_name, image_ref) AS prompt,
product_id
FROM `dataset_id.products_multimodal_table`
),
STRUCT(
"seo_keywords ARRAY, product_description STRING" AS output_schema
)
);
Le résultat est une nouvelle table structurée avec les colonnes product_id, seo_keywordset product_description. Cela automatise une tâche de marketing longue et produit des données prêtes à l’emploi qui peuvent être chargées directement dans un système de gestion de contenu ou utilisées pour une analyse plus approfondie.
Partie 3: Frères de données multimodales avec Python
Bridging Python et BigQuery pour l’inférence multimodale
Python est le langage de choix pour de nombreux scientifiques des données et analystes de données. Mais les praticiens rencontrent généralement des problèmes lorsque leurs données sont trop importantes pour s’adapter à la mémoire d’une machine locale.
BigQuery DataFrames fournit une solution. Il propose une API de type Pandas pour interagir avec les données stockées dans BigQuery sans jamais Le tirer dans la mémoire locale. Le bibliothèque Traduit le code Python en SQL qui est poussé vers le bas et exécuté sur le moteur hautement évolutif de BigQuery. Cela fournit la syntaxe familière d’une bibliothèque Python populaire combinée à la puissance de BigQuery.
Cela s’étend naturellement à l’analyse multimodale. Un BigQuery DataFrame peut représenter à la fois vos données structurées et références à des fichiers non structurés, ensemble en un seul Frame de données multimodale. Cela vous permet de charger, de transformer et d’analyser les dataframes contenant à la fois vos métadonnées structurées et vos pointeurs vers des fichiers non structurés, dans un seul environnement python.
Créer des dataframes multimodaux
Une fois que vous avez le bibliothèque BigFrames Installé, vous pouvez commencer à travailler avec des données multimodales. Le concept clé est le colonne blob: Une colonne spéciale qui contient des références à des fichiers non structurés dans GCS. Considérez une colonne blob comme la représentation Python d’un objectref – il ne tient pas le fichier lui-même, mais le pointe et fournit des méthodes pour interagir avec elle.
Il existe trois façons courantes de créer ou de désigner une colonne Blob:
PYTHON
import bigframes
import bigframes.pandas as bpd
# 1. Create blob columns from a GCS location
df = bpd.from_glob_path( "gs://cloud-samples-data/bigquery/tutorials/cymbal-pets/images/*", name="image")
# 2. From an existing object table
df = bpd.read_gbq_object_table("", name="blob_col")
# 3. From a dataframe with a URI field
df("blob_col") = df("uri").str.to_blob()
Pour expliquer les approches ci-dessus:
- Un emplacement GCS: Utiliser
from_glob_pathPour scanner un seau GCS. Dans les coulisses, cette opération crée une table d’objets BigQuery temporaire et la présente comme un DataFrame avec une colonne Blob prêt à l’emploi. - Une table d’objets existante: Si vous avez déjà une table d’objets BigQuery, utilisez le
read_gbq_object_tablefonction pour le charger. Cela lit le tableau existant sans avoir besoin de rediffuser les GC. - Un dataframe existant: Si vous avez un BigQuery DataFrame qui contient une colonne de String GCS URI, utilisez simplement le
.str.to_blob()Méthode sur cette colonne pour le «mettre à niveau» dans une colonne blob.
Inférence dirigée par AI avec Python
Le principal avantage de la création d’une dataframe multimodale est d’effectuer une analyse axée sur l’IA directement sur vos données non structurées à grande échelle. BigQuery DataFrames vous permet d’appliquer des modèles de grande langue (LLMS) à vos données, y compris les colonnes blob.
Le flux de travail général comprend trois étapes:
- Créer un dataframe multimodal avec une colonne blob pointant vers des fichiers non structurés
- Chargez un modèle BigQuery ML préexistant dans un objet de modèle BigFrames
- Appelez la méthode .predict () sur l’objet modèle, en passant votre entrée de données multimodal en entrée.
Continuons avec l’exemple de commerce électronique. Nous utiliserons le gemini-2.5-flash Modèle pour générer une brève description pour chaque image du produit PET.
PYTHON
import bigframes.pandas as bpd
# 1. Create the multimodal dataframe from a GCS location
df = bpd.from_glob_path(
"gs://cloud-samples-data/bigquery/tutorials/cymbal-pets/images/*", name="image_blob")
# Limit to 2 images for simplicity
df = df.head(2)
# 2. Specify a large language model
from bigframes.ml import llm
model = llm.GeminiTextGenerator(model_name="gemini-2.5-flash-preview-05-20")
# 3. Ask the LLM to describe what's in the picture
answer = model.predict(df_image, prompt=("Write a 1 sentence product description for the image.", df_image("image")))
answer(("ml_generate_text_llm_result", "image"))
Quand tu appelles model.predict(df_image)BigQuery DataFrames construit et exécute une requête SQL à l’aide du ML.GENERATE_TEXT fonction, passant automatiquement des références de fichiers à partir du blob colonne et le texte prompt comme entrées. Le moteur BigQuery traite cette demande, envoie les données à un modèle Gemini et renvoie les descriptions de texte générées à une nouvelle colonne dans le dataframe résultant.
Cette puissante intégration vous permet d’effectuer une analyse multimodale sur des milliers ou des millions de fichiers en utilisant seulement quelques lignes de code Python.
Aller plus profondément avec les données de données multimodales
En plus d’utiliser des LLM pour la génération, le bigframes La bibliothèque propose un ensemble croissant d’outils conçus pour traiter et analyser des données non structurées. Capacités clés disponibles avec la colonne Blob et ses méthodes connexes comprennent:
- Transformations intégrées: préparer des images pour la modélisation avec des transformations natives pour des opérations communes comme flou, normalisationet redimensionnement à l’échelle.
- Génération d’intégration: Activer la recherche sémantique en générant des intégres à partir de données multimodales, en utilisant des modèles hébergés Vertex Ai pour convertir les données en intégres dans un seul appel de fonction.
- Chunking PDF: rationalisez les flux de travail des chiffons en divisant programmatiquement le contenu de document en segments plus petits et significatifs – une étape de prétraitement commune.
Ces fonctionnalités signalent que BigQuery DataFrames est en cours de construction en tant qu’outil de bout en bout pour l’analyse multimodale et l’IA avec Python. Alors que le développement se poursuit, vous pouvez vous attendre à voir plus d’outils traditionnellement trouvés dans des bibliothèques spécialisées distinctes directement intégrées dans bigframes.
Conclusion:
Les tables multimodales et les dataframes représentent un changement dans la façon dont les organisations peuvent aborder l’analyse des données. En créant un lien direct et sécurisé entre les données tabulaires et les fichiers non structurés dans GCS, BigQuery démantèle les silos de données qui ont longtemps compliqué l’analyse multimodale.
Ce guide démontre que si vous êtes un analyste de données écrivant SQL ou un scientifique des données utilisant Python, vous avez maintenant la possibilité d’analyser élégamment facilement des fichiers multimodaux arbitraires aux côtés de données relationnelles.
Pour commencer à créer vos propres solutions d’analyse multimodales, explorez les ressources suivantes:
- Documentation officielle: Lisez un aperçu de Comment analyser les données multimodales dans BigQuery
- Cahier python: Obtenez la main avec un BigQuery DataFrames Exemple Notebook
- Tutoriels étape par étape:
Auteur: Jeff Nelson, Google Cloud – Ingénieur des relations avec les développeurs
Source link
