简介
近几年来,阿里云作为国内最大的云计算服务提供商,随着用户量的急剧上升,产品规模的迅速扩大,用户的服务需求也随之攀升,如何利用阿里云人工智能技术高效的解决用户的问题?
在2016年年初,阿里云服务团队和ET人工智能团队合作,启动了云博士机器人的项目,旨在用人工智能技术提升用户的服务体验。去年11月,阿里云的智能服务机器人正式对外提供服务。
云博士(Dr. Cloud)的官网地址为https://drcloud.aliyun.com,主要功能是通过大数据分析来猜测用户可能遇到的问题并给出解决方案,通过人工智能的技术提供秒级的在线智能问答服务。
技术架构
- 人工智能算法:用户输入问题后,引擎层调用阿里云ET的问答引擎获取相应答案,根据业务需要对备选答案进行再次处理和答案可信度计算,最后依据设置的可信度阈值来判断答案是否能解决用户的问题。
- 缓存处理:为了保证高并发情况下的秒级应答体验,云博士使用缓存机制提升性能。在流量比较大的时候,云博士把问答输入和输出存入缓存,之后来自用户的问题如果命中缓存中的问答输入,云博士会把缓存中对应的答案直接返回给用户。
- 数据封装:把从数据库和调用外部服务获取的各种数据进行封装,输出给Portal层。
- 调度:Portal层通过调用HSF(类似Dubbo服务)接口,把请求分发到引擎层不同的服务器中实现调度均衡。其中job调度利用DTS(阿里自研的任务调度服务,类似Quartz)和ODPS(大数据计算服务)来运行相应的job。
- 负载控制:当流量陡然增大时,为了防止服务超负荷运转出现问题甚至宕机,引擎层还做了负载控制,在超过系统承受范围时做限流,保证服务能够正常运转。
- 提供服务调用:系统通过HTTP和HSF接口为Portal层提供服务调用。
- 数据分析:把云博士所有问答记录取出进行分析,以帮助算法和数据的优化。
- 算法数据更新:云博士需要通过不断地进行算法优化和新数据的训练,才能变得更加智能,引擎层会每天不断地推送新的数据去训练相应的模型。
数据持久层:是云博士进行数据持久化的架构层,数据主要以四个方式持久化:
- RDS: 即MySQL数据库,主要存放的是需要经常使用,对于读写实时性要求高的数据。
- ODPS: 一般存放的是离线任务执行后生成的数据,对于读写的实时性要求并不高。离线任务生成的部分数据会同步到RDS,供引擎层使用。
- OSS: 主要存放训练算法模型的训练集数据。
- Redis:主要存放缓存数据,比如为了提升性能的问答输入和答案输出。
外部数据来源层:调用外部系统获取相应的数据使得云博士更好的进行状态判定和问题排查,比如调用账单系统查看用户有没有因为欠费而导致服务处于异常状态,调用黑洞清洗查看用户实例有没有处于黑洞中等等。
除了上面的四层之外,云博士的管控台主要有如下几个功能:
- 语料编辑:供人工智能训练师编辑语料。
- 数据运维:实时监控云博士的各种指标,如准确率、PV、UV、、响应时间和一些业务指标。
- 数据闭环:提升云博士问答准确率,如处理用户提交的对于云博士答案的反馈,进行数据挖掘等。
问答流程
在云博士底层有一套完整的知识管理系统,所以云博士引入了知识点的概念。在云博士的系统中,知识点主要包括以下部分:
- 知识点标题:如 “如何连接RDS数据库?”
- 扩展问句集: 因为不同的用户会有不同的问法,有些问法之间算法相似度并不高,需要算法把同一个知识点不同问法都放入扩展问句集中。
- 答案:知识点中的问题解决方案。
- 产品域:知识点所属产品。
简单来说,用户问题会和训练集中的知识点标题和扩展问句进行相似度计算,把相似度高的知识点作为答案返回。
数据闭环
准确率是云博士的一个极其重要的核心指标,直接影响云博士的业务效果,提升准确率也是云博士一项贯穿始终的重要工作。云博士第一版上线之后,通过阿里云售后工程师打标数据获取到V1.0版的数据去训练算法,然后根据云博士线上的业务效果,自动筛选效果差的数据,同时把不能返回答案的问题进行聚类,通过人工审核、修改扩展问句和新增知识点等方式,对数据进行了优化,形成闭环,从而提升业务效果。
目前,云博士以智能问答机器人的形式秒级响应用户的问题,还在用户的工单排队期间提前提供建议的解决方案,提升用户的体验。更为重要的是,通过客户的反馈,云博士用强化正确结果和调整负面评价结果的方式持续提升对云计算的理解,实现自学习和成长。最终,阿里云希望通过应用人工智能技术,真正为用户提供极致的服务体验。