亚马逊AWS官方博客

Amazon Bedrock 知识库加速客服团队应用 GenAI 能力

需求背景

随着人工智能技术的不断发展,大型语言模型(LLM)和信息检索技术已经成为提高客户服务效率的关键工具。其中检索增强生成(Retrieval-Augmented Generation, RAG)模型融合了知识库检索和自然语言生成的能力,可以帮助客服团队基于现有知识库快速回答客户咨询,提高工作效率和客户满意度。

然而,在实际应用中,业务团队往往面临着 IT 资源限制、传统软件工程思维以及高层决策者的疑虑等障碍。具体来说:

  1. 业务团队通常无法调动大量的 IT 资源来支持构建 RAG 系统;
  2. 传统软件工程思维往往将准确度视为上线的关键指标,导致对准确度要求过高;
  3. IT 立项阶段的价值说明难以说服高层决策者。

为了解决上述问题,我们尝试改变思维方式:

  1. 寻求开箱即用的 RAG 解决方案,降低实施成本和技术门槛;
  2. 将 RAG 定位为客服人员的智能助手(Copilot),帮助减轻工作负担,减少重复劳动,提高工作效率;
  3. 采用低成本、低风险的方式开始使用生成式人工智能(GenAI),逐步积累经验和效益证据。

因此,如果能够找到一种启动成本低、依赖路径少、不侵入现有工作流程的 GenAI 解决方案,将更有利于在实际环境中部署和使用。

为什么选择 Knowledge Base for Amazon Bedrock

1)Knowledge Base for Amazon Bedrock(后续简称 Amazon Bedrock 知识库)是一项完全托管的功能,可帮助您实施从数据摄取到检索和提示增强的整个检索增强生成(RAG)工作流程。

2)它可以将来自公司私有数据源的上下文信息提供给基础模型和代理,以提供更相关、更准确、更定制的响应。

3)您可以使用检索 API 从知识库获取相关结果,并使用 RetrieveAndGenerate API 直接将检索到的结果用于增强提示并生成响应。

4)从知识库检索到的所有信息均附有引文,可提高透明度并最大限度地减少幻觉。

在客服工作台方面,如果您正在使用 Zendesk,那么本文提到的定制的 Zendesk App 结合 Amazon Bedrock 知识库可以让您的团队在半天内拥有一个基于您自己的知识库的解决方案,并帮助提供基于工单的自动回复内容。

方案工作流和效果

工作流说明

  1. 根据工单内容使用 Claude 3 进行自动分类。
  2. 利用基于上下文的 RAG(检索增强生成)能力生成回复内容。
  3. 根据第一步的分类精确修改 RAG 的内容,使其内容更加准确。
  4. 提供翻译功能,帮助不同区域的客服人员快速理解内容。
  5. 利用知识库元数据过滤,结合标签等信息实现精准知识召回。

同时,我们会记录客服使用过程中的信息,帮助建立后期反馈机制并优化:

  1. 记录工单处理详细日志,包括使用情况和需要改进的地方。
  2. 利用 Amazon OpenSearch Service Dashboard 构建分析仪表板,帮助客户分析并持续优化知识库。

客服侧 Zendesk App 功能

Zendesk 是一个客户服务平台,通过使用 Zendesk,你可以处理来自各个渠道的客户消息。 Zendesk 可以通过 App 来扩展其能力。本方案中,定制的 Zendesk App 是集成 Amazon Bedrock 知识库的的一个入口。其他客服工作台或者应用入口完全可以参考借鉴本文提到的方案。

为了加速客户团队采纳 GenAI 能力,Account Team 与客户客服产品团队紧密配合,基于 Zendesk App Framework 开发了一个 Zendesk 扩展 App,该 App 提供交互界面供客服人员使用。App 源码已经托管在 Github 开源,大家可以自行 fork 修改使其更适合您的应用场景。当然您也可以下载已经打包好的 zip 版本直接安装到您的 Zendesk 客服工作台中(全部可以通过 Zendesk 管理员在界面上完成,只需要上传 zip 包并点击 install 按钮完成安装)。

具体安装步骤可以参考:https://developer.zendesk.com/documentation/apps/getting-started/uploading-and-installing-a-private-app/

安装完成后,在 Task Bar 侧面栏找到我们的 App 并展开,如下:

App 主要提供工单分析、智能回复内容生成、反馈收集功能,常见操作流程如下:

  1. 根据工单内容进行意图识别(区分该工单是售前咨询、故障投诉等细分场景)。
  2. 自动读取当前工单,获取标题和内容信息。
  3. 通过点击”AI Suggest”按钮调用 Amazon Bedrock 知识库获取 AI 回复内容,并展示该回复相关的引用文档和 Chunk 等信息,供客服参考(步骤 1、2 可以根据需要多次进行)。
  4. 根据第一步识别的意图,改写内容。例如,对于售前座席,可以适当提供推荐能力;对于售后座席,确保回复内容的语气更具人文关怀,符合当地语言的表达方式。
  5. 针对咨询本身和回复内容提供多语言翻译功能,帮助不同区域客服人员快速理解(基于 Claude 3 Sonnet 模型提供翻译能力)。
  6. 获取工单标签如区域、产品型号等,构建元数据过滤器,结合 Amazon Bedrock 知识库元数据过滤能力实现精准召回。
  7. 客服点击”Use it”按钮,将生成的内容自动复制到回复窗口,并记录此次调用日志。
  8. 如果客服认为生成的内容尚待改进,可以点击”Need Improve”按钮提交反馈。

