暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

hugegraph-ai 重磅发布!!HugeGraph + LLM 场景的深入探索

Apache HugeGraph 2024-04-15
1703

2023 年在见证了大语言模型(Large Language Models, LLMs)井喷式的发展之后,今年大家开始更加聚焦于大模型在特定行业领域的实际应用和成效,而随着技术的愈加成熟,大模型也展现出了其在各个垂直领域解决实际问题、降本增效和创新服务等方面的巨大潜力。


在此背景下,Apache HugeGraph 社区的同学也在积极探索结合 LLM 和 HugeGraph 的解决方案及应用场景,希望能够借助 LLM 解决图数据库应用场景中关于知识图谱构建、知识问答、知识管理等方面的难题,为用户和开发者提供更多的便利。基于此,社区在去年九月提出了创建 hugegraph-ai 仓库(#2318)的构想。经过一段时间的筹备,近期成功发布了 hugegraph-ai 的首个 beta 版本,hugegraph-llm 是其中非常重要的一个子模块。

目前,社区关于 HugeGraph 与 LLM 集成的探索,主要集中在数据和知识的构建、管理与应用这些方面:

  • 降低知识图谱(Knowledge Graph,KG)构建的成本,提升效率;

  • 提升基于 RAG 的知识问答中,相关信息的召回率、准确率;

  • 降低 HugeGraph 的上手门槛/使用成本,包括图检索、图计算、图数据库管理等方面。


01

 图数据库 & 知识图谱

               Graph Database and Knowledge Graph


上面提到的几个场景都涉及到了知识图谱,知识图谱是结构化的语义知识库,用于以符号形式描述物理世界中的概念及其相互关系,其基本组成单位是“实体-关系-实体”三元组,以及“实体”及其相关“属性-值”对,实体间通过关系相互联结,构成网状的知识结构。

图数据库作为一种针对图结构进行数据存储、检索和处理的数据库系统,其天生具备高效处理多对多关系和复杂网络结构的能力,因此图数据库也自然成为了知识图谱构建和查询的重要技术支持。

在 HugeGraph 的助力下,用户能够快速构建和存储百亿级规模知识图谱,高效地检索图谱中的实体、属性、关系,以及进行复杂的图推理计算和分析操作,进一步提升了知识图谱在信息检索、推荐系统、自然语言处理等领域的应用价值。

总的来说,图数据库是知识图谱构建和查询的关键基础设施,知识图谱则利用图数据库的技术优势,实现了知识的图形化表示和高效管理

因此,“知识图谱 + 大模型”的结合在实际落地时,是离不开底层图数据库支撑的,而 hugegraph-llm 的目的就是为用户提供一套便捷、低成本的落地方案,使用户能够在 HugeGraph 图数据库的基础上,轻松利用 LLM 技术进行知识图谱的构建与知识的管理和应用。

02

 大模型带来的改变

               The convenience brought by LLM


当我们在谈论图数据库与大模型的集成时,很多时候也是在讨论大模型+知识图谱、大模型+数据库的结合方案,业内有很多这类关于大模型与其他组件协同工作的优秀案例,这些内容给 hugegraph-llm 的构建带来很大的启发。


《Unifying Large Language Models and Knowledge Graphs》


LLM 与知识图谱之间存在互相辅助和互相促进的关系,LLM 提供强大的自然语言理解和生成能力,而知识图谱则提供结构化的事实知识,两者结合能够增强模型在理解复杂语境和进行精确信息检索方面的表现。下面是一些 LLM 对知识图谱增强的案例:

  1. 知识图谱嵌入(KGE):传统的知识图谱嵌入方法主要依赖于知识图谱的结构信息,但这些方法难以表示未见过的实体和长尾关系。为了解决这一问题,可以使用 LLM 来编码实体和关系的文本描述,从而丰富知识图谱的表征。通过这种方式,LLM 能够帮助知识图谱嵌入更好地捕捉实体和关系的语义信息,提高嵌入的质量。

  2. 知识图谱补全(KGC)知识图谱补全任务的目标是推断知识图谱中缺失的事实。可以将 LLM 整合到 KGC 方法中,以编码文本或生成事实,从而提高知识图谱补全的性能。根据 LLM 的使用方式,这些方法可以分为两类:将 LLM 用作编码器(PaE)和将 LLM 用作生成器(PaG)。

  3. 知识图谱构建:知识图谱构建包括识别实体及实体间的关系,通常涉及多个阶段,如实体发现、共指消解和关系提取。

  4. 知识图谱到文本生成(KG-to-text)利用 LLM 的知识来增强知识图谱到文本的生成过程。目标是输入知识图谱子图信息,生成准确的高质量文本,以解决训练数据不足或生成质量差的问题。通过这种方式,LLM 能够帮助生成更自然、更符合知识图谱结构的文本内容。

  5. 知识图谱问答(KGQA)知识图谱问答任务解决的问题是如何将自然语言问题与结构化知识图谱相结合。论文中给出了一种使用 LLM 作为 Query 的实体/关系提取器和答案推理器的方案,以此提高 KGQA 的性能。



《DB-GPT: Empowering Database Interactions with Private Large Language Models》

除了知识图谱领域,数据库领域也有很多与大模型结合的优秀案例,例如 DB-GPT。从上面 DB-GPT 的架构图可以看到,DB-GPT 融合了检索增强生成( RAG)、Fine-tuned Text-to-SQL 、查询响应重排序机制(ReRanker)、安全保护机制、商业分析工具(BI)、多功能代理(LLM Agent)以及多源知识库,其主要目的是构建一个全面的自然语言处理平台,使用户能够通过直观的自然语言查询安全高效地与数据库进行交互,同时保障数据的隐私和安全。通过组件的共同协作,提升用户体验,同时增强系统的数据处理能力和分析深度。

03

 hugegraph-llm 模块

               hugegraph-llm module


基于业内 LLM 对知识图谱/数据库管理等方面的结合应用案例,社区设计了 hugegraph-llm 模块,下面是该模块的设计方案和未来规划,目前无论是方案还是具体的实现上都还有很大的优化空间,欢迎感兴趣的同学参与共建。

1

知识图谱自动化构建


构建知识图谱历来是一项颇具挑战性且高成本的任务,但借助大语言模型,能够有效地降低这一过程的复杂性和成本。hugegraph-llm 就提供了这种基于大模型一站式构建知识图谱的方法。


知识图谱自动构建任务

整体流程如上图,首先对非结构化的文本数据进行语义化分割,保留文档层次结构,然后将文本片段作为 prompt 的一部分,而另外一部分是图 schema 结构,它为信息抽取设定了明确的边界和指引,能够有效提高抽取结果的准确性。hugegraph-ai 提供了灵活的 schema 处理方案,包括支持用户上传自定义 schema、从 HugeGraph 数据库导入现有 schema、采用无 schema(schema-free)模式,以及从文本内容中自动提取 schema。

在抽取出初步的三元组信息后,进一步引入了知识图谱补全和实体消歧的后处理步骤,以保证三元组的质量。

例如,现有两个三元组信息:(“图数据库 HugeGraph”,“ ”,“关系探索/关联分析/路径搜索”)和("HugeGraph”,“应用场景”,“特征抽取/数据聚类/社区检测/知识图谱”)。

  • 通过实体消歧任务,LLM 可以推理出两个三元组中,“图数据库 HugeGraph”与“HugeGraph”,实际上是同一实体的两个不同表述,则可以将二者统一,使图谱数据更加准确。

  • 通过知识补全任务,LLM 可以推理出第一个三元组中“图数据库 HugeGraph”和“关系探索/关联分析/路径搜索”的关系应为“应用场景”,由此自动地补全三元组信息,使图谱数据更加完整。

经过这些处理后,输出的三元组信息为(“图数据库 HugeGraph”,“应用场景”,“关系探索/关联分析/路径搜索”)和(“图数据库 HugeGraph”,“应用场景”,“特征抽取/数据聚类/社区检测/知识图谱”)。

这些经过优化的三元组最终将被整合写入到 HugeGraph 数据库中。如果用户上传了自定义 schema,系统会在数据写入前自动进行 schema 的初始化,确保数据结构的一致性和完整性。

2

基于知识图谱的 RAG 知识问答

基于知识图谱的 RAG 知识问答

随着大语言模型的兴起,检索增强生成(Retrieval Augmented Generation,RAG)这一概念也受到了广泛关注。LLM 虽然在知识问答领域有非常惊艳的效果,但仍存在一些局限性,如对特定专业领域知识、长尾知识的掌握不足以及对实时数据更新的响应不够灵敏等,同时企业应用需要有可验证和可追溯的答案。为了克服这些局限,企业在实际应用 LLM 时,往往需要依赖一个外部的知识库来补充专业知识,并确保数据的时效性。RAG 就是这样一种使用来自私有或专有数据源的信息来辅助文本生成的技术

在开始这个任务之前,需要通过前面“知识图谱自动化构建”的任务来构建一个高质量的知识图谱。接着进入知识问题的流程:首先通过 LLM 精确地从用户提问中识别并抽取关键实体,接着将这些实体放入 HugeGraph 图数据库中进行匹配查询。对于每个匹配到的实体,执行 3 度(可自定义)子图检索,以获取相关的节点、边和属性信息。对这些信息做局部子图剪枝后,就可以直接作为 prompt,输入到 LLM 中,辅助模型组织生成准确、详尽的回答。

图检索和向量检索都有各自局限和优势。向量检索倾向于从高密度区域检索相似信息,而图检索可以将检索范围扩展到邻近区域之外,获取更多逻辑上相关的信息。二者结合可以互补,兼顾文本语义和逻辑推理,因此后续将引入内嵌的向量检索引擎,以增强问答系统的知识处理能力,提供更为精确和高效的知识检索服务。

3

降低 HugeGraph 使用成本的 LLM Agent 方案

该方案目前还在设计构思中,欢迎对此有想法💡的同学一起交流/参与 Task!🚧

3.1. 关于 LLM Agent

《The Rise and Potential of Large Language Model Based Agents: A Survey》

参考复旦同学的论文对 LLM Agent 做一些简单的介绍。文中提出了组成 Agent 的三个核心部分:

  1. 大脑(Brain):Agent 的核心组成部分,主要由 LLM 构成。不仅存储着重要的记忆、信息和知识,还负责信息处理、决策、推理和规划等关键任务。大脑是 Agent 展示智能行为的关键,它决定了 Agent 能否表现出智能行为。

  2. 感知(Perception):感知模块是 Agent 的感知系统,类似于人类的感官。它的主要功能是从外部环境中感知信息,并将多模态信息转换为代理能理解的表示形式。这一模块扩展了代理的感知空间,从纯文本扩展到包括文本、声音、视觉等多种感官模式。

  3. 行动(Action):行动模块是 Agent 的执行系统,负责根据大脑的决策和规划执行具体的行动。这包括文本输出、使用工具、具现化行动等。通过行动模块,代理能够对环境进行反馈,并根据环境的变化提供反馈,甚至能够改变和塑造环境。

这三个主要组成部分共同构成了 LLM Agent 概念框架。Agent 在与环境互动时,首先通过感知模块感知外部环境的变化,然后大脑模块会处理这些信息,并根据存储的记忆知识进行决策和规划。最后,行动模块会根据大脑的指令执行相应的行动

除此之外 OpenAI 华人科学家翁丽莲也给出了“著名”的 Agent 公式 :

Agent = 大模型(LLM)+记忆(Memory)+规划能力(Planning)+工具使用(Tools use)

对于 Agent 大家都有不同的理解和定义,但是核心是一致的,它是基于 LLM 的人工智能助手,是一种能够理解和执行复杂任务的智能系统。

3.2. HugeGraph LLM Agent

HugeGraph-LLM Agent 框架设计

因此,社区希望提供一种降低 HugeGraph 图使用成本的 LLM Agent 方案,基于 LLM Agent,用户可以通过自然语言发布操作指令来与大模型进行交互。大模型将对这些指令进行分析并拆解为相对简单的子任务,规划任务的执行流程,选择对应的操作对象,最后采取相应的行动。最终希望通过与 hugegraph-llm 的对话,Agent 可以帮助用户做下面这些事情:

  • 通过自然语言检索图数据库;

  • 通过自然语言管理图数据库集群;

  • 通过自然语言执行复杂的图计算任务,以及对任务进行生命周期管理;

  • 通过自然语言更新图数据;

  • 通过自然语言检测图数据库状态。

  • ......


因为不同任务的执行逻辑是有差异的,对于用户输入的自然语言指令,首先需要对任务类型进行分类,举两个详细的例子:

  1. 自然语言检索图数据库:这个任务的关键在于自然语言转图查询语言 Gremlin

    • 为提高转换时字段的准确率,会先从 HugeGraph 中抽取用户检索的目标图的 schema 结构,再结合用户的检索需求,通过大模型生成相应的 Gremlin 查询语句,

    • 经过一些安全校验后,可直接在 HugeGraph 上执行,并返回最终结果。

    • 任务的输入输出都会记录在 Dialog 中,以便做持续的 Prompt 优化,提高转换的准确率。

  2. 自然语言管理图数据库:这个任务的复杂度相对较高,需要预先构建 HugeGraph 操作指令图谱来识别和匹配相应的操作指令。

    • 当用户输入操作指令,大模型将对输入文本执行实体抽取,找到本轮任务的关键词,并从 HugeGraph 的操作指令图谱中召回相关指令和操作脚本。

    • 另外,对于复杂的操作可能会包含有多个执行指令,此时大模型需要把单个复杂任务拆分为多个子任务,并根据上下文规划子任务的执行顺序。

    由于误操作可能会对图数据库造成较大的影响,这里需要增加一轮对话,让用户确认大模型规划的执行任务,如果用户否定了执行指令,模型将请求用户提供更详细的操作说明,并根据 HugeGraph 操作图谱推荐相关的指令。在此过程中的所有对话记录都将被保存在 HugeGraph 数据库中,给大模型提供决策依据。一旦用户确认执行某个指令,系统将会自动执行,并将结果反馈给用户。

04

 hugegraph-python 

    & hugegraph-ml

               python client and graph machine learning


除了 hugegraph-llm 模块,一同发布的还有全新的 hugegraph-python 客户端。该客户端覆盖了 HugeGraph 的所有接口,让算法同学能够通过简洁的 Python 接口轻松地进行 HugeGraph 的操作和管理。

同时,社区也在积极规划和推进 hugegraph-ml模块的构建,预计将在后续版本中与大家见面。hugegraph-ml 模块致力于将 HugeGraph 与图机器学习、图神经网络和图嵌入等开源库进行深度集成。它旨在构建一个通用、高效的中间层,实现与各种第三方图相关机器学习框架的无缝连接。此外,hugegraph-ml 还将提供一系列实用的解决方案示例,以帮助用户更好地理解和应用这些图相关的技术。欢迎大家持续关注。

05

 加入我们

               WE NEED YOU

当前,hugegraph-ai 项目正处起步阶段。Apache HugeGraph 社区热切期望并欢迎对图数据库、知识图谱、大语言模型、图学习等领域感兴趣的同学加入其中。无论是对技术的深入研究,还是对创新应用的探索,社区都期待您的参与能够为项目带来新的活力和独特的视角。每一份贡献,无论是bug-fix/实现功能、改进文档还是反馈问题,都将是推动 hugegraph-ai 项目向前发展的重要力量。


📔项目仓库地址 :

https://github.com/apache/incubator-hugegraph-ai 

📄 使用文档

https://hugegraph.apache.org/docs/quickstart/hugegraph-ai

📬提交问题和建议:

https://github.com/apache/incubator-hugegraph-ai/issues

🍀贡献代码:

https://github.com/apache/incubator-hugegraph-ai/pulls

📧订阅社区开发邮件列表:

dev@hugegraph.apache.org


请点击文末“阅读原文”访问 hugegraph-ai 仓库页面,点击下方卡片可关注公众号:



文章转载自Apache HugeGraph,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论