NebulaGraph助力赋能大模型

系统介绍

项目背景

ChatGPT是人类科技史上的里程碑事件,在短短几个月席卷全球,速度之快超出人类最狂野的想象。ChatGPT证明了通过一个具有高水平结构复杂性和大量参数的大模型(foundation model,又称为“基础模型”)可以实现深度学习。

ChatGPT的底层驱动技术是大模型,大模型是指具有大量参数和复杂结构的机器学习模型。这些模型可以应用于处理大规模的数据和复杂的问题。

大模型具有以下优点:

  • 处理大规模数据能力强。大模型可以处理海量数据,从而提高机器学习模型的准确性和泛化能力。

  • 处理复杂问题能力强。大模型具有更高的复杂度和更强的灵活性,可以处理更加复杂的问题。

  • 具有更高的准确率和性能。大模型具有更多的参数和更为复杂的结构,能够更加准确地表达数据分布和学习到更复杂的特征,从而提高模型的准确率和性能。

科学技术是第一生产力,中国所有的互联网企业以及平台都在向大模型转型靠近,争取为客户提供更加优质和智能的服务。

业务现状

目前 AI系统平台普通具有以下特征。

  • 数据集成方面,平台有的放矢整合半结构数据、非结构化数据、业务数据、机器数据等四面八方的数据。

  • 数据分层方面,平台按照贴源层、数据域、明细层、汇聚层、服务层划分。

  • 数据建模方面,平台谨遵星型对数据进行建模,落地实现都是用ClickHouse、MySQL或者HIVE、SPARK相关产品。

  • 模型评估方面,数据集兵分两路都训练集和测试集,训练集用于训练模型准确性,测试集用于评估模型的性能

  • 数据存储计算,倘若存储不足,算力不够,升级数仓,加大硬件投入,引入更好的服务器。

  • 流程管控方面,针对数据生命周期各个环节阶段进行维护管理,包括数据设计、数据创建、数据使用、数据增强、数据维护。

  • AI参数方面,基于参数及机器函数的版本管理,反复调优。

业务挑战

AI平台汇聚用户四面八方的数据,包括生活、工作方面,结合互联网最近一段发生的事件,以及用户在系统平台的历史数据。搜刮的数据在采集后统一进行清洗、编排、分类别目,切成不同粒度的进行加工,加工的过程通过大模型得到质量的强化,可以迅速得到应用。

目前的大模型技术使用的还是大数据技术栈,数据架构依靠的还是数仓,有些企业引用数据湖的概念,通过数据统一虚拟化引用各种数据源,对原始数据质量进行处理,完成初步数据选择,再投入数据下一步的历练,历练继续下一步的提纯。

数据分层根据业务的需求形成粒度粗细不一样的层次,基于人工智能应用,往往会加工成丰富的大宽表,便于进行分类、聚类、逻辑回归的模型识别。其间,大宽表的变量和字段数值会进一步转换成离散变量或集中变量,便于函数运行。

数据模型在概念建模、逻辑模型虽然丰富,但是最终落地应用却是布署在HIVE、MySQL或者其它MPP数据库上,关联运算时是大表联大表耗费较多的时间,在路径算法上选择莫衷一是,试错成本较大。特别是与度计算、中心性计算、相似度计算、连通性计算、排序计算、传播计算的业务,需要较灵活的模型。

业务痛点

  • 广泛用户投诉当前的AI处理广泛存在感知迟钝、处理缓慢、反馈延知的问题,即使增加服务器,投入再多的GPU算力也没有显著的提升。
  • 无法准确感知用户的情绪状态,数据模型延用以前的数据加工方式 ,多方汇聚 ,重汇合并,新旧对比,最后用户画像,结果不如人意,多有偏差。
  • 无法实时状态基于当前社会状态环境察觉用户的用意,互联网数据协同需要从底层将所有的数据初始化,重新量化,重新评估模型,重新参数调优,需要花费较长的时间。
  • AI的智能程度依赖数据资源的支撑,当前数据维度及数据结构无法满足应用需求。
  • 没有与客户群体建立高质量的反馈机制,根据与客户需求持续灵活推送客户需要的东西。

为什么选择图数据库

