本文說明參考架構,說明如何使用 ABAP 適用的 Vertex AI SDK,透過 Vertex AI Vector Search 建構智慧 SAP 應用程式。有了向量搜尋,您就能建構出超越關鍵字比對的 SAP 應用程式,利用語意理解功能協助使用者從企業資料中精準找到所需內容。您也可以搭配使用 Vector Search 和檢索增強生成 (RAG),在 SAP 環境中建構強大的 AI 應用程式。RAG 會從企業資料提供相關脈絡,確保 AI 模型能根據企業資料提供回覆,進而提升 AI 模型回覆的品質。
本文件的目標對象包括 ABAP 開發人員、SAP 解決方案架構師和雲端架構師。本文假設您熟悉 Vector Search 術語。
架構
下圖顯示在 SAP 應用程式環境中使用向量搜尋的參考架構:
這個參考架構包含下列元件:
# | 元件 | 詳細資料 |
---|---|---|
1 | SAP 中的查詢起點 | 使用下列任一選項開始搜尋:
|
2 | ABAP 適用的 Vertex AI SDK | SDK 的向量搜尋叫用者模組會根據您的搜尋查詢執行向量搜尋。 |
3 | Vertex AI Vector Search | 企業資料會以向量嵌入項目建立索引,並在已部署的索引中進行分類。 輸入搜尋查詢後,系統會針對這個已建立索引的資料執行向量搜尋,找出最相符的項目。 這些最相符的項目會傳回至 SAP 應用程式,啟用語意搜尋和 RAG 等功能。 |
使用的產品
此參考架構使用以下 Google Cloud 產品:
- 適用於 ABAP 的 Vertex AI SDK:提供模組和工具集,讓您以 ABAP 原生建構以 AI 為主的應用程式。
- Vertex AI Vector Search:使用向量嵌入功能,可在企業資料中進行大規模且有效率的搜尋。也就是說,您可以依據意義和情境搜尋,而非只搜尋關鍵字。
應用實例
以下清單列出 SAP 應用程式中 Vector Search 的用途:
- 建構推薦引擎:分析使用者輸入內容和行為,針對 SAP 業務 (例如產品、公司代碼和總帳帳戶) 推薦相關項目,而非僅比對關鍵字。
- 建構 RAG 管道:存取及整合來自不同來源的資訊,藉由納入相關的 SAP 和非 SAP 資訊來豐富 AI 模型的內容,進而產生準確且相關的模型回覆。
- 執行語意圖像搜尋:啟用搜尋外觀相似圖片的功能,這對購物、視覺探索和醫療影像分析很有幫助。
- 執行語意文字搜尋:瞭解文字的含義和背景,以改善法律、學術和客戶意見回饋分析中的搜尋準確度。
- 執行自然語言搜尋:為使用者問題提供即時解答,並強化常見問題、知識庫和教育工具。
- 執行異常偵測:在金融、網路安全和製造業中,找出不尋常的模式和潛在威脅。
設計須知
本節提供指引,協助您使用這個參考架構開發架構,以滿足您在安全性、隱私權、法規遵循、成本和效能方面的特定需求。
安全性、隱私權和法規遵循
安全性和法規遵循是共同的責任。詳情請參閱「Vertex AI 共享責任」。
如要瞭解 Google Cloud對資料隱私權的承諾,請參閱隱私權資源中心。
成本最佳化
為降低成本,建議您為索引選擇較小的分片大小和較低維度的嵌入資料,這樣就能使用較小的運算機器來部署索引。
Vertex AI 是 Google Cloud的付費服務。如需定價資訊,請參閱「Vertex AI 定價」和「Vector Search 定價」。如要根據預測用量產生預估費用,請使用 Pricing Calculator。
效能最佳化
為縮短查詢大型資料集的延遲時間,建議您在建立索引時選擇較大的分割區大小,並在部署索引時選擇高效能運算機器。如要進一步瞭解索引的分割區大小,請參閱「索引大小」。
如要提升搜尋回應的關聯性,請以更高維度產生企業資料的嵌入資料。計算機器和較高的嵌入維度成本高昂。如要根據預測用量產生預估費用,請使用 Pricing Calculator。
事前準備
在 SAP 應用程式環境中使用向量搜尋功能前,請確認您或管理員已完成下列事項:
- 安裝最新版的 Google Cloud 適用的 ABAP SDK 內部部署或任何雲端版本。
- 在 Google Cloud 專案中啟用 Vertex AI API。
- 設定驗證,以便存取 Vertex AI API。
- 設定向量搜尋參數。
建立及管理向量索引
如要使用向量搜尋,您必須為企業資料建立索引,並以向量嵌入的形式部署。如要達成這一點,請按照下列步驟操作:
- 在 Vertex AI 或任何其他平台中,使用文字或多模態嵌入 AI 模型產生向量嵌入。
- 將嵌入資料上傳至 Cloud Storage 值區。
- 使用包含嵌入資料的 Cloud Storage 值區建立向量索引。
- 建立索引端點,並將向量索引部署至端點,即可針對已編入索引的企業資料執行語意搜尋。
您可以透過 Google Cloud 控制台執行上述步驟,也可以使用 Vertex AI SDK for ABAP 從 SAP 環境觸發這些步驟。
如要為企業 AI 解決方案取得最準確的向量搜尋結果,您也必須持續更新索引,以便使用最新的企業資料。詳情請參閱「更新及重建向量索引」。
透過 SAP 應用程式叫用向量搜尋
您可以透過 SAP 應用程式,使用 ABAP 適用的 Vertex AI SDK,以以下方式對已編入索引的企業資料執行語意搜尋:
- 使用文字提示進行搜尋:使用搜尋字串,對文字和多模態資料執行語意搜尋。
- 使用多模態提示進行搜尋:使用多模態輸入內容 (例如圖片或影片),對多模態資料執行語意搜尋。
- 使用企業實體 ID 進行搜尋:使用企業專屬 ID (例如產品 ID、訂單 ID 或客戶 ID) 對企業資料執行語意搜尋。
您可以使用向量搜尋的結果,透過 RAG 強化 AI 模型的情境,以便納入企業情境。這樣一來,模型回應就能以您的企業資料為依據。您也可以將這些結果做為業務流程的輸入內容,或用於產生最佳化建議。
使用文字提示進行語意搜尋
如要使用文字提示搜尋已編入索引的文字和多模態資料,您可以使用 ABAP 適用的 Vertex AI SDK /GOOG/CL_VECTOR_SEARCH
類別的 FIND_NEIGHBORS_BY_STRING
方法。您可以將 GET_NEAREST_NEIGHBORS
方法呼叫與 FIND_NEIGHBORS_BY_STRING
方法呼叫連結,以便取得搜尋回應。
以下程式碼範例說明如何使用文字提示執行語意搜尋:
TRY.
DATA(lo_vector_search) = NEW /goog/cl_vector_search( iv_search_key = 'SEARCH_KEY' ).
DATA(lt_vector_search_response) = lo_vector_search->find_neighbors_by_string(
iv_search_string = 'SEARCH_STRING'
iv_embeddings_model_key = 'MODEL_KEY'
iv_neighbor_count = NEIGHBOR_COUNT
)->get_nearest_neighbors( ).
cl_demo_output=>display( lt_vector_search_response ).
CATCH /goog/cx_sdk INTO DATA(lo_cx_sdk).
cl_demo_output=>display( 'Search not successful.' && lo_cx_sdk->get_text( ) ).
ENDTRY.
更改下列內容:
SEARCH_KEY
:在 Vector Search 參數中設定的搜尋鍵。SEARCH_STRING
:輸入文字提示。MODEL_KEY
:在模型生成參數中設定的模型鍵。這個模型可將搜尋查詢轉換為嵌入資料。NEIGHBOR_COUNT
:搜尋查詢要擷取的最近鄰點數量。
如要查看以文字為基礎的搜尋,針對企業文字和多模態資料的範例,請參閱 GitHub 程式碼範例,瞭解如何使用文字提示在文字資料集上進行語意搜尋,以及使用文字提示在圖像上進行語意搜尋。
使用多模態提示進行語意搜尋
當您想從多模態資料 (可為圖片或影片) 中找出最相符的項目時,這類搜尋就很實用。舉例來說,如果您有 SAP 網頁應用程式 (Fiori
或 UI5
),並想拍攝服飾、產品或設備零件的相片,然後找出與相片最相符的項目,可以選擇這個搜尋選項。
如要使用多模態提示搜尋已建立索引的多模態資料,您可以使用 ABAP 適用的 Vertex AI SDK /GOOG/CL_VECTOR_SEARCH
類別的 FIND_NEIGHBORS_BY_EMBEDDING
方法。您可以將 GET_NEAREST_NEIGHBORS
方法呼叫與 FIND_NEIGHBORS_BY_EMBEDDING
方法呼叫連結,以便取得搜尋回應。
以下程式碼範例說明如何使用圖片執行語意搜尋:
DATA lv_search_string TYPE string,
DATA ls_image TYPE /goog/cl_embeddings_model=>ty_image.
TRY.
DATA(lo_vector_search) = NEW /goog/cl_vector_search( iv_search_key = 'SEARCH_KEY' ).
DATA(lo_embeddings_model) = NEW /goog/cl_embeddings_model( iv_model_key = 'MODEL_KEY' ).
ls_image-bytes_base64_encoded = 'RAW_DATA'.
DATA(lt_embeddings) = lo_embeddings_model->gen_image_embeddings( iv_image = ls_image
iv_dimension = 'DIMENSION'
)->get_vector( ).
DATA(lt_vector_search_response) = lo_vector_search->find_neighbors_by_embedding(
iv_neighbor_count = NEIGHBOR_COUNT
it_embeddings = lt_embeddings
)->get_nearest_neighbors( ).
cl_demo_output=>display( lt_vector_search_response ).
CATCH /goog/cx_sdk INTO DATA(lo_cx_sdk).
cl_demo_output=>display( 'Search not successful.' && lo_cx_sdk->get_text( ) ).
ENDTRY.
更改下列內容:
SEARCH_KEY
:在 Vector Search 參數中設定的搜尋鍵。MODEL_KEY
:在模型產生參數中設定的模型鍵。這個模型可將搜尋查詢轉換為嵌入資料。RAW_DATA
:圖片、PDF 或影片的 Base64 編碼原始資料,用於在查詢中內嵌。DIMENSION
:輸出嵌入值的維度數量。NEIGHBOR_COUNT
:搜尋查詢要擷取的最近鄰點數量。
如要查看以圖像為基礎的搜尋功能在企業資料範例中的應用,請參閱 GitHub 程式碼範例。
使用企業實體 ID 進行語意搜尋
這類搜尋可用於 SAP 用途,例如針對特定實體 ID 搜尋類似的企業實體,例如在特定產品缺貨時,找出或推薦類似產品。實體 ID 對應至向量索引中儲存的資料點。
如要使用企業實體 ID 搜尋向量索引,您可以使用 ABAP 版 Vertex AI SDK 的 /GOOG/CL_VECTOR_SEARCH
類別的 FIND_NEIGHBORS_BY_ENTITY_ID
方法。您可以將 GET_NEAREST_NEIGHBORS
方法呼叫與 FIND_NEIGHBORS_BY_ENTITY_ID
方法呼叫連結,以便取得搜尋回應。
以下程式碼範例說明如何使用企業實體 ID 執行語意搜尋:
Below is a code snippet that can be taken as reference for an entity id search.
TRY.
DATA(lo_vector_search) = NEW /goog/cl_vector_search( iv_search_key = 'SEARCH_KEY' ).
DATA(lt_vector_search_response) = lo_vector_search->find_neighbors_by_entity_id(
iv_entity_id = 'ENTITY_ID'
)->get_nearest_neighbors( ).
cl_demo_output=>display( lt_vector_search_response ).
CATCH /goog/cx_sdk INTO DATA(lo_cx_sdk).
cl_demo_output=>display( 'Search not successful.' && lo_cx_sdk->get_text( ) ).
ENDTRY.
更改下列內容:
SEARCH_KEY
:在 Vector Search 參數中設定的搜尋鍵。ENTITY_ID
:要搜尋的實體 ID。
如要查看使用實體 ID 搜尋企業資料的範例,請參閱 GitHub 程式碼範例。
運用 RAG 進行向量搜尋,為 AI 模型提供額外情境資訊
Vector Search 會根據您的搜尋查詢,傳回最相關的企業資料做為回應。您可以使用 RAG,為 AI 模型提供額外情境資訊,藉此提供 Vector Search 的搜尋回應。RAG 會從擷取的企業資料提供相關背景資訊,提升 AI 模型回應品質,確保模型回應與企業資料保持一致。
如要透過 Vector Search 搭配 RAG 為 AI 模型提供其他情境資訊,請執行下列步驟:
- 準備搜尋查詢,以便取得企業內容。
- 針對含有企業資料的索引執行 Vector Search。
- 根據有效提示的最佳做法,將搜尋回應串連或擴充為最終提示。
如要讓 AI 模型針對以 RAG 為基礎的架構提供最相關的回覆,請持續更新索引,加入最新企業資料的嵌入資料。詳情請參閱「更新及重建向量索引」。
如要嘗試使用範例資料集的企業用途,請試試 GitHub 上的由 SAP 嵌入內容提供動力的向量搜尋範例解決方案。這個範例解決方案展示 ABAP 中的產品推薦引擎,並提供必要設定和實作詳細資料的相關指引。您可以使用範例程式碼和參考資料,做為其他推薦系統的基礎,直接從 SAP 應用程式執行語意搜尋。
後續步驟
- 如要判斷每個搜尋結果與查詢的關聯程度,請參閱「取得擷取相鄰項目的距離」一文。
- 如要瞭解如何搭配使用 Vector Search 與 ABAP 適用的 Vertex AI SDK,請參閱「使用 Vertex AI Vector Search」。
如需協助解決 ABAP SDK for Google Cloud 的問題,請按照下列步驟操作:
- 請參閱 ABAP SDK for Google Cloud 疑難排解指南。
- 在 Cloud 論壇上向社群提問,並討論 ABAP 適用的 Google Cloud SDK。
- 收集所有可用的診斷資訊,然後聯絡 Cloud 客戶服務團隊。如要瞭解如何與 Customer Care 聯絡,請參閱「取得 SAP 支援 Google Cloud」一文。
貢獻者
作者:Devesh Singh | SAP 應用程式工程師
其他協作者: Vikash Kumar | 技術撰稿人