Cortex AISQL Images

Mit Cortex AI Images können Sie Folgendes erreichen:

  • Bilder vergleichen

  • Bilder beschriften

  • Bilder klassifizieren

  • Entitäten aus Bildern extrahieren

  • Einbettungsvektoren zur Verwendung in Abrufsystemen generieren

  • Fragen mithilfe von Daten in Graphen und Diagrammen beantworten

Sie können diese Aufgaben mit den folgenden Funktionen erledigen:

Eingabeanforderungen

COMPLETE Multimodal kann Bilder mit den folgenden Merkmalen verarbeiten:

Anforderung

Wert

Dateinamen-Erweiterungen

.jpg, .jpeg, .png, .webp, .gif

Stagingbereich-Verschlüsselung

Serverseitige Verschlüsselung:

Datentyp

FILE

Bemerkung

Die Verarbeitung von Dateien aus Stagingbereichen ist derzeit nicht mit benutzerdefinierten Netzwerkrichtlinien kompatibel.

Einen Stagingbereich für die Bildverarbeitung erstellen

Erstellen Sie einen Stagingbereich, in dem die zu verarbeitenden Bilder gespeichert werden können. Der Stagingbereich muss über eine Verzeichnistabelle und eine serverseitige Verschlüsselung verfügen.

Das folgende SQL erstellt einen geeigneten internen Stagingbereich.

CREATE OR REPLACE STAGE input_stage
    DIRECTORY = ( ENABLE = true )
    ENCRYPTION = ( TYPE = 'SNOWFLAKE_SSE' );
Copy

Das folgende SQL erstellt einen externen Stagingbereich auf Amazon S3. Auch die externen Stagingbereiche von Azure und GCP werden unterstützt.

CREATE OR REPLACE STAGE input_stage
    URL='s3://<s3-path>/'
    DIRECTORY = ( ENABLE = true )
    CREDENTIALS = (AWS_KEY_ID = <aws_key_id>
    AWS_SECRET_KEY = <aws_secret_key>)
    ENCRYPTION = ( TYPE = 'AWS_SSE_S3' );
Copy

Bemerkung

Um die Verzeichnistabelle für den externen Stagingbereich automatisch zu aktualisieren, wenn neue oder aktualisierte Dateien verfügbar sind, übergeben Sie beim Erstellen des Stagingbereichs die Option AUTO_REFRESH = true. Weitere Informationen dazu finden Sie unter CREATE STAGE.

Bilder analysieren

Die Funktion COMPLETE verarbeitet entweder ein einzelnes Bild oder mehrere Bilder (z. B. zum Extrahieren von Unterschieden in Entitäten in verschiedenen Bildern). Der Funktionsaufruf gibt Folgendes an:

  • Das zu verwendende multimodale Modell

  • Eine Aufforderung

  • Den Pfad des Stagingbereichs der Bilddatei(en) über ein FILE-Objekt

Beispiel für Vision-Fragen und -Antworten

Das folgende Beispiel verwendet das Modell Claude Sonnet 3.5 von Anthropic, um ein Tortendiagramm science-employment-slide.jpeg zusammenzufassen, das im Stagingbereich @myimages gespeichert ist.

Kreisdiagramm zur Verteilung der Berufe, in denen Mathematik im Jahr 2023 als „extrem wichtig“ angesehen wird

Die Verteilung der Berufe, in denen Mathematik im Jahr 2023 als „extrem wichtig“ angesehen wird

SELECT AI_COMPLETE('claude-3-5-sonnet',
    'Summarize the insights from this pie chart in 100 words',
    TO_FILE('@myimages', 'science-employment-slide.jpeg'));
Copy

Antwort:

This pie chart shows the distribution of occupations where mathematics is considered "extremely important" in 2023.
Data scientists dominate with nearly half (48.7%) of all such positions, followed by operations research analysts
at 29.6%. The remaining positions are distributed among statisticians (7.8%), actuaries (7.2%), physicists (5.1%),
mathematicians (0.6%), and other mathematical science occupations (1.1%). This distribution highlights the growing
importance of data science in mathematics-intensive careers, while traditional mathematics roles represent a smaller
share of the workforce.