数据库发展的历史长河中,关系型数据库绝对是一个伟大的里程碑,关系型数据库是SQL为基础的,SQL又是立根于关系代数的基础上的。后来业界发起了轰轰烈烈的去SQL数据库运动,世界万物除了SQL的方式 ,也可以用NOSQL的方式去解决问题,而且NOSQL是专向性的解决特定的问题 ,随着时间的推移又掀起NEWSQL革命,大伙发现SQL其实还是很重要,SQL重新回到大众视线,并且地位进一步的提高。

什么样的情况下SQL好,什么时候用NOSQL? 孰重孰轻?本质逻辑概念有什么区别?

关系代数底层是并、差、选择、投影、笛卡尔积、连接的集合运算,关系数据库对数据集合的理解,将相关的数据声明为一个二维表,每一个二维表对应一个表空间,表空间决定二维表的上限和范围。

针对二维表的搜索,对于TP的随机读写,客户端会往服务端高频读写页面数据,倘若读不到,内存就会硬盘上读 取数据,二维表为了和系统内存适配,页面数据普遍是8KB,而且是行式存储,一次IO会获取较多的信息。

面对AP,分析场影经常会多表关联涉及笛卡尔积和连接运算,大表关联大表会造成较大的计算,倘若资源不足,内存会溢出造 成报错。为了提高计算能力,业界想了很多办法,例如分布式、MPP、预计算、预排序、向量化计算、高浓度列式、代码生成、CPU绑核等等,甚至去掉一部分关系代数特征。

例如hbase和Clickhouse,就是丢弃部分关系代数的例子 。hbase只支持单表查询功能,即使实现Phoenix,也没有办法完成多表关联查询。hbase支持key-value的建模 方式,根据范围的key,找到唯一的value。优点是hbase的扩展性更强,随查IO读写一部数据可以无限提高,扩展性极强。Clickhouse仅支持星型模型,稍策复杂的TPC-DS基准测试就不支持了,复杂的TPC-H测试就更不用说了。Clickhouse建模时必须要指定分区、主键 、索引,再通过压缩、编码,计算时可以获取较大的性能。

始终没有改变的是关系代数的数据集合,关系代数的秘诀是具有相同标识的数据在一起,再根据逻辑进行业务关联。尽管关系代数面对TP和AP都有不俗的解决效果,但是牺牲代价是忽略数据之间的微秒关系,数据都融合在一个集合空间里面,无法发现底层内部数据的关联关系,只能通过试错的方式去排查。

NebulaGraph 的底层与关系代数没有关系,它是一个基于图模型的NOSQL数据库。

图模型是高维的角度出发,从不同的角度对数据进行关联、穿透、下钻和聚合。数据起初是点,织点成线,线再连成面,关系代数是面的数据集合方法,点是最初数据的呈现形态。图模型是点的方式 对数据进行组织管理的,图模型更容易发现数据之间千丝万缕的关系,每个点都可以与其它点直接互联或者间接互联。而且图形管理界面上,点和点之间的关系看上去更加清晰,更加容易进行洞悉观察。

图建模方面会有自己专属语言,关系模型强调库、表、schema、主键、外键、索引,并配套存储过程和函数,图模型则强调顶点和边,顶点是模型的高度抽象,边则是模型的关系概括。

图的表达方式与AI思维非常接近, 而且与人类大脑神经元网络存储与认知事物有极大的相通性。人们思考总是不断地在关联、发散、聚焦,再关联、再发散、再聚焦。当我们需要确定一个目标的时候,在寻找的过程中总是不断的确认再确认,没有一个固定的答案,答案总是不断在变化。图数据库上可以实现与人脑同样的运作方式,把图数据库充分利用好,越能表达系统平台的智能 。

大模型架构方案选型

考虑因素

把旧平台改适配成含图模型的新平台,粗略估算有以下需要考虑的问题

  1. 业务数据匹配的模型处理能力
  2. 数据从旧平台输出并流入新平台的图数据库的解决方案
  3. 假设旧平台使用图计算处理数据,如何适配进入新的图数据库中
  4. 离线数据加载入库以及实时数据入库
  5. 图数据库的生态繁荣程度
  6. 图数据建模较复杂,是否支持开放式的图形化界面建模
  7. 关系模型到图模型的转换
  8. 针对关键数据资产用户信息数据、产品信息数据、市场信息数据、资产信息数据的建模模板
  9. 大规模的数据导入性能
  10. 图数据库算法满足度
  11. 自主研发能力可控能力,有没有自己的技术发展路径?
  12. 编程接口的丰富程度,是否支持主流nGQL
  13. 产品的成熟案例个数及应用场景

