本文档介绍了如何通过 Vertex AI SDK for ABAP 使用 Vertex AI Vector Search 构建智能 SAP 应用的参考架构。借助 Vector Search,您可以构建超越关键字匹配的 SAP 应用,使用语义理解功能帮助用户从企业数据中精确查找所需内容。您还可以将 Vector Search 与检索增强生成 (RAG) 结合使用,在 SAP 环境中构建强大的 AI 应用。RAG 通过提供来自企业数据的相关背景信息来提高 AI 模型的回答质量,确保 AI 模型始终基于您的企业数据。
本文档的目标受众群体包括 ABAP 开发者、SAP 解决方案架构师和云架构师。本文档假定您熟悉 Vector Search 术语。
架构
下图显示了在 SAP 应用环境中使用 Vector Search 的参考架构:
此参考架构包括以下组件:
# | 组件 | 详细信息 |
---|---|---|
1 | SAP 中的查询起点 | 使用以下任一选项开始搜索:
|
2 | Vertex AI SDK for ABAP | SDK 的 Vector Search Invoker 模块会根据您的搜索查询执行 Vector Search。 |
3 | Vertex AI Vector Search | 企业数据会作为矢量嵌入进行编入索引,并在已部署的索引中进行整理。 输入搜索查询后,系统会对此已编入索引的数据执行 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 解决方案获得最准确的 Vector Search 结果,您还需要使用最新的企业数据更新索引。如需了解详情,请参阅更新和重建向量索引。
从 SAP 应用调用 Vector Search
您可以通过 SAP 应用使用 Vertex AI SDK for ABAP 以以下方式对已编入索引的企业数据执行语义搜索:
- 使用文本提示进行搜索:使用搜索字符串对文本和多模态数据执行语义搜索。
- 使用多模态提示进行搜索:使用多模态输入(例如图片或视频)对多模态数据执行语义搜索。
- 使用企业实体 ID 进行搜索:使用企业专属 ID(例如产品 ID、订单 ID 或客户 ID)对企业数据执行语义搜索。
您可以使用 Vector Search 的结果,通过 RAG 将企业上下文信息添加到 AI 模型的上下文中,从而增强 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 搜索向量索引,您可以使用 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 模型提供更多上下文
Vector Search 会根据您的搜索查询,返回最相关的企业数据作为回答。您可以使用 RAG 向 AI 模型提供来自 Vector Search 的搜索回答,从而为其提供更多上下文。RAG 通过提供检索到的企业数据中的相关背景信息,确保模型回答始终基于您的企业数据,从而提高 AI 模型回答的质量。
如需通过将 Vector Search 与 RAG 搭配使用为 AI 模型提供更多上下文信息,请执行以下步骤:
- 准备搜索查询以获取企业上下文。
- 对包含企业数据的索引执行 Vector Search。
- 按照最佳实践,将搜索回答串联或增补到最终提示中,以便高效提示。
为了让 AI 模型为基于 RAG 的架构提供最相关的回复,请使用最新企业数据的嵌入式数据及时更新索引。如需了解详情,请参阅更新和重建向量索引。
如需使用示例数据集实验企业用例,请尝试使用 GitHub 上的由 SAP 嵌入提供支持的Vector Search 示例解决方案。此示例解决方案展示了 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 团队联系,请参阅获取 SAP on Google Cloud支持。
贡献者
作者:Devesh Singh | SAP 应用工程师
其他贡献者:Vikash Kumar | 技术文档工程师