Beispiel für Vergleich von Bildern

Bemerkung

Derzeit können nur die Modelle Anthropic (claude) und Meta (llama) mehrere Bilder in einer einzigen Eingabeaufforderung referenzieren. Die Unterstützung mehrerer Bilder für andere Modelle wird möglicherweise in einer zukünftigen Release verfügbar sein.

Verwenden Sie die PROMPT-Hilfsfunktion, um mehrere Bilder in einem einzigen COMPLETE-Aufruf zu verarbeiten. Im folgenden Beispiel wird das Modell Claude Sonnet 3.5 von Anthropic verwendet, um zwei verschiedene Werbemittel aus dem Stagingbereich @myimages zu vergleichen.

Bilder von zwei Anzeigen für Elektroautos

Bild von zwei Anzeigen für Elektroautos

SELECT AI_COMPLETE('claude-3-5-sonnet',
    PROMPT('Compare this image {0} to this image {1} and describe the ideal audience for each in two concise bullets no longer than 10 words',
    TO_FILE('@myimages', 'adcreative_1.png'),
    TO_FILE('@myimages', 'adcreative_2.png')
));
Copy

Antwort:

First image ("Discover a New Energy"):
• Conservative luxury SUV buyers seeking a subtle transition to electrification

Second image ("Electrify Your Drive"):
• Young, tech-savvy urbanites attracted to bold, progressive automotive design

Beispiel zum Klassifizieren von Bildern

Im folgenden Beispiel wird AI_CLASSIFY verwendet, um ein Bild für eine Immobilienanwendung zu klassifizieren.

Bild eines bereitgestellten Wohnzimmers für Immobilien

Das folgende SQL verwendet die AI_CLASSIFY-Funktion, um das Bild als Foto eines Wohnbereichs, einer Küche, eines Badezimmers, eines Gartens oder eines Hauptschlafzimmers zu klassifizieren.

SELECT AI_CLASSIFY(TO_FILE('@my_images', 'REAL_ESTATE_STAGING.PNG'),
    ['Living Area', 'Kitchen', 'Bath', 'Garden', 'Master Bedroom']) AS room_classification;
Copy

Antwort:

{ "labels": [ "Living Area" ] }

Das SQL unten kategorisiert die im obigen Bild gefundenen Objekte als Sofa, Fenster, Tisch, Fernseher oder Kunstgegenstand.

SELECT AI_CLASSIFY (TO_FILE ('@my_images', 'REAL_ESTATE_STAGING.PNG'),
    ['Couch', 'Window', 'Table', 'Television', 'Art'],  {'output_mode': 'multi'} )
    AS living_room_objects;
Copy

Antwort:

{
  "labels": [
    "Art",
    "Couch",
    "Table",
    "Window"
  ]
}

Bilder durchsuchen

Sie können AI_EMBED verwenden, um Bilder zu finden, die einem Zielbild ähnlich sind. Verwenden Sie zuerst die Funktion AI_EMBED, um einen Einbettungsvektor für das Zielbild zu generieren, der dessen visuelle Features in einen abstrakten Vektorraum abbildet, eine numerische Darstellung der Features des Bildes. Sie können dann Vektorähnlichkeitsfunktionen verwenden, um diesen Einbettungsvektor mit den Einbettungsvektoren anderer Bilder zu vergleichen. So erhalten Sie einen Ähnlichkeitswert auf der Grundlage ihrer gemeinsamen oder ähnlichen visuellen Features. Diese Wert kann verwendet werden, um Bilder auf der Grundlage ihrer Ähnlichkeit mit dem Zielbild zu klassifizieren, einzuordnen oder zu filtern.

Bild von vielen Menschen in einer Stadt
Bild von vielen Menschen in einer Stadt

