Sign In
Free Sign Up
  • English
  • Español
  • 简体中文
  • Deutsch
  • 日本語
Sign In
Free Sign Up
  • English
  • Español
  • 简体中文
  • Deutsch
  • 日本語

Texteinbettungen mit SQL und MyScale vereinfachen

MyScale hat kürzlich die Funktion EmbedText (opens new window) eingeführt, ein leistungsstarkes Feature, das SQL-Abfragen mit Textvektorisierungsfunktionen integriert und Text in numerische Vektoren umwandelt. Diese Vektoren bilden semantische Ähnlichkeiten, die von Menschen wahrgenommen werden, effektiv in Nähebeziehungen innerhalb eines Vektorraums ab. Mit der vertrauten Syntax von SQL vereinfacht EmbedText den Vektorisierungsprozess, verbessert die Zugänglichkeit und ermöglicht es Benutzern, Textvektorisierung in MyScale effizient mit Anbietern wie OpenAI (opens new window), Jina AI (opens new window), Amazon Bedrock (opens new window) und anderen sowohl in Echtzeit- als auch in Stapelverarbeitungsszenarien durchzuführen. Darüber hinaus wird durch die Nutzung der automatischen Stapelverarbeitung die Verarbeitungsleistung großer Datenmengen erheblich verbessert. Diese Integration beseitigt die Notwendigkeit externer Tools oder komplexer Programmierung und vereinfacht den Vektorisierungsprozess innerhalb der MyScale-Datenbankumgebung.

# Einführung

Die Funktion EmbedText, definiert als EmbedText(text, provider, base_url, api_key, others), ist hoch konfigurierbar und für Echtzeitsuche sowie Stapelverarbeitung ausgelegt.

Hinweis:

Die detaillierten Parameter dieser Funktion finden Sie in unserer Dokumentation (opens new window).

Wie in der folgenden Tabelle beschrieben, unterstützt die Funktion EmbedText acht Anbieter, von denen jeder einzigartige Vorteile bietet:

Anbieter Unterstützt Anbieter Unterstützt
OpenAI Amazon Bedrock
HuggingFace Amazon SageMaker
Cohere Jina AI
Voyage AI Gemini

Zum Beispiel ist das Modell text-embedding-ada-002 von OpenAI (opens new window) für seine robuste Leistung bekannt. Es kann in MyScale mit dem folgenden SQL-Befehl verwendet werden:

SELECT EmbedText('IHR_TEXT', 'OpenAI', '', 'API_KEY', '{"model":"text-embedding-ada-002"}')

Das Modell jina-embeddings-v2-base-en von Jina AI (opens new window) unterstützt umfangreiche Sequenzlängen von bis zu 8k und bietet eine kostengünstige und kompakte Alternative für die Einbettungsdimension. So verwenden Sie dieses Modell:

SELECT EmbedText('IHR_TEXT', 'Jina', '', 'API_KEY', '{"model":"jina-embeddings-v2-base-en"}')

Hinweis:

Dieses Modell ist derzeit nur auf englischen Text beschränkt.

Amazon Bedrock Titan (opens new window) ist mit OpenAI-Modellen kompatibel und zeichnet sich durch seine Integration in AWS und seine Sicherheitsfunktionen aus. Es bietet eine umfassende Lösung für AWS-Benutzer, wie der folgende Code-Schnipsel zeigt:

SELECT EmbedText('IHR_TEXT', 'Bedrock', '', 'SECRET_ACCESS_KEY', '{"model":"amazon.titan-embed-text-v1", "region_name":"us-east-1", "access_key_id":"ACCESS_KEY_ID"}')

# Erstellung dedizierter Funktionen

Für eine einfache Verwendung können dedizierte Funktionen für jeden Anbieter erstellt werden. Zum Beispiel können Sie die folgende Funktion mit dem Modell text-embedding-ada-002 von OpenAI definieren:

CREATE FUNCTION OpenAIEmbedText ON CLUSTER '{cluster}'
AS (x) -> EmbedText(x, 'OpenAI', '', 'API_KEY', '{"model":"text-embedding-ada-002"}')

Anschließend kann die Funktion OpenAIEmbedText vereinfacht verwendet werden:

SELECT OpenAIEmbedText('IHR_TEXT')

