【引子】春节期间,读了论文《An LLM Compiler for Parallel Function Calling》(https://arxiv.org/abs/2312.04511), 颇受启发,或许可以通过LLM Compiler 实现已有知识图谱系统的大模型赋能, 实现面向知识图谱的大模型应用。
知识图谱的应用由来已久,如果企业已经投资了知识图谱系统,而且效果还不错,需要用LLM重新实现一遍么?
而且,LLM 在处理涉及大量相互关联知识的复杂现实环境时仍然有很多局限性。为了应对这一挑战,RAG 将 LLM 的优势与可扩展的外部知识源(如知识图谱)检索结合了起来, 不再尝试静态地编码模型中的所有信息,而是允许根据需要动态地从知识图谱中查询必要的上下文。
然而,有效地协调相互关联知识源之间的推理和检索又带来了自身的挑战。在离散步骤中检索或者连接信息的简单方法往往不能完全捕捉知识图谱中的细微差别。概念的互相关性意味着如果不相互分析,就可能忽略重要的上下文细节。
或许, LLM Compiler 这样的架构可以带来不一样的思路,但仍然要从现实的应用场景出发,避免无病呻吟。那么,当前知识图谱系统面临着哪些挑战呢?
1. 海量知识图图谱推理的挑战
在处理海量知识图谱的推理问题时,必须整合先进的技术和方法来优化数据检索和处理。这涉及到利用各种计算策略来平衡大型关联数据集分析的效率、准确性和完整性。
1.1 数学运算的查询优化
面对图谱中数据的数学聚合,需要提高图查询的性能。首先,要确定数学聚合可应用于图中数据的情景。然后,将过程分解为并行检索组、并发执行聚合函数和高效连接。
1.2 规划并行向量搜索
实现并行向量搜索同样是个难题,需要有效基于图谱中的数据进行规划。一般地,分析查询以确定作为矢量搜索起点的关键实体。从不同的种子实体开始搜索,并发地探索图谱,根据向量相似性动态检索节点,有针对性地扩大搜索范围。
1.3 图算法的协调使用
对鱼图算法的协调使用,一般地,分析查询的性质以选择相关算法(如遍历、社区检测),然后以模块化方式应用算法,每个算法都针对特定目标(例如效率、准确性)进行了优化。解决依赖关系:,确保算法之间的协调,特别是当执行另一个算法的输入需要一个算法的输出时。
LLM Compiler 可以充当这些任务的中央协调器,将管理数学操作的查询执行,监督并行向量搜索,并协调各种图算法的应用。LLM Compiler 在这方面的主要帮助是确保对知识图谱的整个推理过程不仅有效和准确,而且全面。这需要对数据结构有深入的理解,预测计算需求的能力,以及根据实时数据分析结果动态调整策略的能力。
2. 作为模块化 LLM 工具的知识图谱
Kim 等人在2023年推出的 LLM Compiler 系统由三个关键组成部分组成:
1.
LLM Planner: 分解任务并构建依赖关系图
2.
3.
Task Fetching Unit: 分发处理依赖关系的任务
4.
5.
Executor: 并行运行工具函数
6.
值得注意的是,LLM Compiler 将工具函数视为可以并发执行的模块化函数。
因此,可以将知识图谱本身视为 LLM 编排的模块化工具:
·
KG 上的查询引擎成为 LLM 访问的工具
·
·
图算法和嵌入提供工具级定制
·
·
LLM Planner 确定最优的多图探索策略
·
有了这个框架,LLM Compiler 的自动规划和结构化执行技术似乎对于复杂的知识检索非常有帮助。
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通过在本体知识驱动的结构化规划框架下编排知识检索模块,可以实现对大量信息空间的高效而精确检索。
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 精心编排的模块化工具,我们为复杂推理中的平衡效率、简洁性和连贯性打开了一种新的可能性。
出自:https://mp.weixin.qq.com/s/iP2_LD9z32Hh7FMqZrNsfA