In obigen Bildern sehen Sie zum Beispiel, dass das folgende SQL einen Einbettungsvektor für jedes Bild generiert und die Vektoren dann mithilfe der Cosinus-Ähnlichkeit vergleicht. Das Ergebnis von etwa 0,5 gibt an, dass die Bilder etwas ähnlich sind. Beide Fotos wurden in einer städtischen Umgebung aufgenommen und enthalten eine Menge Menschen im Hintergrund, die Hauptobjekte unterscheiden sich aber.

WITH ai_image_embeddings as (
    SELECT
        AI_EMBED('voyage-multimodal-3',
            TO_FILE ('@my_images', 'CITY_WALKING1.PNG')) as image1_embeddings,
        AI_EMBED('voyage-multimodal-3',
            TO_FILE ('@my_images', 'CITY_WALKING2.PNG')) as image2_embeddings
)
SELECT VECTOR_COSINE_SIMILARITY(image1_embeddings,image2_embeddings) as similarity FROM ai_image_embeddings;
Copy
0.5359029029

Um Bilder zu finden, die einem Zielbild ähnlich sind, können Sie AI_SIMILARITY verwenden. Das folgende Beispiel berechnet einen Ähnlichkeitswert für ggf. Tausende von Bildern und gibt die Werbeanzeigen zurück, die der unten stehenden Motorradwerbung am ähnlichsten sind.

Bild einer Motorradwerbung für die Bildsuche
SELECT
    TO_FILE('@ad_images', relative_path) as ALL_ADS
    FROM DIRECTORY(@ad_images)
WHERE AI_SIMILARITY(TO_FILE('@ad_images', 'image_226.jpg'), ALL_ADS) >= 0.5;
Copy

Die Abfrage gibt Bilder aus einer multimodalen Tabelle zurück, bei denen der Ähnlichkeitswert größer als 0,50 ist. Eines der identifizierten Bilder (image_226.jpg) ist das, welches wir als Referenz verwendet haben.

+-----------------------------------------------------------+
| {} ALL_ADS                                                |
+-----------------------------------------------------------+
|  { "CONTENT_TYPE": "image/jpeg",                          |
|    "ETAG": "686897696a7c876b7e",                          |
|    "LAST_MODIFIED": "Wed, 26 Mar 2025 18:11:45 GMT",      |
|    "RELATIVE_PATH": "image_226.jpg",                      |
|    "SIZE": 39086,                                         |
|    "STAGE": "@ad_images" }                                |
+-----------------------------------------------------------+
|  { "CONTENT_TYPE": "image/jpeg",                          |
|    "ETAG": "e7b678c7a696798686",                          |
|    "LAST_MODIFIED": "Wed, 26 Mar 2025 18:11:57 GMT",      |
|    "RELATIVE_PATH": "image_441.jpg",                      |
|    "SIZE": 12650,                                         |
|    "STAGE": "@ad_images" },                               |
+-----------------------------------------------------------+

Modellbeschränkungen

Alle Modelle, die Snowflake Cortex zur Verfügung stehen, haben Beschränkungen für die Gesamtzahl der Eingabe- und Ausgabe-Token, bekannt als das Kontextfenster des Modells **. Die Größe des Kontextfensters wird in Token gemessen. Eingaben, die das Limit des Kontextfensters überschreiten, führen zu einem Fehler.

Bei Textmodellen entsprechen Token in der Regel etwa vier Zeichen Text, so dass die Wortanzahl, die einem Limit entspricht, geringer ist als die Anzahl der Token.

Bei Bildmodellen hängt die Anzahl der Token pro Bild von der Architektur des Bildmodells ab. Token innerhalb einer Eingabeaufforderung (z. B. „Welches Tier ist das?“) tragen ebenfalls zum Kontextfenster des Modells bei.

Modell

Kontextfenster (Token)

Dateitypen

Dateigröße

Bilder pro Aufforderung

openai-gpt-4.1

1,047,576

.jpg, .jpeg, .png, .webp, .gif

10MB

5

openai-o4-mini

1,047,576