每一次客服人员采纳自动回复的内容或者点击 Need Improve,当前 ticket 的咨询和关联的文档详细信息会记录到日志中。这些日志可以导出供客服团队进一步优化文档。

使用一个月后效果反馈

  1. 上线第一周后进行统计,经过客服团队的实际使用,有 24% 的工单可直接采用生成的内容回复。
  2. 上线第三周后,经过持续调优,在工单辅助处理阶段增加工单意图识别和针对不同意图进行 Prompt 的优化调整,首回场景直接采用自动生成内容来回复工单的比例大于了 60%。
  3. 后续通过优化 Prompt 和引入历史记录分析,  可以持续提高直接采纳比例。

架构参考

  1. App 提供客服工作人员交互入口。
  2. Amazon Bedrock Proxy Server 提供调用 Amazon Bedrock Knowledge Base RetrieveAndGenerate 接口获取 RAG 响应。
  3. 将不同意图对应的 Prompt 保存在 Amazon DynamoDB 中,提供更为精细的生成式人工智能(GenAI)响应。
  4. 调用 Claude 3 提供翻译和回复改写能力。
  5. Amazon Bedrock 知识库文档源选择 Amazon S3 服务。
  6. 向量数据库选择 Amazon OpenSearch Serverless,并且我们将客服使用日志也存入同一个库。同时基于 Amazon OpenSearch Serverless 的 Dashboard 提供反馈分析能力。

安装部署

  1. 初始化 Amazon Bedrock 知识库并导入文档。
  2. 部署一个 BedrockProxy 的 http 服务,可以使用 CloudFormation 一键部署或者自行下载 https://github.com/nimysan/AIServer,以你习惯的方式部署。 Template 模版:https://github.com/nimysan/AIServer/blob/main/cloudformation/template.yaml
  3. 下载 Zendesk App 包,下载链接:https://github.com/nimysan/amazon-bedrock-zendesk-app/releases/tag/1.0.0
  4. 以管理身份登录 Zendesk 管理控制台,上传并安装该 App。具体操作细则可参考:Installing the app in Zendesk Support

整体部署过程大概可以在一个半个工作日时内完成。

当您的客服登录 Zendesk 服务台并打开一个 ticket 后,在右边的侧面工作栏就可以看到这个 App,单击打开就可以开始愉快地享受 GenAI 的高效率回复了。

成本构成

整体费用主要来自于三部分,我们以服务客服团队 50 个人为例子的基础配置。

费用类别 费用模式 启用费用预估
Claude 3 Sonnet (LLM Token)

根据用量付费

$0.003 for input 1000 tokens and $0.015 for 1000 output tokens

Amazon OpenSearch Serverless 基础费用+按量付费 $5-10 一天
EC2 for Amazon Bedrock Proxy 固定费率 $2-5 一天

基于以上服务,你可以使用较低的成本拥有一个 RAG 知识库和相应的 GenAI 能力。

使用实践

Embedding 模型选择

Amazon Text Embeddings V2 是一款轻量级、高效的模型,非常适合不同维度的高准确度检索任务。该模型支持灵活的嵌入大小(256、512、1,024),并优先维护较小维度的准确度,有助于在不影响准确度的前提下降低存储成本。当将维度从 1,024 减少到 512 时,Titan Text Embeddings V2 可保留大约 99% 的检索准确度;当将维度从 1,024 减少到 256 时,该模型可保留 97% 的准确度。此外,Titan Text Embeddings V2 还包括预训练中对 100 多种语言的多语言支持,以及用于提高测量向量相似度的准确度的单位向量标准化。

Zendesk 如何安全访问 Amazon Bedrock?

前端 Zendesk App 不保存 token 的值。真实的 token 值存储在 Zendesk proxy server 侧,当 app 发一起一个远程访问的时候,经过 proxy server 替换 token 占位符获得真实 token 值。

设置细节参考:Zendesk app 如何安全地访问外部接口  https://developer.zendesk.com/documentation/apps/app-developer-guide/making-api-requests-from-a-zendesk-app/

使用 Amazon Bedrock 知识库的 metadata filter 能力

对于面向全球市场的企业,其客服团队通常需要处理来自不同国家、不同渠道和不同产品的各种咨询。这些咨询所依赖的知识库并不完全相同,比如不同国家的促销信息或某些国家特有的产品型号标准。如何在一个统一的知识库中提供精准的查询和响应能力,是企业亟需解决的问题。

