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

系统设计
与客户过去互动的历史不是一个静态的数据集。随着新问题的不断出现,它也在不断演变。您可能有一个存储所有互动的票务系统,或者使用不同的方式与客户沟通。无论沟通渠道是什么,您都需要将正确的答案提供给选定的大型语言模型,并建立一种持续执行此操作的方式。因此,我们将构建一个数据摄取管道,然后构建一个将使用这些数据的检索增强生成应用程序。
- 数据集: 一个来自Qdrant用户的常见问题集合,作为一个逐步更新的Excel表格
- 嵌入模型: Cohere
embed-multilingual-v3.0,以支持不同语言的相同管道 - 知识库: Qdrant,运行在混合云模式下
- 数据摄取管道: Airbyte,将数据加载到Qdrant
- 大型语言模型: Cohere 命令-R
- RAG: Cohere RAG 使用我们的知识库通过自定义连接器
所有选定的组件都与AWS基础设施兼容。由于Cohere模型的可用性,您可以构建一个完全私有的客户支持系统,完全将数据隔离在您的基础设施内。此外,如果您有AWS积分,您现在可以使用它们,而无需在模型或语义搜索层上花费额外的资金。
数据摄取
构建RAG从一个精心策划的数据集开始。在您的特定情况下,您可能更倾向于直接从票务系统加载数据,例如Zendesk 支持、Freshdesk,或者将其与共享收件箱集成。然而,在处理客户问题时,质量胜于数量是关键。应该有意识地决定将哪些数据包含在知识库中,这样我们就不会用可能不相关的信息混淆模型。我们假设有一个Excel表格可以通过HTTP/FTP访问,Airbyte可以以增量方式将其加载到Qdrant中。
Cohere <> Qdrant 连接器用于 RAG
Cohere RAG 依赖于 连接器,它为模型带来了额外的上下文。 连接器是一个实现了特定接口的Web服务,并通过HTTP API暴露其数据。通过这种 设置,大型语言模型负责与连接器通信,因此不再需要构建带有上下文的提示。
回答机器人
最后,我们希望自动化响应并在我们确定模型足够自信时自动发送它们。同样,这种应用程序的创建方式在很大程度上取决于您在客户支持团队中使用的系统。如果它提供了一种在收到新问题时设置webhook的方法,您可以创建一个web服务并使用它来自动化响应。一般来说,我们的机器人应该专门为您使用的平台创建,因此我们在这里只涵盖一般概念,并构建一个简单的CLI工具。
先决条件
AWS上的Cohere模型
在AWS上部署Cohere模型的一种可能方式是使用AWS SageMaker。Cohere的网站上有一个详细的指南,介绍了如何以这种方式部署模型,因此您可以按照那里描述的步骤来设置您自己的实例。
Qdrant 混合云在 AWS 上
我们的文档涵盖了在AWS上作为混合云环境部署Qdrant的步骤,因此您可以按照那里描述的步骤来设置您自己的实例。部署过程非常简单,您可以在几分钟内启动并运行您的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 中。AWS EC2 的安装过程在官方文档中有描述。 请按照说明设置您自己的实例。
设置连接
一旦你启动并运行了Airbyte,你可以配置连接以将数据从相应的源加载到Qdrant中。配置将需要设置源和目标连接器。在本教程中,我们将使用以下连接器:
Airbyte UI 将引导您完成设置源和目的地并连接它们的过程。以下是源配置的可能样子:

Qdrant 是我们的目标目的地,因此我们需要建立与它的连接。我们需要指定哪些字段应该包含在生成嵌入中。在我们的情况下,仅嵌入问题是完全合理的,因为我们将寻找过去提出的类似问题并提供答案。

一旦我们设置好了目的地,我们最终可以配置一个连接。该连接将定义数据同步的时间表。

Airbyte 现在应该已经准备好接受来自源的所有数据更新,并将它们加载到 Qdrant 中。您可以在 UI 中监控同步的进度。
RAG连接器
我们之前的一个教程,逐步指导您如何使用Cohere Embed v3和Qdrant实现自定义连接器。您可以将其指向在AWS上运行的混合云Qdrant实例。创建的连接器可以通过多种方式部署到亚马逊网络服务,甚至可以使用AWS Lambda以无服务器的方式部署。
一般来说,RAG连接器需要暴露一个单一的端点,该端点将接受带有query参数的POST请求,并以特定结构的JSON文档形式返回匹配的文档。我们在相关教程中创建的FastAPI实现非常适合此任务。唯一的区别是您应该将其指向运行在AWS基础设施上的Cohere模型和Qdrant。
我们的连接器是一个轻量级的网络服务,它暴露了一个单一的端点,并将Cohere嵌入模型与我们的Qdrant混合云实例粘合在一起。因此,它非常适合无服务器架构,无需额外的基础设施即可运行。
你也可以将连接器作为另一个服务运行在你的Kubernetes集群(在AWS 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混合云和运行在AWS基础设施上的Airbyte构建一个完全私有的客户支持系统。您可以确保您的数据不会离开您的场所,并专注于提供最佳的客户支持体验,而不会让您的团队为重复性任务烦恼。