.jpg, .jpeg, .png, .webp, .gif

10MB

5

claude-4-opus

200,000

.jpg, .jpeg, .png, .webp, .gif

3,75 MB [L1]

20

claude-4-sonnet

200,000

.jpg, .jpeg, .png, .webp, .gif

3,75 MB [L1]

20

claude-3-7-sonnet

200,000

.jpg, .jpeg, .png, .webp, .gif

3,75 MB [L1]

20

claude-3-5-sonnet

200,000

.jpg, .jpeg, .png, .webp, .gif

3,75 MB [L1]

20

llama4-maverick

128,000

.jpg, .jpeg, .png, .webp, .gif, .bmp

10 MB

10

llama-4-scout

128,000

.jpg, .jpeg, .png, .webp, .gif, .bmp

10 MB

10

pixtral-large

128,000

.jpg, .jpeg, .png, .webp, .gif, .bmp

10 MB

1

voyage-multimodal-3

32,768

.jpg, .png, .pg, .gif, .bmp

10 MB

1

[L1] (1,2,3,4)

Die Bilder müssen kleiner als 8.000 × 8.000 Pixel sein. Für jedes einzelne Bild gelten Beschränkungen.

Hinweise zu Kosten

Die Abrechnung richtet sich nach der Anzahl der verarbeiteten Token. Die Anzahl der Token pro Bild hängt von der Architektur des Bildmodells ab.

  • Die Formel für anthropische Modelle (claude) lautet in etwa: Token = (Breite in Pixel x Höhe in Pixel) / 750.

  • Die Mistral-Modelle (pixtral) teilen jedes Bild in Batches von 16x16 Pixeln auf und wandeln jeden Batch in ein Token um. Die Gesamtzahl der Token entspricht ungefähr (Breite in Pixel / 16) * (Höhe in Pixel / 16).

  • Meta (llama)-Modelle versuchen, das Bild mit quadratischen Kacheln zu kacheln. Je nach Seitenverhältnis und Größe des Bildes kann die Anzahl der Kacheln bis zu 16 betragen, die jeweils durch etwa 153 Token dargestellt werden.

  • Öffnen Sie AI-Modelle, skalieren das Bild neu und und kacheln Sie es mit quadratischen Feldern. Für openai-gpt-4.1 kann je nach Bildverhältnis und -größe die Anzahl der Token 211 (Bilder bis zu 512 × 512 Pixel), 352 (nicht quadratische Bilder mit einer längeren Seitenlänge als 1.024 Pixel) oder zwischen 630 Token (quadratische Bilder ab 1.024 × 1.024 Pixel) und 913 Token (nicht quadratische Bilder mit einer kürzeren Seitenlänge als 1.024 Pixel) betragen. Für openai-o4-mini ist die Neuskalierungslogik aufwändiger und die Anzahl der Token variiert von 86 (128 × 512 Pixel) bis 1.428 (2.048 × 1.024 Pixel); sie folgt keinem linearen Muster.

  • voyage-multimodal-3 arbeitet mit einem Array von Bildfeldern, die etwa 14 × 14 Pixel groß sind. Das Bild wird so neu skaliert, dass es durch ein Gitter abgedeckt wird, das mindestens 64 und höchstes 2.500 Felder enthält. Es werden zwei zusätzliche Bild-Token hinzugefügt, sodass die Eingabe zwischen 66 und 2.502 Token liegt, abhängig von Bildgröße und Seitenverhältnis.

Bemerkung

Die Funktion COUNT_TOKENS unterstützt derzeit keine Bildeingaben.

Auswahl eines Bildmodells

Die Funktion COMPLETE unterstützt mehrere Modelle mit unterschiedlicher Leistungsfähigkeit, Latenzzeit und Kosten. Um eine optimale Leistung pro Credit zu erzielen, wählen Sie ein Modell, das auf den Umfang des Inhalts und die Komplexität der Aufgabe abgestimmt ist.

Modell

MMMU

Mathvista

ChartQA

DocVQA

VQAv2