Amazon Bedrock 知识库的元数据过滤功能可以有效地解决这一问题。该功能允许用户在执行查询前,通过指定包含或排除特定文档的元数据属性,来缩小搜索范围,确保生成的响应更加贴近查询需求。

具体来说,用户可以在数据引入时为每个文档定义自定义的元数据属性,包括布尔值、字符串、小数和整数等数据类型。在查询时,用户可利用 8 种常见的关系运算符,如等于、不等于、大于、小于等,对这些元数据属性进行过滤。

例如,对于“如何申请理赔”这样的查询,用户可以应用过滤器,仅检索与特定国家相关的文档,从而确保生成的响应更加准确和相关。这种细粒度的元数据过滤能力使得 Amazon Bedrock 知识库能够满足面向全球市场的差异化知识管理需求,提高客服效率和客户体验。

元数据过滤功能参考:https://aws.amazon.com/about-aws/whats-new/2024/03/knowledge-bases-amazon-bedrock-metadata-filtering/

在我们的场景下,Zendesk app 会提取当前 ticket 的 ticket_brand,ticket_channel 等标签,并组装查询 filter。

处理长度超过 1000 字的输入?

根据 KnowledgeBaseQuery 接口文档描述,输入 text 不能超过 1000 字。当前针对 ticket 内容超过 1000 字的情况,我们将操作分为两步:

  1. 采用 LLM(Claude 3 Sonnet)压缩,将文本内容先压缩到 1000 以内。
  2. 压缩后的内容作为输入做 knowledgebase query。

压缩内容 PE 参考:

Compress the following content about customer services
inquiries into a 1000-character response, without including any explanatory phrases. 
Just provide the condensed content directly. content is:{question}"

这种方式的缺点是一次建议需要调用两次 LLM 大模型,成本稍高,等待时间更长;优点是兼容各种渠道较长的 ticket 咨询。

Use it/Need Approve 日志记录说明

我们复用了 Amazon Bedrock Knowledge Base 使用的 Amazon OpenSearch Service 服务存储客服使用日志,并基于此日志做一些分析。

日志存储的 Index 名称为:behavior_logs,记录了当前客服的账号、RAG 的输入和输出、当前引用的 KB 文档信息以及客服反馈的 Use It/Need Improve 等。

从日志中我们可以获取到:

  1. 回答被采纳和要求 Improve 的次数比率。
  2. 哪些文档被经常引用。
  3. 当前知识库中的文档分布详情。

这些数据可以帮助客服团队持续优化知识库

根据日志的内容,可以创建如下的 dashboard 帮助分析 KB 使用情况

当然您通过修改代码将将日志存入不同的引擎中去。

文档入库的一些注意事项

  1. Embeddings 选用 Amazon Titan Text Embeddings v2,对于文档入库有更好的兼容性,当前实际测试中文、英语、日语都能够支持。
  2. 由于当前阶段同步数据源的日志并没有显示同步成功或者失败的细节, 我们可以制作基于 OpenSearch 的 dashboard,来显示当前在库的文档和 chunk 数量。
  3. 不要在一次数据源同步操作中同时增加文档和删除文档,将在 S3 中删除文档和数据源同步作为一次原子同步操作。
  4. csv/excel/doc 等格式文档请使用 UTF-8 编码。
  5. 图片扫描类 PDF 暂不支持。

参考文档

  1. Amazon Bedrock 知识库提供完全托管的 RAG 体验:https://aws.amazon.com/cn/blogs/china/knowledge-bases-now-delivers-fully-managed-rag-experience-in-amazon-bedrock/
  2. Amazon Text Embeddings V2 是一款轻量级、高效的模型,非常适合不同维度的高准确度检索任务:https://aws.amazon.com/about-aws/whats-new/2024/04/amazon-titan-text-embeddings-v2-amazon-bedrock/
  3. 基于Amazon Bedrock 自建 GenAI 平台:https://aws.amazon.com/cn/blogs/china/self-built-genai-platform-based-on-amazon-bedrock/
  4. Github for Zendesk App(提供下载安装包):https://github.com/nimysan/amazon-bedrock-zendesk-app
  5. Bedrock 代理服务 Github 地址:https://github.com/nimysan/AIServer

*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您了解行业前沿技术和发展海外业务选择推介该服务。

本篇作者

叶小微

亚马逊云科技解决方案架构师,曾就职于 IBM,后从事电商相关和企业数字化转型工作,拥有多年架构设计、研发、项目管理经验。在工作流、微服务、系统集成等方向有丰富的解决实际问题的经验。

刘智远

华宝新能 IT 产品工程师。他专注于为全球用户体验团队提供全链路解决方案,参与用户体验问题的调研分析和解决方案设计。他利用最前沿的 AI 技术提升客户服务团队的效率,并推动了用户体验的持续改进。工作之余,他热爱旅行和探索美食,享受不同文化带来的独特体验。