需求背景
客服知识库:是存储和管理客户服务信息的系统,可提高客户满意度、品牌忠诚度并优化客服工作流程。
近日,收到咱们客服部提出的新需求:打造部门业务的客服知识库,利于知识传承和交流。一番沟通了解,落地大致像这样:
客服们反馈还是蛮好用的,但站在产品角度思考,会发现“发帖并回复”社交客服形式存在以下问题:
- 答案可读性较低:一定情况下,需要在大段落“回复”中找答案
- 检索体验较低:需通过“输入关键词-结果筛选-打开回复页”完成检索
- 可维护性一般:信息的新增与更新,都需要人工进行分类和排版
那么,有没有更好的解决方案呢?
当前热门ChatGPT是不错的选择,但是它无法给到我们专属的答案。幸运的是,我们可以通过技术升级,让它学会我们的知识库,成为专属客服机器人。
技术方案
实现专属客服的核心在于:如何让ChatGPT学会客服知识库?
目前业内主要有两个思路:
- 模型微调(Fine-tunes),得到适应我们业务场景的新模型;
- 中间件(LlamaIndex),在输入问题的同时将“例子”也给到模型,达到现学现答的效果
注:目前仅可微调GPT-3模型,但API支持GPT-3.5调用
进一步调研内容如下:
方案 | 简介 | 优点 | 缺点 |
---|---|---|---|
Fine-tunes | 模型微调 | 拓展性强,准确度一般 | 训练和请求成本高 |
LlamaIndex | 在请求时给予“上下文” | 成本一般,准确度优秀 | 拓展性一般 |
出于 实现成本和应用场景 考量,我们这次选择 LIamaIndex + OpenAI API 方案实现需求。
LlamaIndex
LlamaIndex:LlamaIndex (GPT Index) 是一个提供中央接口以将您的 LLM(large language model,大语言模型)与外部数据连接起来的项目。
我们通过栗子,来理解它解决ChatGPT的什么问题(如下图所示):
可以看到,ChatGPT给了一个错误的答案,我们需要喂给它正确的栗子矫正(如下图所示):
那么,我们在输入问题的同时,将知识库输入给ChatGPT,问答不就准确了?
不行,原因有两个:
- 每次请求ChatGPT是按token收费(1token≈0.73单词), $0.002/1K tokens,价格不菲。
- 每次请求ChatGPT是有token最多4096个。
聪明的小伙伴,可能想到了,那么每次询问ChatGPT像栗子一样,带上与问题关联性强的知识,问题就迎刃而解了?是的,这就是LlamaIndex所提供的!
技术实现
LlamaIndex 运作流程:
- 将知识库文本,转为index.json
- 接收用户提问,通过index.json筛选关联性知识内容,一并发送给ChatGTP
- 接收ChatGPT回传,对用户回复
技术实现细节如图所示:
具体代码及注释,我放在了colab上面(智能客服实现),提示prompt 与 回应completion,也可以在线编辑测试。大家有兴趣可以在线运行试试。
注:Colab是由Google提供的基于云端的开发环境,允许用户在Web浏览器中编写、运行和共享类似Jupyter Notebook的代码,提供了强大的计算资源。
结果展示
借助更丰富的知识库建设,以及客服人工强化学习,效果会更好。
目前在与客服协作训练,待通过后,起个后端服务,就可以供客户端调用了~
经验总结
本文介绍了如何通过 LlamaIndex + ChatGPT(OpenAI API) 技术方案,实现智能客服机器人。相比较于传统的社交客服形式,智能客服机器人可以提高答案可读性和检索体验,同时提升知识库的可维护性。
具体讲解了 LlamaIndex 的运作流程以及技术实现细节,并提供了 Colab 上的代码示例。
彩蛋:上面两段总结是ChatGPT自动生成的 :)
产品思路再做延伸,通过特定场景(帮助中心、社群自动回复)知识库训练,都可以让AI智能客服大展身手,广袤天地,AI大有可为!
参考资料
开源项目 LlamaIndex docs
Build AI chatbot with custom knowledge base using OpenAI API and GPT Index Irina Nik
OpenAI API reference [Fine-tunes] docs
写了技术文档别人不看?用GPT+llama_index解决! 浩