用户案例
携程:NebulaGraph 信息图谱在携程酒店的应用
本文整理自 携程酒店-研发部工程师 在 nMeetup 的分享, 详情见 论坛
公司简介
携程集团 (Trip.com Group) 是全球领先的一站式旅行平台,公司旗下的平台可面向全球用户提供一套完整的旅行产品、 服务及差异化的旅行内容。
“对于用户的每一次查询,都能根据其意图做到相应的场景和产品的匹配”,是携程酒店技术团队的目标。要达到前端各个展示位内容的场景化,需要解决三个问题,一个是场景与信息之间缺少关联;二是目前的信息丰富度没有办法支撑场景化;三是系统的运营效率在原有的架构下不够高效。
基于此,携程希望基于图数据技术建立一个高效的数据存储&管理平台,能够明确数据定义和场景化展示规则,同时提高开发效率,提升用户浏览体验和消费决策速度。
解决方案
携程旅游-总体技术框架 :
第一部分是意图识别,主要通过用户的历史偏好和实时数据来识别用户的具体意图。
第二部分是信息展示逻辑下沉,前端有十多个展示位,当中的展示逻辑分别有不同的信息服务维护,在这个模块我们将这些展示位的逻辑统一收口,信息之间便能做到联动。此外,还能达到去重、去冲突等作用,还可以整体地对排序召回等逻辑进行规划。
第三部分是关系匹配,建立场景与数据之间的匹配关系,这里的数据涉及存量的基础信息数据,通过挖掘得到的增量数据。前期主要通过人工运维的方式将它们与场景建立一个关联,后续则会使用 NLP 手段来自动建立联系。而数据与数据之间、数据与场景之间的这些关系,则会使用 NebulaGraph 作为存储和检索的媒介。
第四部分是信息挖掘,即从各类的数据源中抽取出与场景相关联的信息,又或者是酒店的亮点信息。之前提过的点评例子,在点评中找到与场景相关联的句子,从中抽取出通顺、优美的短句,把它们作为场景化关联的数据源,在前端进行展示,从而丰富数据源。在信息挖掘模块,总体的流程会涉及 NLP 相关的数据标注、模型训练、badcase 反馈、标注再训练。
应用场景:预订信息场景化
携程酒店APP希望前端各个展示位通过与场景相关联,达到用户预订全流程信息场景化的效果。
以滑雪度假的用户场景为例,作为服务提供方自然期望前端的各个展示位都能与滑雪相关联——如图,酒店列表页中酒店的短标签位展示了一个滑雪套餐,酒店的榜单位展示的是当前酒店在当地的滑雪榜排名,酒店的展示图片为雪景下的酒店。
酒店详情页中,酒店相册所展示内容也是雪景。相册排序第一的分类为【滑雪精选】,而酒店的其他短标签位榜单同列表页的逻辑类似,展示和滑雪相关的内容。在地理信息位则展示与最近的滑雪场的距离。
场景与展示位之间是如何建立关系的呢?首先要挖掘场景,找到凸显酒店特色或吸引用户的点,接着以场景为基础,找到与场景相联动的一个展示位;场景与合适的展示位关联可以达到更好的展示效果。最后,通过展示位拓展到相应的数据,而对应的数据可能是已存在或者是为特定场景新增的数据。
从大量 UGC、酒店描述内容中找到与场景相关联的信息是比较耗费资源的工作。这个时候,通过图技术将业务数据以图谱的形式存储,再使用 NLP(自然语言处理) 相关技术便能提高效率。通过预处理点评、图文秀等信息,得到子句、短句放入标注模块,再注明标签来源于「热搜词」或者「人工定义」等等渠道,最后产生的数据进行人工抽样检查之后就可以使用。
用户收益
通过信息图谱结合 NLP 等技术抽取信息标注内容填充到场景展示位,大大增加了前端内容的丰富程度,也大幅度提升了数据产生的效率。同时,能够高性能地处理超大规模数据集,离不开 NebulaGraph 的可靠支持。
在携程上线前做的性能测试中,NebulaGraph 在 250+ 万点、2 亿多条边的情况下,一度查找在 1 万左右 QPS在 20 ms左右,两度查找在 7,000 左右 QPS 时在 32 ms 左右,有力保障了前端业务的实现。
目前,在酒店排序方面,携程酒店已经做到了针对不同的用户群体和使用场景给出定制化服务;在不同的场景下,酒店列表页面会有不同的排序,获得了很高的用户价值提升。而携程酒店通过在前端展示场景化内容,也降低用户决策的费力度。