AI客户支持问答系统
| 时间:120 分钟 | 难度:高级 |
|---|
提供一流的客户服务对业务成功至关重要。随着您的业务扩展,客户查询的数量也会随之增加。其中许多查询是重复性的,因此自动化是一个节省时间的解决方案。您的支持团队的专业知识通常是保密的,但您仍然可以使用 AI 安全地自动回复。
在本教程中,我们将设置一个私有 AI 服务,以高准确性和有效性回答客户支持查询。通过利用 Cohere 强大的模型(部署到 AWS)与 Qdrant 混合云,您可以创建一个完全私有的客户支持系统。由 Airbyte 促进的数据同步将完成设置。

系统设计
与客户过去的互动历史不是一个静态数据集。它在不断演变,因为新的问题不断涌入。您可能有一个存储所有互动的票务系统,或者使用不同的方式与客户沟通。无论沟通渠道是什么,您都需要将正确的答案带给选定的大型语言模型,并建立一种持续进行的方式。因此,我们将构建一个摄取管道,然后是一个将使用数据的检索增强生成应用程序。
- 数据集:Qdrant 用户常见问题集,作为增量更新的 Excel 表格
- 嵌入模型:Cohere
embed-multilingual-v3.0,支持使用相同管道处理不同语言 - 知识库:Qdrant,在混合云模式下运行
- 摄取管道:Airbyte,将数据加载到 Qdrant
- 大型语言模型:Cohere Command-R
- RAG:Cohere RAG 通过自定义连接器使用我们的知识库
所有选定的组件都与 AWS 基础设施兼容。得益于 Cohere 模型的可用性,您可以构建一个完全私有的客户支持系统,将数据完全隔离在您的基础设施内。此外,如果您有 AWS 积分,您现在可以使用它们,而无需在模型或语义搜索层上额外花费。
数据摄取
构建 RAG 始于精心策划的数据集。在您的特定情况下,您可能更喜欢直接从票务系统加载数据,例如 Zendesk Support、Freshdesk,或者将其与共享收件箱集成。然而,在客户问题的情况下,质量胜于数量是关键。应有意识地决定将哪些数据包含在知识库中,这样我们就不会用可能不相关的信息混淆模型。我们将假设有一个可通过 HTTP/FTP 访问的 Excel 表格,Airbyte 可以增量地将其加载到 Qdrant 中。
Cohere <> Qdrant RAG 连接器
Cohere RAG 依赖于 连接器,它为模型带来了额外的上下文。连接器是一个实现特定接口的 Web 服务,并通过 HTTP API 暴露其数据。通过这种设置,大型语言模型负责与连接器通信,因此不再需要使用上下文构建提示。
应答机器人
最后,我们希望自动化响应,并在模型足够自信时自动发送。同样,此类应用程序的创建方式强烈取决于您在客户支持团队中使用的系统。如果它提供了一种在收到新问题时设置 webhook 的方式,您可以创建一个 Web 服务并使用它来自动化响应。通常,我们的机器人应该专门为您使用的平台创建,所以我们在这里只介绍一般概念并构建一个简单的 CLI 工具。
先决条件
AWS 上的 Cohere 模型
在 AWS 上部署 Cohere 模型的一种可能方式是使用 AWS SageMaker。Cohere 网站有关于如何以这种方式部署模型的详细指南,因此您可以按照其中描述的步骤设置您自己的实例。
AWS 上的 Qdrant 混合云
我们的文档涵盖了 Qdrant 作为混合云环境在 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 Embed v3 和 Qdrant 为 Cohere RAG 实现自定义连接器。您只需将其指向使用在 AWS 上运行的混合云 Qdrant 实例即可。创建的连接器可以通过多种方式部署到 Amazon Web Services,甚至可以使用 AWS Lambda 以无服务器方式部署。
通常,RAG 连接器必须公开一个单一端点,该端点将接受带有 query 参数的 POST 请求,并以特定结构的 JSON 文档形式返回匹配文档。我们在相关教程中创建的 FastAPI 实现非常适合此任务。唯一的区别是您应该将其指向在 AWS 基础设施上运行的 Cohere 模型和 Qdrant。
我们的连接器是一个轻量级 Web 服务,它公开一个单一端点,并将 Cohere 嵌入模型与我们的 Qdrant 混合云实例连接起来。因此,它完美契合无服务器架构,无需额外的基础设施即可运行。
您还可以将连接器作为另一个服务在您的 AWS (EKS) 上运行的 Kubernetes 集群中运行,或者通过启动 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 返回您的向量。
客户支持不应完全自动化,因为一些全新的问题可能需要人工干预。我们应该进行提示工程,并期望模型提供具有一定置信水平的答案。如果置信度太低,我们不应自动发送答案,而应将其提交给支持团队进行审核。
总结
本教程展示了如何使用在 AWS 基础设施上运行的 Cohere 模型、Qdrant 混合云和 Airbyte 构建一个完全私有的客户支持系统。您可以确保您的数据不会离开您的场所,并专注于提供最佳的客户支持体验,而无需让您的团队处理重复性任务。