您可以使用 ABAP 版 BigQuery AI 和 ML SDK,透過自然語言搜尋字串,在 BigQuery 中對向量化企業資料執行向量搜尋,並從 ABAP 代理或應用程式中找回結果。
您可以使用 BigQuery 向量搜尋,透過 GoogleSQL 使用向量索引執行語意搜尋,以便取得近似結果。透過 Vector Search,您可以使用高維向量或嵌入項目,在大型資料集中找出語意相似的資料點。您可以將向量嵌入資料儲存在 BigQuery 中,將 BigQuery 做為向量資料庫,並使用 BigQuery 函式 VECTOR_SEARCH
對其套用向量相似度搜尋。
事前準備
在使用 BigQuery AI and ML SDK for ABAP 搭配 Gemini 模型之前,請確認您或管理員已完成下列必要條件:
- 在 Google Cloud 專案中啟用 BigQuery API。如要瞭解如何啟用 Google Cloud API,請參閱「啟用 API」。
- Google Cloud 專案已啟用帳單功能。
- 您已產生向量嵌入並儲存在 BigQuery 的向量資料集中。如要瞭解如何使用 ABAP 適用的 BigQuery AI 和 ML SDK 從 SAP 應用程式中執行這項操作,請參閱「產生嵌入資料」。
- 您已為企業資料建立向量索引。詳情請參閱「建立向量索引」。
- 將必要權限授予用於驗證的用戶端金鑰中設定的服務帳戶。
- 在 SAP 環境中安裝 ABAP 適用的 BigQuery AI 和 ML SDK。
定價
我們提供免費的 ABAP 適用 BigQuery AI 和 ML SDK。不過,您必須負責支付 CREATE VECTOR INDEX
陳述式和 VECTOR_SEARCH
函式 (使用 BigQuery 運算定價) 的費用。
如要根據預測用量產生預估費用,請使用Pricing Calculator。
如要進一步瞭解 BigQuery 的定價,請參閱 BigQuery 定價頁面。
在 BigQuery 執行向量搜尋
本節說明如何使用 ABAP 專用的 BigQuery AI 和 ML SDK,針對儲存在 BigQuery 中的企業資料,從 ABAP 應用程式執行向量語意搜尋。
將 BigQuery 向量搜尋叫用器類別例項化
如要使用搜尋字串執行向量搜尋,您必須將 /GOOG/CL_BQ_VECTOR_SEARCH
類別例項化。
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.
將 CLIENT_KEY
替換為您在驗證設定期間為驗證設定的用戶端金鑰。 Google Cloud
尋找搜尋字串的類似項目
如要執行查詢,以 BigQuery 函式 VECTOR_SEARCH
執行向量搜尋,請使用 /GOOG/CL_BQ_VECTOR_SEARCH
類別的 FIND_NEAREST_NEIGHBORS
方法。
系統會將使用查詢設定的 /GOOG/CL_BQ_QUERY
類別物件,做為方法的輸入內容傳遞。
lo_bq_vector_search->find_nearest_neighbors( io_query = lo_bq_query ).
LO_BQ_QUERY
是設定查詢後的 /GOOG/CL_BQ_QUERY
類別參照。您可以從查詢文字傳遞搜尋字串。
覆寫向量搜尋參數
您可以在 BigQuery 的已儲存查詢或傳遞的查詢文字中,定義向量搜尋參數 (位於 VECTOR_SEARCH
函式定義下方)。不過,如果您需要覆寫 ABAP 應用程式邏輯中相同查詢的參數,可以使用 /GOOG/CL_BQ_VECTOR_SEARCH
類別的 SET_SEARCH_PARAMETERS
方法來覆寫。初始查詢中的搜尋參數會完全覆寫透過此方法傳遞的參數。
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' ).
更改下列內容:
TOP_K
:指定要傳回的最近鄰點數量的INT64
值。DISTANCE_TYPE
:字串值,可指定用於計算兩個向量之間距離的度量類型,請在VECTOR_SEARCH
函式的定義下,從DISTANCE_TYPE
引數中尋找可能的值。FRACTION_LISTS_TO_SEARCH
:字串值,用於指定要搜尋的清單百分比,並在VECTOR_SEARCH
函式定義的選項下,從FRACTION_LISTS_TO_SEARCH
引數中尋找可能的值。
取得向量搜尋回應
如要接收 BigQuery ML 針對向量搜尋查詢所處理的回應,並以有意義的方式呈現,請使用 /GOOG/CL_BQ_SEARCH_RESPONSE
類別。
/GOOG/CL_BQ_SEARCH_RESPONSE
類別擷取的回應會鏈結至透過 /GOOG/CL_BQ_VECTOR_SEARCH
類別方法提出的要求,因此您可以在單一陳述式中直接存取回應,而不需要變數來儲存中間結果。
取得搜尋字串的最近鄰
如要取得搜尋字串的最近鄰近字串,請使用 GET_NEAREST_NEIGHBORS
方法。傳回的鄰近項目數量取決於在叫用查詢中 VECTOR_SEARCH
函式的 TOP_K
參數中指定或設定的值。
DATA(lt_search_response) = lo_bq_vector_search->find_nearest_neighbors( io_query = lo_bq_query
)->get_nearest_neighbors( ).
LT_SEARCH_RESPONSE
也包含搜尋回應項目與搜尋字串的距離,用來表示相似程度。
取得搜尋字串的最近鄰
如要取得搜尋字串的最近鄰,請使用 GET_NEAREST_NEIGHBOR
方法。有了這個功能,系統只會根據搜尋字串擷取最相近的項目,不論在叫用查詢的 VECTOR_SEARCH
函式 TOP_K
參數中指定或設定的值為何。
DATA(ls_search_response) = lo_bq_vector_search->find_nearest_neighbors( io_query = lo_bq_query
)->get_nearest_neighbor( ).
LS_SEARCH_RESPONSE
也會包含搜尋回應與搜尋字串的距離,用來表示相似程度。