Dieser Ansatz vereinfacht den Einbettungsprozess und reduziert die wiederholte Eingabe von gemeinsamen Parametern wie API-Schlüsseln.

Boost Your AI App Efficiency now
Sign up for free to benefit from 150+ QPS with 5,000,000 vectors
Free Trial
Explore our product

# Vektorverarbeitung mit EmbedText

EmbedText revolutioniert die Vektorverarbeitung in MyScale, insbesondere für die Vektorsuche und die Datenverarbeitung. Diese Funktion ist entscheidend, um sowohl Suchanfragen als auch Datenbankspalten in numerische Vektoren umzuwandeln, was ein wesentlicher Schritt für die Vektorsuche und die Datenverwaltung ist.

# Verbesserung der Vektorsuche

Bei der Vektorsimilarity-Suche, wie in unserem Leitfaden zur Vektorsuche (opens new window) detailliert beschrieben - und wie im folgenden Code-Schnipsel beschrieben - müssen Benutzer im herkömmlichen Ansatz die Abfragevektoren manuell in SQL eingeben.

SELECT id, distance(vector, [0.123, 0.234, ...]) AS dist
FROM test_embedding ORDER BY dist LIMIT 10

Wie im folgenden Code-Schnipsel dargestellt, vereinfacht EmbedText den Vektor-Suchprozess, macht ihn intuitiver, vereinfacht die Benutzererfahrung erheblich und konzentriert sich auf die Formulierung der Abfrage anstelle der Mechanik der Vektorerstellung.

SELECT id, distance(vector, OpenAIEmbedText('Die Textabfrage')) AS dist
FROM test_embedding ORDER BY dist LIMIT 10

# Vereinfachung von Stapeltransformationen

Basierend auf diesem Diagramm sehen wir, dass der typische Workflow für Stapeltransformationen eine Vorverarbeitung und Speicherung der Textdaten in einem strukturierten Format umfasst.

Einbettung

Angenommen, wir haben die folgende Tabelle chunk_data, die Rohdaten enthält.

CREATE TABLE chunk_data
(
    id    UInt32,
    chunk String,
) ENGINE = MergeTree ORDER BY id

INSERT INTO chunk_data VALUES (1, 'Chunk1'), (2, 'Chunk2'), ...

Wir können eine zweite Tabelle - die Tabelle test_embedding - erstellen, um Vektoreinbettungen auf folgende Weise zu speichern - unter Verwendung der Funktion EmbedText.

CREATE TABLE test_embedding
(
    id    UInt32,
    paragraph String,
    vector  Array(Float32) DEFAULT OpenAIEmbedText(paragraph),
    CONSTRAINT check_length CHECK length(vector) = 1536,
) ENGINE = MergeTree ORDER BY id

Das Einfügen von Daten in test_embedding wird dadurch vereinfacht.

INSERT INTO test_embedding (id, paragraph) SELECT id, chunk FROM chunk_data

Alternativ kann EmbedText explizit während des Einfügens angewendet werden.

INSERT INTO test_embedding (id, paragraph, vector) SELECT id, chunk, OpenAIEmbedText(chunk) FROM chunk_data

Wie oben hervorgehoben, enthält EmbedText eine automatische Stapelverarbeitungsfunktion, die die Effizienz bei der Verarbeitung mehrerer Texte erheblich verbessert. Diese Funktion verwaltet den Stapelverarbeitungsprozess intern, bevor sie die Daten an die Einbettungs-API sendet, und gewährleistet so einen effizienten und optimierten Datenverarbeitungsworkflow. Ein Beispiel für diese Effizienz wird mit dem Modell BAAI/bge-small-en (opens new window) auf einer NVIDIA A10G GPU demonstriert, das bis zu 1200 Anfragen pro Sekunde erreicht.

Join Our Newsletter

# Fazit

Die Funktion EmbedText von MyScale ist ein praktisches und effizientes Werkzeug zur Vektorisierung von Texten, das komplexe Prozesse vereinfacht und die erweiterte Vektorsuche und Datenverarbeitung demokratisiert. Unsere Vision ist es, diese Innovation nahtlos in den täglichen Datenbankbetrieb zu integrieren und eine breite Palette von Benutzern in der KI-/LLM-bezogenen Datenverarbeitung zu unterstützen.

Keep Reading

Start building your Al projects with MyScale today

Free Trial
Contact Us