Mit dem BigQuery AI and ML SDK for ABAP können Sie in BigQuery embeddings für Ihre Unternehmensdaten generieren und verwalten.
BigQuery kann als kostengünstige Vektordatenbank dienen, da Sie mithilfe der Vektorsuchfunktionen Vektordarstellungen von Daten direkt im Data Warehouse speichern und abfragen können. Dadurch wird möglicherweise die Notwendigkeit einer separaten Vektordatenbankinfrastruktur reduziert.
Mit der BigQuery-Funktion ML.GENERATE_EMBEDDING
können Sie Einbettungen für Ihre in BigQuery-Datasets gespeicherten Unternehmensdaten generieren.
Wenn Sie auf Einbettungsmodelle in Vertex AI zugreifen möchten, erstellen Sie in BigQuery ML ein Remote-Modell, das den Endpunkt des Vertex AI-Modells darstellt. Nachdem Sie ein Remote-Modell für das Vertex AI-Modell erstellt haben, das Sie verwenden möchten, können Sie die Funktionalität dieses Modells nutzen. Dazu führen Sie die BigQuery ML-Funktion für das Remote-Modell aus.
Mit dem BigQuery AI & ML SDK for ABAP können Sie Einbettungsmodelle für Folgendes verwenden:
- Einbettungen für Textdaten generieren und speichern
- Einbettungen für multimodale Daten generieren und speichern
- BigQuery-Vektordatenbank mit den neuesten Unternehmensdaten auf dem neuesten Stand halten
Hinweise
Bevor Sie das BigQuery AI & ML SDK for ABAP mit den Einbettungsmodellen verwenden, müssen Sie oder Ihre Administratoren die folgenden Voraussetzungen erfüllen:
- Sie haben die BigQuery API, die BigQuery Connection API und die Vertex AI API in Ihrem Projekt aktiviert. Google Cloud Informationen zum Aktivieren von APIs Google Cloud finden Sie unter APIs aktivieren.
- Die Abrechnung für Ihr Google Cloud -Projekt muss aktiviert sein.
- Das im Clientschlüssel für die Authentifizierung konfigurierte Dienstkonto muss die erforderlichen Berechtigungen haben.
- Sie haben das BigQuery AI & ML SDK for ABAP in Ihrer SAP-Umgebung installiert.
- Es wurde ein Remote-Modell für die unterstützten Einbettungsmodelle erstellt.
Preise
Das BigQuery AI and ML SDK for ABAP wird kostenlos angeboten. Sie sind jedoch für die Kosten auf den BigQuery- und Vertex AI-Plattformen verantwortlich:
- BigQuery ML: Für die Daten, die Sie in BigQuery verarbeiten, fallen Kosten an.
- Vertex AI: Es fallen Kosten für Aufrufe an den Vertex AI-Dienst an, der durch das Remote-Modell dargestellt wird.
Mit dem Preisrechner können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung vornehmen.
Weitere Informationen zu den Preisen von BigQuery finden Sie auf der Seite BigQuery-Preise.
Weitere Informationen zu den Preisen für Vertex AI finden Sie auf der Seite Vertex AI-Preise.
Einbettungen in BigQuery generieren
In diesem Abschnitt wird erläutert, wie Sie mit dem BigQuery AI & ML SDK für ABAP embeddings für die in BigQuery gespeicherten Unternehmensdaten aus Ihrer ABAP-Anwendungslogik generieren.
Instanziieren Sie die BigQuery-Klasse für die Aufrufe von Einbettungen.
Wenn Sie die Texteinbettungen und multimodalen Modelle in BigQuery-Datasets aufrufen möchten, müssen Sie die Klasse /GOOG/CL_BQ_GENERATIVE_MODEL
instanziieren.
TRY.
DATA(lo_bqml_embeddings_model) = NEW /goog/cl_bq_embeddings_model( iv_key = 'CLIENT_KEY' ).
CATCH /goog/cx_sdk INTO DATA(lo_cx_sdk).
cl_demo_output=>display( lo_cx_sdk->get_text( ) ).
ENDTRY.
Ersetzen Sie CLIENT_KEY
durch den Clientschlüssel, den Sie während der Einrichtung der Authentifizierung für die Authentifizierung bei Google Cloud konfiguriert haben.
Einbettungen generieren
Wenn Sie Abfragen ausführen möchten, um mit der BigQuery-Funktion ML.GENERATE_EMBEDDING
Einbettungen für Text und multimodale Daten zu generieren, verwenden Sie die Methode GENERATE_EMBEDDINGS
der Klasse /GOOG/CL_BQ_EMBEDDINGS_MODEL
.
Das mit der Abfrage festgelegte Objekt der Klasse /GOOG/CL_BQ_QUERY
wird als Eingabe an die Methode übergeben.
lo_bqml_embeddings_model->generate_embeddings( io_query = lo_bq_query ).
LO_BQ_QUERY
ist die Referenz der Klasse /GOOG/CL_BQ_QUERY
nach dem Festlegen der Abfrage.
Parameter für die Modellgenerierung überschreiben
Sie können Generierungsparameter für das Einbettungsmodell in der gespeicherten Abfrage in BigQuery oder im übergebenen Abfragetext definieren.
Wenn Sie die Parameter für dieselbe Abfrage jedoch über die ABAP-Anwendungslogik überschreiben möchten, können Sie die Methode SET_GENERATION_CONFIG
der Klasse /GOOG/CL_BQ_EMBEDDINGS_MODEL
verwenden.
Die Generierungsparameter in der ursprünglichen Abfrage werden durch die Parameter überschrieben, die über diese Methode übergeben werden.
lo_bqml_embeddings_model->set_generation_config( iv_flatten_json_output = 'IS_FLATTEN_JSON_OUTPUT'
iv_task_type = 'TASK_TYPE'
iv_output_dimensionality = 'OUTPUT_DIMENSIONALITY' ).
Ersetzen Sie Folgendes:
IS_FLATTEN_JSON_OUTPUT
: Ein boolescher Wert, der bestimmt, ob der von der Funktion zurückgegebene JSON-Inhalt in separate Spalten geparst wird.TASK_TYPE
: Der Wert, der die beabsichtigte nachgelagerte Anwendung angibt, um dem Modell zu helfen, Einbettungen mit höherer Qualität zu erstellen. Suchen Sie unter Eingabesyntax nach wahrscheinlichen Werten für dastask_type
-Argument fürML.GENERATE_EMBEDDING
.OUTPUT_DIMENSIONALITY
: Der Wert, der die Anzahl der Dimensionen angibt, die beim Generieren von Einbettungen verwendet werden sollen. Suchen Sie unter Eingabesyntax nach wahrscheinlichen Werten für dasoutput_dimensionality
-Argument fürML.GENERATE_EMBEDDING
.
Abfrageergebnisse von Abfragen zum Generieren von Einbettungen abrufen
Um verarbeitete Antworten von BigQuery ML zum Generieren von Einbettungen und zur sinnvollen Darstellung zu erhalten, verwendet das SDK verkettete Methoden in der Klasse /GOOG/CL_BQ_GENERATIVE_MODEL
. So können Sie direkt in einer einzigen Anweisung auf die Antwort zugreifen, ohne Variablen zum Speichern der Zwischenergebnisse nutzen zu müssen.
Texteinbettungsvektoren abrufen
Verwenden Sie die Methode GET_TEXT_EMBEDDING_VECTORS
, um die Text-Embedding-Vektoren für jede Zeile in Ihrer ABAP-Anwendungslogik abzurufen.
DATA(lt_embeddings) = lo_bqml_embeddings_model->generate_embeddings( io_query = lo_bq_query
)->get_text_embedding_vectors( ).
Status von Texteinbettungen abrufen
Verwenden Sie die Methode GET_TEXT_EMBEDDING_STATUS
, um den Status der Text-Embedding-Generierung für jede Zeile abzurufen.
Wenn der Vorgang erfolgreich war, ist der Status leer.
DATA(lt_embeddings_status) = lo_bqml_embeddings_model->generate_embeddings( io_query = lo_bq_query
)->get_text_embedding_status( ).
Abfragejobstatus abrufen
Jede Abfrage in BigQuery wird als Abfragejob ausgeführt.
Verwenden Sie die Methode GET_QUERY_JOB_STATUS
, um den Status des Jobs für die Einbettungsabfrage abzurufen.
lo_bqml_embeddings_model->generate_embeddings( io_query = lo_bq_query
)->get_query_job_status(
IMPORTING ev_job_complete = DATA(lv_job_complete)
ev_job_creation_reason = DATA(lv_job_creation_reason)
ev_job_id = DATA(lv_job_id)
ev_query_id = DATA(lv_query_id)
ev_total_bytes_processed = DATA(lv_total_bytes_processed)
ev_total_rows = DATA(lv_total_rows) ).
Die Methode gibt die folgenden Jobstatusmesswerte zurück:
- Gibt an, ob die Abfrage abgeschlossen wurde oder nicht.
- Der Grund, warum ein Job erstellt wurde.
- Verweis auf den Job, der zum Ausführen der Abfrage erstellt wurde.
- Automatisch generierte ID für die Abfrage.
- Die Gesamtzahl der für diese Abfrage verarbeiteten Byte.
- Die Gesamtzahl der Zeilen im vollständigen Abfrageergebnissatz.
Abfragejobfehler abrufen
Verwenden Sie die Methode GET_QUERY_JOB_ERRORS
, um die Fehler des Abfragejobs abzurufen (falls vorhanden).
DATA(lt_query_job_errors) = lo_bqml_embeddings_model->execute_query( io_query = lo_bq_query
)->get_query_job_errors( ).
Gesamtantwort für Texteinbettungen abrufen
Wenn Sie eine Gesamtantworttabelle für die von Ihnen ausgeführte Abfrage für Texteinbettungen abrufen möchten, verwenden Sie die Methode GET_TEXT_EMBEDDING_RESPONSE
.
Eine Antwort wird nur dann ausgefüllt, wenn der Parameter für die Modellgenerierung FLATTEN_JSON_OUTPUT
in der Abfrage auf TRUE
gesetzt ist.
DATA(lt_text_embeddings_response) = lo_bqml_embeddings_model->execute_query( io_query = lo_bq_query
)->get_text_embedding_response( ).