赞
踩
本文侧重讲解:
为了写本第一部分的图谱入门导论,我特意看了下七月在线的知识图谱入门实战的所有课件,对于快速梳理 非常不错,因此本部分2/3的内容都来自该课程,更多细节可以看原课程
知识图谱是⼀种基于图的数据结构,由节点(point)和边(Edge)组成,每个节点表示⼀ 个“实体” ,每条边为实体与实体之间的“关系” ,知识图谱本质上是语义⽹络
由下图,可以看到实体有地名和⼈;⼤理属于云南、⼩明住在⼤理、⼩明和⼩秦是朋友,这些都是实体与实体之间的关系
在现实世界中,实体和关系也会拥有各⾃的属 性,⽐如⼈可以有“姓名”和“年龄”,注意:其实“姓名”也是⼀种属性
总之,知识图谱就是把所有不同种类的信息连接在⼀起⽽得到的⼀个关系⽹络,因此知识图谱提供了从“关系” 的⻆度去分析问题的能⼒
// 待更
// 待更
// 待更
// 待更
通过本文之前或本博客内之前的内容可知,由于大部分LLM都是基于过去互联网旧的预训练语料训练、推理而来,由此会引发两大问题
面对第二个问题,我们在上文已经展示了可以通过与langchain结合搭建本地知识库的办法解决,此外,还可以考虑让LLM与知识图谱结合
根据所存储信息的不同,现有的知识图谱可分为四大类:百科知识型知识图谱、常识型知识图谱、特定领域型知识图谱、多模态知识图谱
而下图总结了 LLM 和知识图谱各自的优缺点
而实际上,LLM与知识图谱可以互相促进、增强彼此
总之,在 LLM 与知识图谱协同的相关研究中,研究者将 LLM 和知识图谱的优点融合,让它们在知识表征和推理方面的能力得以互相促进
今年6月份,一篇论文《Unifying Large Language Models and Knowledge Graphs: A Roadmap》指出,用知识图谱增强 LLM具体的方式有几种
下表总结了用知识图谱增强 LLM 的典型方法
现有的 LLM 主要依靠在大规模语料库上执行自监督训练。尽管这些模型在下游任务上表现卓越,它们却缺少与现实世界相关的实际知识。在将知识图谱整合进 LLM 方面,之前的研究可以分为三类:
上文的方法可以有效地将知识与LLM中的文本表示进行融合。但是,真实世界的知识会变化,这些方法的局限是它们不允许更新已整合的知识,除非对模型重新训练。因此在推理时,它们可能无法很好地泛化用于未见过的知识(比如ChatGPT的预训练数据便截止到的2021年9月份,为解决这个知识更新的问题,它曾借助接入外部插件bing搜索去解决)
所以,相当多的研究致力于保持知识空间和文本空间的分离,并在推理时注入知识。这些方法主要关注的是问答QA任务,因为问答既需要模型捕获文本语义,还需要捕获最新的现实世界知识,比如
更多细节在我司的langchain实战课程上见
// 待更..
// 待更..
// 待更..
KnowLM是一个结合LLM能力的知识抽取项目,其基于llama 13b利用自己的数据+公开数据对模型做了pretrain,然后在pretrain model之上用指令语料做了lora微调,最终可以达到的效果如下图所示 (图源),当面对同一个输入input时,在分别给定4种不同指令任务instruction时,KnowLM可以分别得到对应的输出output
下图展示了训练的整个流程和数据集构造。整个训练过程分为两个阶段:
Pile
数据集中的代码质量不高,他们去爬取了Github、Leetcode的代码数据,一部分用于预训练,另外一部分用于指令微调1024
,而大多数的文档的长度都远远大于这个长度,因此需要对这些文档进行划分。设计了一个贪心算法来对文档进行切分,贪心的目标是在保证每个样本都是完整的句子、分割的段数尽可能少的前提下,尽可能保证每个样本的长度尽可能长mmap
的方法对数据进行处理和加载,即将索引读入内存,需要的时候根据索引去硬盘查找参数 | 值 |
---|---|
micro batch size(单张卡的batch size大小) | 20 |
gradient accumulation(梯度累积) | 3 |
global batch size(一个step的、全局的batch size) | 20*3*24=1440 |
一个step耗时 | 260s |
NER
、RE
、EE
)。需要注意的是,由于许多开源的数据集,比如alpaca数据集
CoT数据集
代码数据集
都是英文的,因此为了获得对应的中文数据集,对这些英文数据集使用GPT4
进行翻译CoT数据集
代码数据集
使用第一种情况CoNLL
ACE
CASIS
等开源的IE数据集,构造相应的英文指令数据集。中文部分,不仅使用了开源的数据集如DuEE
、PEOPLE DAILY
、DuIE
等,还采用了他们自己构造的KG2Instruction
,构造相应的中文指令数据集数据集类型 | 条数 |
---|---|
COT(中英文) | 202,333 |
通用数据集(中英文) | 105,216 |
代码数据集(中英文) | 44,688 |
英文指令抽取数据集 | 537,429 |
中文指令抽取数据集 | 486,768 |
编辑
附录
另外,这是:关于LLM与知识图谱的一席论文列表
GitHub - eosphoros-ai/DB-GPT: Revolutionizing Database Interactions with Private LLM Technology
DB-GPT基于 FastChat 构建大模型运行环境,并提供 vicuna 作为基础的大语言模型。此外,通过LangChain提供私域知识库问答能力,且有统一的数据向量化存储与索引:提供一种统一的方式来存储和索引各种数据类型,同时支持插件模式,在设计上原生支持Auto-GPT插件,具备以下功能或能力
整个DB-GPT的架构,如下图所示(图源)
通过QLoRA(4-bit级别的量化+LoRA)的方法,用3090在DB-GPT上打造基于33B LLM的个人知识库
// 待更
更多课上见:七月LLM与langchain/知识图谱/数据库的实战 [解决问题、实用为王]
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。