Mit dem BigQuery AI and ML SDK for ABAP können Sie eine Vektorsuche in Ihren vektorisierten Unternehmensdaten in BigQuery mithilfe von Suchstrings in natürlicher Sprache durchführen und die Ergebnisse von Ihren ABAP-basierten Agenten oder Anwendungen zurückgeben.
Mit der BigQuery-Vektorsuche können Sie mit GoogleSQL eine semantische Suche mit Vektorindexen für ungefähre Ergebnisse durchführen.
Mit der Vektorsuche können Sie mithilfe von hochdimensionalen Vektoren oder Einbettungen semantisch ähnliche Datenpunkte in großen Datensätzen finden.
Sie können Ihre Vektor-Embeddings in BigQuery speichern, BigQuery als Vektordatenbank verwenden und mithilfe der BigQuery-Funktion VECTOR_SEARCH
eine Vektorähnlichkeitssuche darauf anwenden.
Hinweise
Bevor Sie das BigQuery AI & ML SDK for ABAP mit den Gemini-Modellen verwenden, müssen Sie oder Ihre Administratoren die folgenden Voraussetzungen erfüllen:
- die BigQuery API in Ihrem Google Cloud -Projekt aktiviert haben. Informationen zum Aktivieren von APIs Google Cloud finden Sie unter APIs aktivieren.
- Die Abrechnung ist für Ihr Google Cloud -Projekt aktiviert.
- Sie haben Ihre Vektoreinbettungen generiert und in einem Vektor-Dataset in BigQuery gespeichert. Wie Sie dies mit dem BigQuery AI & ML SDK for ABAP aus Ihren SAP-Anwendungen tun, erfahren Sie unter Embeddings generieren.
- Sie haben einen Vektorindex für Ihre Unternehmensdaten erstellt. Weitere Informationen finden Sie unter Vektorindex erstellen.
- Dem Dienstkonto, das im Clientschlüssel für die Authentifizierung konfiguriert ist, wurden die erforderlichen Berechtigungen gewährt.
- Sie haben das BigQuery AI & ML SDK for ABAP in Ihrer SAP-Umgebung installiert.
Preise
Das BigQuery AI and ML SDK for ABAP wird kostenlos angeboten. Sie sind jedoch für die Kosten für die CREATE VECTOR INDEX
-Anweisung und die VECTOR_SEARCH
-Funktion verantwortlich, für die die BigQuery-Computing-Preise gelten.
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.
Vektorsuche in BigQuery durchführen
In diesem Abschnitt wird beschrieben, wie Sie mit dem BigQuery AI & ML SDK für ABAP eine semantische Vektorsuche in Ihren in BigQuery gespeicherten Unternehmensdaten aus Ihrer ABAP-Anwendung ausführen.
Klasse für die BigQuery-Vektorsuche instanziieren
Wenn Sie eine Vektorsuche mit einem Suchstring ausführen möchten, müssen Sie die Klasse /GOOG/CL_BQ_VECTOR_SEARCH
instanziieren.
TRY.
DATA(lo_bq_vector_search) = NEW /goog/cl_bq_vector_search( 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.
Ähnliche Elemente für einen Suchstring finden
Wenn Sie Abfragen für die Vektorsuche mit der BigQuery-Funktion VECTOR_SEARCH
ausführen möchten, verwenden Sie die Methode FIND_NEAREST_NEIGHBORS
der Klasse /GOOG/CL_BQ_VECTOR_SEARCH
.
Das mit der Abfrage festgelegte Objekt der Klasse /GOOG/CL_BQ_QUERY
wird als Eingabe an die Methode übergeben.
lo_bq_vector_search->find_nearest_neighbors( io_query = lo_bq_query ).
LO_BQ_QUERY
ist die Referenz der Klasse /GOOG/CL_BQ_QUERY
nach dem Festlegen der Abfrage. Sie können den Suchstring aus dem Abfragetext übergeben.
Parameter für die Vektorsuche überschreiben
Sie können Parameter für die Vektorsuche (unter VECTOR_SEARCH
-Funktionsdefinitionen) 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 dazu die Methode SET_SEARCH_PARAMETERS
der Klasse /GOOG/CL_BQ_VECTOR_SEARCH
verwenden. Die Suchparameter in der ursprünglichen Abfrage werden dann vollständig durch die Parameter überschrieben, die über diese Methode übergeben werden.
lo_bq_vector_search->set_search_parameters( iv_top_k = TOP_K
iv_distance_type = DISTANCE_TYPE
iv_fraction_lists_to_search = 'FRACTION_LISTS_TO_SEARCH' ).
Ersetzen Sie Folgendes:
TOP_K
: EinINT64
-Wert, der die Anzahl der nächsten Nachbarn angibt, die zurückgegeben werden sollen.DISTANCE_TYPE
: Ein Stringwert, der den Messwerttyp angibt, der zum Berechnen der Entfernung zwischen zwei Vektoren verwendet werden soll. Mögliche Werte für das ArgumentDISTANCE_TYPE
finden Sie in den Definitionen für die FunktionVECTOR_SEARCH
.FRACTION_LISTS_TO_SEARCH
: Ein Stringwert, der den Prozentsatz der Listen angibt, in denen nach wahrscheinlichen Werten aus dem ArgumentFRACTION_LISTS_TO_SEARCH
gesucht werden soll. Sie finden ihn unter den Definitionsmöglichkeiten der FunktionVECTOR_SEARCH
.
Antwort der Vektorsuche abrufen
Wenn Sie verarbeitete Antworten von BigQuery ML für Vektorsuchanfragen erhalten und auf sinnvolle Weise präsentieren möchten, verwenden Sie die Klasse /GOOG/CL_BQ_SEARCH_RESPONSE
.
Die von der Klasse /GOOG/CL_BQ_SEARCH_RESPONSE
erfasste Antwort wird mit den Anfragen verkettet, die über die Methoden der Klasse /GOOG/CL_BQ_VECTOR_SEARCH
gestellt werden. Sie können also in einer einzigen Anweisung direkt auf die Antwort zugreifen, ohne Variablen zum Speichern der Zwischenergebnisse nutzen zu müssen.
Nächste Nachbarn für den Suchstring abrufen
Verwenden Sie die Methode GET_NEAREST_NEIGHBORS
, um die nächsten Nachbarn für den Suchstring abzurufen.
Die Anzahl der zurückgegebenen Nachbarn hängt vom Wert ab, der im Parameter TOP_K
der Funktion VECTOR_SEARCH
in der aufgerufenen Abfrage angegeben oder festgelegt wurde.
DATA(lt_search_response) = lo_bq_vector_search->find_nearest_neighbors( io_query = lo_bq_query
)->get_nearest_neighbors( ).
LT_SEARCH_RESPONSE
enthält auch den Abstand des Suchantwortelements vom Suchstring, um den Grad der Ähnlichkeit anzugeben.
Nächsten Nachbarn für den Suchstring abrufen
Verwenden Sie die Methode GET_NEAREST_NEIGHBOR
, um den nächsten Nachbarn für den Suchstring abzurufen.
Dabei wird unabhängig vom Wert, der im Parameter TOP_K
der Funktion VECTOR_SEARCH
in der aufgerufenen Abfrage angegeben oder festgelegt ist, nur der nächste Nachbar für den Suchstring abgerufen.
DATA(ls_search_response) = lo_bq_vector_search->find_nearest_neighbors( io_query = lo_bq_query
)->get_nearest_neighbor( ).
LS_SEARCH_RESPONSE
enthält auch die Entfernung der Suchantwort vom Suchstring, um den Grad der Ähnlichkeit anzugeben.