面向知识图谱的大模型应用

news2025/3/13 19:59:33

【引子】春节期间,读了论文《An LLM Compiler for Parallel Function Calling》(https://arxiv.org/abs/2312.04511), 颇受启发,或许可以通过LLM Compiler 实现已有知识图谱系统的大模型赋能, 实现面向知识图谱的大模型应用。

知识图谱的应用由来已久,如果企业已经投资了知识图谱系统,而且效果还不错,需要用LLM重新实现一遍么?

e0a319b52c113d61d6fee22e289453bd.jpeg

而且,LLM 在处理涉及大量相互关联知识的复杂现实环境时仍然有很多局限性。为了应对这一挑战,RAG 将 LLM 的优势与可扩展的外部知识源(如知识图谱)检索结合了起来, 不再尝试静态地编码模型中的所有信息,而是允许根据需要动态地从知识图谱中查询必要的上下文。

然而,有效地协调相互关联知识源之间的推理和检索又带来了自身的挑战。在离散步骤中检索或者连接信息的简单方法往往不能完全捕捉知识图谱中的细微差别。概念的互相关性意味着如果不相互分析,就可能忽略重要的上下文细节。

或许, LLM Compiler 这样的架构可以带来不一样的思路,但仍然要从现实的应用场景出发,避免无病呻吟。那么,当前知识图谱系统面临着哪些挑战呢?

df6cc684037ecfd02573b80bbe045d7d.jpeg

1. 海量知识图图谱推理的挑战

在处理海量知识图谱的推理问题时,必须整合先进的技术和方法来优化数据检索和处理。这涉及到利用各种计算策略来平衡大型关联数据集分析的效率、准确性和完整性。

1.1 数学运算的查询优化

面对图谱中数据的数学聚合,需要提高图查询的性能。首先,要确定数学聚合可应用于图中数据的情景。然后,将过程分解为并行检索组、并发执行聚合函数和高效连接。

1.2 规划并行向量搜索

实现并行向量搜索同样是个难题,需要有效基于图谱中的数据进行规划。一般地,分析查询以确定作为矢量搜索起点的关键实体。从不同的种子实体开始搜索,并发地探索图谱,根据向量相似性动态检索节点,有针对性地扩大搜索范围。

1.3 图算法的协调使用

对鱼图算法的协调使用,一般地,分析查询的性质以选择相关算法(如遍历、社区检测),然后以模块化方式应用算法,每个算法都针对特定目标(例如效率、准确性)进行了优化。解决依赖关系:,确保算法之间的协调,特别是当执行另一个算法的输入需要一个算法的输出时。

LLM Compiler 可以充当这些任务的中央协调器,将管理数学操作的查询执行,监督并行向量搜索,并协调各种图算法的应用。LLM Compiler 在这方面的主要帮助是确保对知识图谱的整个推理过程不仅有效和准确,而且全面。这需要对数据结构有深入的理解,预测计算需求的能力,以及根据实时数据分析结果动态调整策略的能力。

93019e08085019722bfa3b81aae19050.jpeg

2. 作为模块化 LLM 工具的知识图谱

Kim 等人在2023年推出的 LLM Compiler 系统由三个关键组成部分组成:

  1. LLM Planner: 分解任务并构建依赖关系图

  2. Task Fetching Unit: 分发处理依赖关系的任务

  3. Executor: 并行运行工具函数

值得注意的是,LLM Compiler 将工具函数视为可以并发执行的模块化函数。

因此,可以将知识图谱本身视为 LLM 编排的模块化工具:

  • KG 上的查询引擎成为 LLM 访问的工具

  • 图算法和嵌入提供工具级定制

  • LLM Planner 确定最优的多图探索策略

有了这个框架,LLM Compiler 的自动规划和结构化执行技术似乎对于复杂的知识检索非常有帮助。

0826993a91a788377e1b20c5f3f85168.jpeg

3. LLM Compiler支持的结构化推理

通过将 LLM Compiler技术专门用于集成多个工具和执行图操作,可以对知识图谱的推理进行增强。

3.1 平行探测

规划分解允许从多个“入口点”同时查询知识图谱的不同区域。多跳路径可以通过并行,从而加速了探索的过程。

3.2 模块化检索

使用独特算法和嵌入的不同子图上的查询引擎基本上能够充当独立的工具。LLM Compiler擅长于集成不同的模块功能。

3.3依赖管理

中间查询结果通常能够通知后续搜索。LLM Compiler 对工具间依赖关系的自动化处理使得实体和关系的无缝传播成为可能。

3.4 递归重新规划

对于复杂问题,后续的检索阶段在很大程度上取决于前面的阶段。LLM Compiler允许在新上下文中显示新依赖项时递归重新规划。

3.5 本体辅助规划

围绕关键实体,提供高级模式的本体抽象可以进一步帮助 Planner 模块。元层次上的知识能够指导更加结构化的任务分解,并使其与领域概念保持一致。

3.6 集成多样的异构数据源

planner 可以集成额外的数据源,如 SQL 数据库,图像和互联网搜索引擎,并把它们作为模块化的工具可以访问 LLM。LLM Compiler通过在本体知识驱动的结构化规划框架下编排知识检索模块,可以实现对大量信息空间的高效而精确检索。

5d9034b7a4abfb8000b9a6a71144a9c9.jpeg

4. 面向知识的操作系统

畅想一下,我们或许可以把 LLM 作为监督不同知识工具函数的操作系统。与协调线程和内存的操作系统类似,LLM 可以跨知识存储调度检索、推理和学习。基于机器学习的优化器会自动调优各种“工具”模块的路由和使用。其中,类似LLM Compiler这样的框架或许可以作为操作系统和工具之间的关键工作流编排框架,代表 LLM处理依赖解析、并发优化和资源分配等所有底层复杂性。

4.1 作为操作系统的 LLM

用LLM来协调监督和分配各个模块之间的资源:

  • 检索、推理和学习函数之间的最佳并发调度

  • 将查询和决策路由到最合适的组件

  • 监视执行以动态优化分配

  • 在新功能上线时启用模块化可扩展能力 LLM as Semantic Glue

4.2 作为语义粘合剂的LLM

LLM 提供了将不同组件绑定在一起的通用语义表达:

  • 将查询、检索到的上下文、生成的决策嵌入到共享向量空间中

  • 在组件接口之间转换查询和指令

  • 通过将输入/输出编码成可移植嵌入在模块之间传播信号

4.3 作为推理引擎的LLM

LLM 对来自专用组件的输入执行元推理:

  • 基于更广泛的理解通过解决歧义来处理信号

  • 将低水平的产出物抽象为高水平的见解

  • 以概念为基础评价假设和解释

  • 确定将相互关联的输出联系起来的解释性推论

因此,LLM 可以在计算和语义上充当纽带,拓展AI应用的深度和广度。

5. 小结

随着 LLM 不断成熟为更广泛的推理引擎,基于大模型的架构创新仍然势在必行,特别是针对有效地利用外部知识来克服固有模型的局限性。或许,类似LLM Compiler这样的框架及其协调工具函数的技术为构造可伸缩的知识检索提供了一种有潜力的范式。通过将知识框架作为由 LLM Compiler 精心编排的模块化工具,我们为复杂推理中的平衡效率、简洁性和连贯性打开了一种新的可能性。

【关联阅读】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1453598.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python一级考试笔记

Python一级考试笔记【源源老师】 前置知识:(了解即可) Python常见的几种编程环境:IDLE(自带)、Visual Studio Code、Jupyter、pyCharm; python版本:python3 和 python2(…

GitLab配置SSHKey

段落一:什么是SSH密钥 SSH(Secure Shell)是一种网络协议,用于安全地远程登录和执行命令。SSH密钥是一种用于身份验证的加密文件,它允许您在与远程服务器通信时,无需输入密码即可进行认证。在GitLab中配置S…

2023我患上了AI焦虑

2023我患上了AI焦虑 来自:宝玉 原文链接:https://baoyu.io/blog/ai/i-am-suffering-from-ai-anxiety-in-2023 2023 年对我来说是神奇的一年,我意外的从一个程序员变成了一个 AI 资讯届的“网红”,到年底的时候我在 X 平台的阅读量…

面试经典150题【1-10】

文章目录 面试经典150题【1-10】88. 合并两个有序数组27.移除元素26.删除有序数组中的重复项80.删除有序数组中的重复项II169.多数元素189.轮转数组121.买卖股票的最佳时机1122. 买卖股票的最佳时机 II55.跳跃游戏![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/ff…

SpringBoot实现OneDrive文件上传

SpringBoot实现OneDrive文件上传 源码 OneDriveUpload: SpringBoot实现OneDrive文件上传 获取accessToken步骤 参考文档:针对 OneDrive API 的 Microsoft 帐户授权 - OneDrive dev center | Microsoft Learn 1.访问Azure创建应用Microsoft Azure,使…

Qt的安装

下载安装包 我们选择Open Source的版本。 可以从https://www.qt.io/download-open-source直接下载最新版本,对于想要选择特定版本,或者尝试beta版功能的用户,也可以从https://download.qt.io选择自己需要的版本。 如果你的网速可以的话&am…

语音唤醒——

文章目录 配置主代码 参考文档:https://picovoice.ai/docs/quick-start/porcupine-python/ 配置 pip install pvporcupine主代码 ACCESS_KEY:需要将该参数填入即可 # # Copyright 2018-2023 Picovoice Inc. # # You may not use this file except in …

前端开发,Vue的双向数据绑定的原理

目录 一、什么是前端 二、Vue.JS框架 三、双向数据绑定 四、Vue的双向数据绑定的原理 一、什么是前端 前端通常指的是网页或应用程序中用户直接交互和感知的部分,也称为客户端。前端开发涉及使用HTML、CSS和JavaScript等技术来构建用户界面和交互功能。前端开发…

个人 AI 的革命:Nvidia‘s Chat with RTX 深度探索

个人 AI 的革命:Nvidias Chat with RTX 深度探索 Nvidia 推出的 Chat with RTX 预示着个人 AI 新时代的到来。2 月 13 日,Nvidia 官宣了自家的 AI 聊天机器人,这不仅是人工智能交互的渐进式改进;更代表了个人如何利用自己的数据进…

ubuntu 22.04.3 live server安装JDK21与远程编程环境

ubuntu 22.04.3 live server安装JDK21与远程编程环境 一、安装jdk21 解压jdk压缩包,命令: tar -zxvf jdk-21_linux-x64_bin.tar.gz打开环境变量,命令: sudo vim /etc/profile配置环境变量 export JAVA_HOME/root/jdk-21.0.2 …

javaweb学习day03(JS+DOM)

一、javascript入门 1 官方文档 地址: https://www.w3school.com.cn/js/index.asp离线文档: W3School 离线手册(2017.03.11 版).chm 2 基本说明 JavaScript 能改变 HTML 内容,能改变 HTML 属性,能改变 HTML 样式 (CSS),能完成 页面的数据…

18-k8s控制器资源-cronjob控制器

job控制器是执行完一次任务,就结束; cronjob控制器,是基于job控制器,定期频率性执行任务;等同于linux系统中的crontab一样; 1,编辑cronjob资源清单 [rootk8s231 pi]# vim cronjob.yaml apiVers…

Dynamo之视图过滤器介绍

你好,这里是BIM的乐趣,我是九哥~ 今天简单整理一篇,源于最近很多人给我留言,问如何添加过滤器,那么我就简单把视图过滤器这块的节点及其用法整理下,基本上自带的节点就够用了。 获取项目中的所有视图过滤器…

《剑指 Offer》专项突破版 - 面试题 48 : 序列化和反序列化二叉树(C++ 实现)

目录 前言 一、序列化二叉树 二、反序列化二叉树 前言 题目链接:LCR 048. 二叉树的序列化与反序列化 - 力扣(LeetCode) 题目: 请设计一个算法将二叉树序列化成一个字符串,并能将该字符串反序列化出原来的二叉树。…

【c++】const引用

Hello everybody!今天给大家讲讲有关const引用部分的知识,因为这部分知识涉及到const与引用直接如何灵活的运用,且不太好理解。所以我认为讲一下这里的知识还是很有必要的! 1.权限可缩小 首先,当我们定义了a,在给a取别…

JAVA面试题并发篇

1. 线程状态 要求 掌握 Java 线程六种状态 掌握 Java 线程状态转换 能理解五种状态与六种状态两种说法的区别 六种状态及转换 分别是 新建 当一个线程对象被创建,但还未调用 start 方法时处于新建状态 此时未与操作系统底层线程关联 可运行 调用了 start 方法…

Vue2:组件间通信框架Vuex

一、原理图及作用 功能介绍: 简单说就是Vue项目中,各个组件间通信的一种框架 相较于之前的全局事件总线,该框架更实用! 提高了代码的复用率,把核心业务代码,集中到store中,这样,一处…

【机器学习笔记】 6 机器学习库Scikit-learn

Scikit-learn概述 Scikit-learn是基于NumPy、 SciPy和 Matplotlib的开源Python机器学习包,它封装了一系列数据预处理、机器学习算法、模型选择等工具,是数据分析师首选的机器学习工具包。 自2007年发布以来,scikit-learn已经成为Python重要的机器学习库了&#xff…

由斐波那契数列探究递推与递归

斐波那契数列定义: 斐波那契数列大家都非常熟悉。它的定义是: 对于给定的整数 x ,我们希望求出: f ( 1 ) f ( 2 ) … f ( x ) f(1)f(2)…f(x) f(1)f(2)…f(x) 的值。 有两种方法,分别是递推(迭代)与递归 具体解释如下图 备注…

Linux学习——静态库与动态库的打包

目录 ​编辑 一,动静态库介绍 1,动静态库的特点 二,静态库的打包 计算器示例 编译: 1,直接编译 2,打包 三,动态库打包 计算器示例:同上 编译: 1,直…