NebulaGraph优势亮点

NebulaGraph是一款开源的分布式架构的图形数据库,具有高可用、高扩展、高性能的特点,定位于数据智能计算,专注于AI分析业务场景, 同时也有一些AP功能和TP功能 ,但它不擅长即席查询、漏斗分析、多维分析业务场景 ,也不擅长转帐 、支付、交易、清算、核算的业务场景,它更擅长的是社交网络、风险控制、公共安全、知识图谱等业务场景,因为NebulaGraph可以提供多跳查询、并发查询的能力。

自主研发可控

NebulaGraph具备内核源代码控制能力,产品发展路径有着清晰的轨迹方向, 开发社区活跃,进度计划可以计日工程,按天推进。

图模型

NebulaGraph采用图模型对业务进行建模 ,可以从多种角度发现业务实体之间的关系,发现业务潜在性的需求。

开源

NebulaGraph 是在 Apache 2.0 条款下开发的。越来越多的人,如数据库开发人员、数据科学家、安全专家、算法工程师,都参与到 NebulaGraph 的设计和开发中。

高性能

基于图数据库的特性使用 C++ 编写的 NebulaGraph,可以提供毫秒级查询,并且可以基于分布式扩展性能。

易扩展

NebulaGraph 采用 shared-nothing 架构,支持在线进行扩容缩容。

易开发

NebulaGraph 提供 Java、Python、C++ 和 Go 等流行编程语言的客户端。

高可靠访问控制

NebulaGraph 支持严格的角色访问控制和 LDAP(Lightweight Directory Access Protocol)等外部认证服务,能够有效提高数据安全性。

生态多样化

NebulaGraph 开放了越来越多的原生工具,支持监控管理界面NebulaGraph Studio,支持命令行访问NebulaGraph Console,支持数据复制访问NebulaGraph Exchange。

此外,NebulaGraph 还具备与 Spark、Flink、HBase 完成适配兼的能力。

兼容 openCypher 查询语言

NebulaGraph 支持国际标准的 nGQL,是一种声明性的、部分兼容 openCypher 的文本查询语言,易于理解和使用。

面向未来硬件,读写平衡

NebulaGraph 是一个面向 SSD 设计的产品,相比于基于 HDD + 大内存的产品,更适合面向未来的硬件趋势,也更容易做到读写平衡。

图形界面数据建模

用户可以轻松地在 NebulaGraph 中建立数据模型,不必将数据强制转换为关系表。而且可以自由增加、更新和删除属性。

广受欢迎

腾讯、美团、京东、快手、360 等科技巨头都在使用 NebulaGraph。

适用场景

NebulaGraph 可用于各种基于图的业务场景。为节约转换各类数据到关系型数据库的时间,以及避免复杂查询,建议使用 NebulaGraph。

支持算法

NebulaGraph 支持以下算法

算法名 说明 应用场景 属性名称 属性数据类型
PageRank 页面排序 网页排序、重点节点挖掘 pagerank double/string
Louvain 鲁汶 社团挖掘、层次化聚类 louvain int/string
KCore K 核 社区发现、金融风控 kcore int/string
LabelPropagation 标签传播 资讯传播、广告推荐、社区发现 lpa int/string
Hanp 标签传播进阶版 社区发现、推荐 hanp int/string
ConnectedComponent 弱联通分量 社区发现、孤岛发现 cc int/string
StronglyConnectedComponent 强联通分量 社区发现 scc int/string
ShortestPath 最短路径 路径规划、网络规划 shortestpath string
TriangleCount 三角形计数 网络结构分析 trianglecount int/string
GraphTriangleCount 全图三角形计数 网络结构及紧密程度分析 count int
BetweennessCentrality 中介中心性 关键节点挖掘,节点影响力计算 betweenness double/string
ClosenessCentrality 紧密中心性 关键节点挖掘、节点影响力计算 closeness double/string
DegreeStatic 度统计 图结构分析 degree,inDegree,outDegree int/string
ClusteringCoefficient 聚集系数 推荐、电信诈骗分析 clustercoefficient double/string
Jaccard 杰卡德相似度计算 相似度计算、推荐 jaccard string
BFS 广度优先遍历 层序遍历、最短路径规划 bfs string
DFS 深度优先遍历 层序遍历、最短路径规划 dfs string
Node2Vec - 图分类 node2vec string