GPT-4o

68,6

64,6

85,1

88,9

77,8

openai-gpt-4.1

75,0

72,0

openai-o4-mini

81,6

84,3

claude-3-5-sonnet

68,0

64,4

87,6

90,3

70,7

llama-4-maverick

73,4

73,7

90

94,4

llama-4-scout

69,4

70,7

88,8

94,4

pixtral-large

64,0

69,4

88,1

85,7

67

Die Benchmarks sind:

  • MMMU: Bewertet multimodale Modelle bei multidisziplinären Aufgaben, die logisches Denken auf College-Niveau erfordern.

  • Mathvista: Benchmark für mathematisches Denken in einem visuellen Kontext.

  • ChartQA: Bewertet komplexe Argumentationsfragen zu Diagrammen.

  • DocVQA und VQv2: Benchmarks für die visuelle Beantwortung von Fragen zu Dokumenten.

Bei multimodalen Einbettungen ist nur das voyage-multimodal-3-Modell derzeit verfügbar. voyage-multimodal-3 ist ein hochmodernes multimodales Einbettungsmodell, das in der Lage ist, Text und Bilder einzubetten. Es kann wichtige visuelle Features aus Quellen wie Screenshots von PDFs, Folien, Tabellen und Abbildungen extrahieren, was den Bedarf an komplexen Workflows zum Parsen von Dokumenten reduziert. Gemäß internen Benchmarks von Voyage AI ist das Modell voyage-multimodal-3 leistungsstärker als konkurrierende Modelle wie z. B. OpenAI CLIP Large, Amazon Titan Multimodal und Cohere Multimodal v3.

Regionale Verfügbarkeit

Die Unterstützung für dieses Feature ist für Konten in den folgenden Snowflake-Regionen nativ verfügbar:

Modell
AWS US West 2
(Oregon)
AWS US East 1
(N. Virginia)
AWS Europe Central 1
(Frankfurt)

claude-3-5-sonnet

claude-3-7-sonnet [A1]

claude-4-sonnet [A1]

claude-4-opus [A1]

pixtral-large

llama4-maverick

llama4-scout

voyage-multimodal-3 [A1]

[A1] (1,2,3,4)

Das Modell ist nur über regionsübergreifende Inferenz verfügbar.

AI_COMPLETE ist in weiteren Regionen verfügbar über die regionenübergreifende Inferenz.

Fehlerbedingungen

Meldung

Erläuterung

Anfrage für externe Funktion SYSTEM$COMPLETE_WITH_IMAGE_INTERNAL mit Remotedienstfehler: 400 „Ungültiger Bildpfad“ fehlgeschlagen

Entweder die Dateierweiterung oder die Datei selbst wird von dem Modell nicht akzeptiert. Die Meldung kann auch bedeuten, dass der Dateipfad falsch ist, d. h. dass die Datei am angegebenen Speicherort nicht existiert. Bei Dateinamen wird zwischen Groß- und Kleinschreibung unterschieden.

Fehler in sicherem Objekt

Kann anzeigen, dass der Stagingbereich nicht existiert. Überprüfen Sie den Namen des Stagingbereichs und stellen Sie sicher, dass der Bereich existiert und zugänglich ist. Achten Sie darauf, das at (@)-Zeichen am Anfang des Pfads zum Stagingbereich zu verwenden, z. B. @myimages.

Anfrage für externe Funktion _COMPLETE_WITH_PROMPT mit Remotedienstfehler: 400 „“invalid request parameters: unsupported image format: image/**“ fehlgeschlagen

Nicht unterstütztes Bildformat, das an claude-3-5-sonnet übergeben wurde, d. h. ein anderes als .jpeg, .png, .webp oder .gif.

Anfrage für externe Funktion _COMPLETE_WITH_PROMPT mit Remotedienstfehler: 400 „invalid request parameters: Image data exceeds the limit of 5.00 MB“ fehlgeschlagen

Das an claude-3-5-sonnet übermittelte Bild überschreitet 5 MB.