悦数图数据库

美团:图数据库平台建设及业务实践

基于图数据库来管理千亿级别的图数据,解决图数据存储以及多跳查询问题

业务挑战:UGC 内容爆发增长,引发海量图数据存储查询需求

随着 UGC、PGC 内容的爆发,美团 APP 上的数据资产每天都在大量增长。公司有美食图谱、商品图谱在内的近十个领域知识图谱,约千亿级别数据,传统的关系型数据库、NoSQL 数据库虽然可以用来存储图数据,但是不能很好处理图上多跳查询这一高频操作。

因此,美团亟需建立统一的知识图谱平台来容纳数据集的内在关系,并通过图技术来提高信息访问能力,帮助亿万客户在搜索及浏览过程中快速找到他们最需要的产品或服务。

选择 悦数图数据库:统一管理全平台千亿量级图数据

通过搭建图数据库平台,美团希望实现业务对图数据的一站式自助管理功能。如果某个业务要使用这种图数据库能力,那么业务方可以在这个平台上自助地创建图数据库集群、创建图的 Schema、导入图数据、配置导入数据的执行计划、引入平台提供的 SDK 对数据进行操作,平台侧主要负责各业务方图数据库集群的稳定性。

美团x悦数图数据库-架构图

目前,美团内部有三、四十个业务在平台上真正落地,基本能满足各个业务方的需求。

应用场景

应用1:智能助理

基于美团商户数据、用户评论构建的餐饮娱乐知识图谱,覆盖美食、酒店、旅游等领域,包含 poi、category、dish 等 13 类实体和 22 类关系。目前点边数量大概在百亿级别,数据是 T+1 全量更新,主要用于解决搜索或者智能助理里 KBQA(全称:Knowledge Based Question Answer,即基于知识库问答)类的问题。

核心处理流程是通过 NLP 算法识别关系和实体后构造出图查询语句,再到图数据库获取数据,主要应用于用户在特定环境下搜索,例如:商场找店 、标签找店的场景。

美团x悦数图数据库-智能助理

比如,某个用户想知道望京新荟城这个商场有没有海底捞,智能助理就能快速查出结果告诉用户。或者用户想知道望京 SOHO 附近有没有适合情侣约会的餐厅,只要多加几个场景标签,系统都能给你查找出来。

应用2:搜索召回

主要是基于医美商家信息构建医美知识图谱,包含 9 类实体和 13 类关系,点边数量在百万级别,同样也是 T+1 全量更新。主要用于大搜底层实时召回,返回与查询相关的商户、产品或医生信息,解决医美类搜索词少结果、无结果问题。

比如,某个用户搜“啤酒肚”这种症状、或者“润百颜”这类品牌,系统都能给他召回相关的医美门店。

美团x悦数图数据库-搜索召回

应用3:推荐理由

图谱推荐理由的数据主要来自用户的画像信息、商户的特征信息、用户半年内收藏/购买行为,现在的数据量级是 10 亿级别, T+1 全量更新。这个项目的目标是给出美食列表推荐商户的可解释理由。

由于现在美团 App 和点评 App 上默认的商户推荐列表是由深度学习模型生成的,但模型并不会给出生成这个列表的理由,缺少可解释性。然而在图谱里用户跟商户之间天然存在多条连通路径,因此希望能选出一条合适路径来生成推荐理由,在 App 界面上展示给用户推荐某家店的原因。

比如,我们可以基于用户的协同过滤算法来生成推荐理由,在家乡、消费水平、偏好类目、偏好菜系等多个组合维度中找出多条路径,然后给这些路径打分,选出一条分值较高的路径,之后按照特定 pattern 产出推荐理由。通过上述方式,就可以获得「在北京喜欢北京菜的山东老乡都说这家店很赞」,或者「广州老乡都中意他家的正宗北京炸酱面」这类理由。

美团x悦数图数据库-推荐理由

应用4:代码依赖分析

主要是把公司里的代码库中代码依赖关系写到图数据库。由于公司代码库里有很多服务代码,这些服务都会有对外提供的接口,这些接口的实现依赖于该服务中某些类的成员函数,这些类的成员函数又依赖了本类的成员变量、成员函数、或者其它类的成员函数,那么它们之间的依赖关系就形成了一张图。

典型的应用场景是 QA 的精准测试,当 RD 完成需求并向公司的代码仓库提交了他的 pr 后,这些更改会实时地写到图数据库中,所以 RD 就能查到他所写的代码影响了哪些外部接口,并且能展示出调用路径来。如果 RD 本来是要改接口 A 的行为,他改了很多东西,但是他可能并不知道他改的东西也会影响到对外接口 B、C、D,这时候就可以用代码依赖分析来做个 Check。

美团x悦数图数据库-依赖分析

应用5:服务治理

由于美团内部有几十万个微服务,这些微服务之间存在互相调用关系,这些调用关系形成了一张图。我们把这些调用关系实时写入图数据库里,然后做一些服务链路治理和告警优化工作。

美团x悦数图数据库-服务治理

应用6:数据血缘

通过把数仓中 ETL 任务的依赖关系写到了图数据库中,用来查找数据任务的上下游依赖。比如说,通过这个 FIND NOLOOP PATH FROM hash('task1') OVER depend WHERE depend.type == '强依赖' UPTO 50 STEPS 语句找出 task1 这个任务的所有强依赖路径。这里,我们针对 悦数图数据库 官方的 FIND PATH 功能做了一些加强,添加了无环路径的检索跟 WHERE 语句过滤。

美团x悦数图数据库-数据血缘

使用收益:一站式管理图数据,提升前台用户体验+后台管理效率

美团点评通过搭建图数据库管理平台,不仅实现了更丰富多样的图数据服务,而且实现了图数据处理能力显著提升。基于悦数图数据库可以实现每小时百亿量级数据导入,实时写入多集群,过程中可同步生成全量数据版本并做平滑切换,确保数据不重不漏不延时,显著提升了亿级 APP 用户的搜索和浏览体验。

目前,美团的图数据平台在前-中-后台的多个场景,如智能助理、搜素推荐、内容召回、数据治理、依赖分析等都有广泛的应用。

用户评价

在接触悦数之前,我们的图谱项目已经试用过多个知名图数据库,包括 Neo4j、JanusGraph、DGraph 这些在 DB-Engine 上排名非常靠前的产品,但在规模和性能上没法满足我们的要求。直到我们发现悦数图数据库,它架构设计简洁可扩展,且基于 C++ 开发,性能特别强劲。悦数的同学们也非常给力靠谱,我们正在通力合作,把更多的知识图谱项目迁移到悦数图数据库上面来。

--- 美团点评AI平台技术专家 赵登昌

logo

公司介绍

美团是一家本地生活互联网平台,他们的 NLP 团队基于悦数图数据库搭建了自己的图数据库平台,目前已经有接近 40 条美团内部的业务线接入使用,包括智能助理、搜索召回等。