AI 客服问答系统
时长:120 分钟 | 级别:高级 |
---|
提供一流的客户服务对于企业的成功至关重要。随着您的业务扩展,客户查询的数量也会增加。其中许多查询是重复的,因此自动化是一个节省时间的解决方案。您的支持团队的专业知识通常是私密的,但您仍然可以使用 AI 安全地自动回复。
在本教程中,我们将搭建一个私有 AI 服务,以高准确性和高效率回答客户支持查询。通过利用 Cohere 强大的模型(部署到 AWS)与 Qdrant Hybrid Cloud,您可以创建一个完全私有的客户支持系统。由 Airbyte 促进的数据同步将完成设置。
系统设计
与客户过往互动历史并非静态数据集。随着新问题的涌入,它不断演变。您可能有存储所有互动记录的工单系统,或使用其他方式与客户沟通。无论沟通渠道如何,您都需要将正确答案传送到选定的大型语言模型,并且需要建立一种持续执行此操作的方法。因此,我们将构建一个摄取管道,然后是一个利用这些数据的检索增强生成应用程序。
- 数据集: 来自 Qdrant 用户的常见问题集,以增量更新的 Excel 表格形式存在
- 嵌入模型: Cohere
embed-multilingual-v3.0
,支持同一样本管道处理不同语言 - 知识库: Qdrant,运行在 Hybrid Cloud 模式下
- 摄取管道: Airbyte,将数据加载到 Qdrant
- 大型语言模型: Cohere Command-R
- RAG: Cohere RAG,通过自定义连接器使用我们的知识库
所有选定的组件都与 AWS 基础设施兼容。得益于 Cohere 模型的可用性,您可以构建一个完全私有的客户支持系统,将数据完全隔离在您的基础设施内。此外,如果您有 AWS 信用额度,现在就可以使用它们,而无需在模型或语义搜索层上额外花费金钱。
数据摄取
构建 RAG 始于精心整理的数据集。在您特定的情况下,您可能更倾向于直接从工单系统加载数据,例如 Zendesk Support、Freshdesk,或者将其与共享收件箱集成。然而,对于客户问题而言,质量胜于数量是关键。应该有意识地决定将哪些数据包含在知识库中,以免用可能不相关的信息混淆模型。我们将假设有一个可通过 HTTP/FTP 访问的 Excel 表格,Airbyte 可以访问并以增量方式加载到 Qdrant 中。
用于 RAG 的 Cohere <> Qdrant 连接器
Cohere RAG 依赖于 连接器,连接器为模型提供了额外的上下文。连接器是一种实现特定接口的 Web 服务,并通过 HTTP API 公开其数据。通过这种设置,大型语言模型负责与连接器通信,因此不再需要构建带有上下文的提示。
应答机器人
最后,我们希望自动化回复并在确定模型足够自信时自动发送。同样,创建这样一个应用程序的方式在很大程度上取决于您在客户支持团队中使用的系统。如果它提供了一种方法,可以在收到新问题时设置 webhook,您可以创建一个 Web 服务并使用它来自动回复。一般来说,我们的机器人应该针对您使用的平台进行创建,所以我们在这里只介绍一般思路,并构建一个简单的 CLI 工具。
先决条件
AWS 上的 Cohere 模型
在 AWS 上部署 Cohere 模型的一种可能方式是使用 AWS SageMaker。Cohere 的网站有 关于如何以这种方式部署模型的详细指南,因此您可以按照其中描述的步骤设置您自己的实例。
AWS 上的 Qdrant Hybrid Cloud
我们的文档涵盖了将 Qdrant 作为 Hybrid Cloud 环境部署到 AWS 的过程,您可以按照其中描述的步骤设置您自己的实例。部署过程非常简单,您可以在几分钟内启动并运行您的 Qdrant 集群。
完成所有步骤后,您的 Qdrant 集群应该会在一个特定的 URL 上运行。您将需要此 URL 和 API 密钥才能与 Qdrant 交互,所以让我们将它们都存储在环境变量中
export QDRANT_URL="https://qdrant.example.com"
export QDRANT_API_KEY="your-api-key"
import os
os.environ["QDRANT_URL"] = "https://qdrant.example.com"
os.environ["QDRANT_API_KEY"] = "your-api-key"
Airbyte 开源版本
Airbyte 是一个开源数据集成平台,可帮助您将数据复制到仓库、数据湖和数据库中。您可以将其安装在您的基础设施上,并使用它将数据加载到 Qdrant。安装过程在官方文档中有详细描述。请按照说明设置您自己的实例。
设置连接
一旦 Airbyte 启动并运行,您就可以配置连接以将数据从相应的源加载到 Qdrant 中。配置需要设置源和目标连接器。在本教程中,我们将使用以下连接器
Airbyte UI 将引导您完成设置源和目标并连接它们的过程。以下是源配置的可能样子
Qdrant 是我们的目标目的地,因此我们需要设置与它的连接。我们需要指定应包含哪些字段来生成嵌入。在我们的案例中,只嵌入问题是完全合理的,因为我们将寻找过去问过的类似问题并提供答案。
设置好目标后,我们终于可以配置连接了。连接将定义数据同步的计划。
Airbyte 现在应该已准备好接受来自源的任何数据更新,并将其加载到 Qdrant 中。您可以在 UI 中监控同步进度。
RAG 连接器
我们之前的一个教程逐步指导您实现 Cohere RAG 的自定义连接器,使用 Cohere Embed v3 和 Qdrant。您可以直接将其指向使用您运行在 AWS 上的 Hybrid Cloud Qdrant 实例。创建的连接器可以通过各种方式部署到 Amazon Web Services,甚至可以使用 AWS Lambda 以无服务器的方式部署。
一般来说,RAG 连接器需要暴露一个单一端点,该端点接受带有 query
参数的 POST 请求,并以特定结构的 JSON 文档返回匹配的文档。我们在相关教程中创建的 FastAPI 实现非常适合此任务。唯一的区别是您应该将其指向运行在 AWS 基础设施上的 Cohere 模型和 Qdrant。
我们的连接器是一个轻量级的 Web 服务,它暴露一个单一端点,并将 Cohere 嵌入模型与我们的 Qdrant Hybrid Cloud 实例连接起来。因此,它非常适合无服务器架构,无需额外基础设施即可运行。
您也可以将连接器作为您在 AWS 上运行的 Kubernetes 集群 (EKS) 中的另一个服务来运行,或者通过启动一个 EC2 计算实例来运行。此步骤取决于您部署其他服务的方式,因此我们将其留给您决定如何运行连接器。
最终,Web 服务应该可以在特定的 URL 下访问,并且最好将其存储在环境变量中,以便其他服务可以轻松访问。
export RAG_CONNECTOR_URL="https://rag-connector.example.com/search"
os.environ["RAG_CONNECTOR_URL"] = "https://rag-connector.example.com/search"
客户界面
到目前为止,我们已将所有数据加载到 Qdrant 中,并且 RAG 连接器已准备好提供相关的上下文。最后缺失的部分是客户界面,它将调用 Command 模型来创建答案。这样一个系统应该针对您使用的平台进行专门构建,并集成到其工作流程中,但我们将为此打下坚实基础,并展示如何在简单的 CLI 工具中使用它。
我们的应用程序不再需要连接到 Qdrant,因为模型将直接连接到 RAG 连接器。
首先,我们必须通过 Cohere SDK 创建与 Cohere 服务的连接。
import cohere
# Create a Cohere client pointing to the AWS instance
cohere_client = cohere.Client(...)
接下来,应该注册我们的连接器。请确保只执行一次此操作,并将连接器的 ID 存储在环境变量中或任何其他应用程序可访问的方式中。
import os
connector_response = cohere_client.connectors.create(
name="customer-support",
url=os.environ["RAG_CONNECTOR_URL"],
)
# The id returned by the API should be stored for future use
connector_id = connector_response.connector.id
最后,我们可以创建一个提示并从模型中获取答案。此外,我们定义应该使用哪个连接器提供上下文,因为我们可能有多个连接器,并希望根据某些条件使用特定的连接器。让我们从提问开始。
query = "Why Qdrant does not return my vectors?"
现在我们可以将查询发送到模型,获取响应,并可能将其发送回客户。
response = cohere_client.chat(
message=query,
connectors=[
cohere.ChatConnector(id=connector_id),
],
model="command-r",
)
print(response.text)
输出应该是模型的答案,例如:
Qdrant 默认设置为最小化网络流量,因此在搜索结果中不返回向量。但是,您可以通过将 Search/Scroll 函数的 'with_vector' 参数设置为 true 来使 Qdrant 返回您的向量。
客户支持不应完全自动化,因为一些全新的问题可能需要人工干预。我们应该通过提示工程来让模型提供具有一定置信水平的答案。如果置信度过低,我们不应该自动发送答案,而应将其呈现给支持团队进行审核。
总结
本教程展示了如何使用 Cohere 模型、Qdrant Hybrid Cloud 和 Airbyte 构建一个完全私有的客户支持系统,该系统运行在 AWS 基础设施上。您可以确保您的数据不会离开您的本地环境,并专注于提供最佳的客户支持体验,而无需让您的团队处理重复性任务。