组件角色

NebulaGraph 由三种角色构成:协调节点Meta Service、计算节点Graph Service和存储节点Storage Service

Meta Service

在 Nebula Graph 架构中,Meta 服务是由 nebula-metad 进程提供的,负责数据管理,例如 Schema 操作、集群管 理和⽤户权限管理等。

leader 和 follower 的数据通过 Raft 协议保持⼀致,因此 leader 故障和选举新 leader 不会导致数据不⼀致。

管理⽤户账号
Meta 服务中存储了⽤户的账号和权限信息,当客户端通过账号发送请求给Meta 服务,Meta 服务会检查账号信息,以及该账号是否
有对应的请求权限。
管理分⽚
Meta 服务负责存储和管理分⽚的位置信息,并且保证分⽚的负载均衡。
管理图空间
Nebula Graph ⽀持多个图空间,不同图空间内的数据是安全隔离的。Meta 服务存储所有图空间的元数据(⾮完整数据),并跟踪数据的变更,例如增加或删除图空间。
管理 Schema 信息
Nebula Graph 是强类型图数据库,它的 Schema 包括 Tag、Edge type、Tag 属性和 Edge type 属性。
Meta 服务中存储了 Schema 信息,同时还负责 Schema 的添加、修改和删除,并记录它们的版本。
管理基于TTL 的数据回收
Meta 服务提供基于 TTL(Time To Live) 的⾃动数据回收和空间回收。
管理作业
Meta 服务中的作业管理模块负责作业的创建、排队、查询和删除。

Graph Service
Graph 服务是由 nebula-graphd 进程提供,Storage 服务是由 nebula-storaged 进程提供。
Graph服务 Graph 服务主要负责处理查询请求,包括解析查询语句、校验语句、⽣成执⾏计划以及按照执⾏计划执⾏四个⼤步骤。

Storage Service
Storage服务的最上层,定义了⼀系列和图相关的API。API请求会在这⼀层被翻译成⼀组针对的KV操作,例如:
getNeighbors:查询⼀批点的出边或者⼊边,返回边以及对应的属性,并且⽀持条件过滤。
insert vertex/edge:插⼊⼀条点或者边及其属性。
getProps:获取⼀个点或者⼀条边的属性。
正是这⼀层的存在,使得Storage服务变成了真正的图存储,否则Storage服务只是⼀个KV存储服务。
Consensus层
Storage服务的中间层,实现了,保证强⼀致性和⾼可⽤性。
Storage Engine层

Storage服务的最底层,是⼀个单机版本地存储引擎,提供对本地数据的get、put、scan等操作。相关接⼝存储
在KVStore.h和KVEngine.h⽂件,⽤户可以根据业务需求定制开发相关的本地存储插件

收益成果

AI系统平台通过加入图模型管理能力,对相关数据资产进行图化后,整体上提高平台的战斗能力,系统平台的处理能力得到质的飞跃。

  1. 扩展大模型的灵活能力,通过增加图数据库,补充可以存储复杂的实体类型并定义之间的关系,例如社交网络、路线优化等复杂模型。
  2. 复杂关系处理性能:通过图数据库的遍历方式和遍历关系,使用广度优先搜索和深度优先搜索算法,提供更快速、更精确的关系查询和分析。
  3. 快速的遍历效果:对于图模型数据,能够对图数据进行快速存储、索引和查询,降低了大数据量和高并发访问时的数据处理成本和时间成本。
  4. AI识别更高:更加专注于应用场景的需求,更能识别数据之间的关系,为用户提供更好的服务和响应内容。
  5. 更好地支持非结构化数据:图数据库比关系型数据更擅长处理半结构化数据和非结构化数据的,实现更加灵活和高效的数据管理和查询
5 个赞