本文档介绍了使用 Vertex AI SDK for ABAP 通过 Vertex AI Vector Search 构建智能 SAP 应用的参考架构。借助向量搜索,您可以构建超越关键字匹配的 SAP 应用,利用语义理解帮助用户从企业数据中精确找到所需内容。您还可以将向量搜索与检索增强生成 (RAG) 结合使用,在 SAP 环境中构建强大的 AI 应用。RAG 通过提供企业数据中的相关上下文来提高 AI 模型回答的质量,确保 AI 模型始终以企业数据为依据。
本文档的目标受众群体包括 ABAP 开发者、SAP 解决方案架构师和云架构师。本文档假定您熟悉矢量搜索术语。
架构
下图展示了在 SAP 应用环境中使用矢量搜索的参考架构:
此参考架构包括以下组件:
# | 组件 | 详细信息 |
---|---|---|
1 | SAP 中的查询起点 | 使用以下任一选项开始搜索:
|
2 | Vertex AI SDK for ABAP | SDK 的 Vector Search Invoker 模块会根据您的搜索查询执行向量搜索。 |
3 | Vertex AI Vector Search | 企业数据会作为矢量嵌入编入索引,并在已部署的索引中进行整理。 输入搜索查询后,系统会对已编入索引的数据执行向量搜索,以查找最接近的匹配项。 然后,这些最相符的结果会返回到 SAP 应用,以启用语义搜索和 RAG 等功能。 |
使用的产品
此参考架构使用以下 Google Cloud 产品:
- Vertex AI SDK for ABAP:提供模块和工具包,以便您从 ABAP 原生构建以 AI 为中心的应用。
- Vertex AI Vector Search:使用向量嵌入,可跨企业数据进行大规模、高效的搜索。这意味着,您可以按含义和上下文进行搜索,而不仅仅是按关键字进行搜索。
使用场景
以下列表展示了 Vector Search 在 SAP 应用中的用例:
- 构建推荐引擎:分析用户输入和行为,在 SAP 业务中推荐相关项(例如产品、公司代码和总分录账户),而不仅仅是进行关键字匹配。
- 构建 RAG 流水线:访问和集成来自各种来源的信息,以便使用相关的 SAP 和非 SAP 信息丰富 AI 模型的上下文,从而生成准确且相关的模型回答。
- 执行语义图片搜索:支持搜索外观相似的图片,这对于购物、视觉发现和医学成像分析非常有用。
- 执行语义文本搜索:了解文本的含义和上下文,以提高法律、学术和客户反馈分析中的搜索准确性。
- 执行基于自然语言的搜索:针对用户问题提供即时解答,从而增强常见问题解答、知识库和教育工具的功能。
- 执行异常检测:在金融、网络安全和制造业中识别异常模式和潜在威胁。
设计考虑事项
本部分提供的指导可帮助您使用此参考架构开发架构,以满足您在安全性、隐私性、合规性、费用和性能方面的特定要求。
安全性、隐私权和合规性
安全和合规是一项共同的责任。如需了解详情,请参阅 Vertex AI 共担责任。
如需了解 Google Cloud 对数据隐私保护的承诺,请参阅隐私权资源中心。
费用优化
如需降低费用,请考虑为索引选择较小的分片大小和较低维度的嵌入,以便使用较小的计算机来部署索引。
Vertex AI 是 Google Cloud 的一项付费产品。如需了解价格,请参阅 Vertex AI 价格和 Vector Search 价格。 如需根据您的预计使用量来估算费用,请使用价格计算器。
性能优化
为了缩短查询大型数据集的延迟时间,建议您在创建索引时选择较大的分片大小,并在部署索引时选择高性能计算机。如需详细了解索引的分片大小,请参阅索引大小。
为了提高搜索回答的相关性,请在更高维度上生成企业数据的嵌入。 计算机和更高的嵌入维度会增加费用。如需根据您的预计使用量来估算费用,请使用价格计算器。
准备工作
在 SAP 应用环境中使用 Vector Search 之前,请确保您或您的管理员已完成以下操作:
- 安装了最新版本的本地版本或任何云版本的 ABAP SDK for Google Cloud。
- 在 Google Cloud 项目中启用了 Vertex AI API。
- 设置身份验证以访问 Vertex AI API。
- 配置了 Vector Search 参数。
创建和管理向量索引
如需使用 Vector Search,您需要将企业数据编入索引并以矢量嵌入的形式部署。为此,请按以下步骤操作:
- 在 Vertex AI 或任何其他平台中使用文本或多模态嵌入 AI 模型生成向量嵌入。
- 将嵌入上传到 Cloud Storage 存储桶。
- 使用包含嵌入数据的 Cloud Storage 存储桶创建向量索引。
- 创建索引端点并将向量索引部署到该端点,以对已编入索引的企业数据执行语义搜索。
您可以通过 Google Cloud 控制台执行上述步骤,也可以使用 Vertex AI SDK for ABAP 从 SAP 环境触发这些步骤。
为了让企业 AI 解决方案获得最准确的矢量搜索结果,您还需要使用最新的企业数据不断更新索引。如需了解详情,请参阅更新和重新构建矢量索引。
从 SAP 应用调用 Vector Search
您可以通过以下方式,在 SAP 应用中使用 Vertex AI SDK for ABAP 对已编入索引的企业数据执行语义搜索:
- 使用文本提示进行搜索:使用搜索字符串对文本和多模态数据执行语义搜索。
- 使用多模态提示进行搜索:使用多模态输入(例如图片或视频)对多模态数据执行语义搜索。
- 使用企业实体 ID 进行搜索:使用企业专用 ID(例如商品 ID、订单 ID 或客户 ID)对企业数据执行语义搜索。
您可以使用向量搜索的结果,通过 RAG 将企业上下文纳入 AI 模型的上下文中,从而增强模型的上下文。这样,模型的回答就能基于您的企业数据。您还可以将这些结果用作业务流程的输入或生成建议。
使用文本提示进行语义搜索
如需使用文本提示对已编入索引的文本和多模态数据进行搜索,您可以使用 Vertex AI SDK for ABAP 的 /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 Web 应用 (Fiori
或 UI5
),并且想要拍摄一件服装、一件商品或一件设备部件的照片,并查找与该照片最相符的结果,则可以选择此搜索选项。
如需使用多模态提示对已编入索引的多模态数据进行搜索,您可以使用 Vertex AI SDK for ABAP 的 /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 搜索向量索引,您可以使用 Vertex AI SDK for ABAP 的 /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 代码示例。
将 Vector Search 与 RAG 搭配使用,为 AI 模型提供更多背景信息
向量搜索会根据您的搜索查询,返回最相关的企业数据作为响应。您可以使用 RAG 向 AI 模型提供来自 Vector Search 的搜索回答,从而为模型提供更多背景信息。RAG 通过提供检索到的企业数据中的相关上下文,提高 AI 模型回答的质量,确保模型回答始终基于企业数据。
如需将矢量搜索与 RAG 搭配使用,为 AI 模型提供更多上下文,请执行以下步骤:
- 准备一个搜索查询以获取企业情境。
- 对包含企业数据的索引执行向量搜索。
- 按照高效提示的最佳实践,将搜索回答串联或附加到最终提示中。
为了让基于 RAG 的架构从 AI 模型获得最相关的回答,请使用最新企业数据的嵌入更新您的索引。如需了解详情,请参阅更新和重新构建矢量索引。
如需使用示例数据集实验企业用例,请在 GitHub 上试用 Vector Search fueled by Embeddings from SAP 示例解决方案。此示例解决方案展示了 ABAP 中的商品推荐引擎,并提供了有关所需配置和实现详细信息的指导。您可以使用示例代码和参考文档作为其他推荐系统的基础,在其中直接从 SAP 应用执行语义搜索。
后续步骤
- 如需确定每个搜索结果与您的查询的相关程度,请参阅获取提取的邻居的距离。
- 如需了解如何将 Vector Search 与 Vertex AI SDK for ABAP 搭配使用,请参阅使用 Vertex AI Vector Search。
如果您在解决 ABAP SDK for Google Cloud 问题时需要帮助,请执行以下操作:
- 请参阅 ABAP SDK for Google Cloud 问题排查指南。
- 在 Cloud 论坛上提出问题并与社区讨论 ABAP SDK for Google Cloud。
- 收集所有可用的诊断信息,并与 Cloud Customer Care 联系。如需了解如何与 Customer Care 团队联系,请参阅获取 Google Cloud 上的 SAP 支持。
贡献者
作者: Devesh Singh | SAP 应用工程师
其他贡献者: Vikash Kumar | 技术文档撰写者