转自:吴建明利驰软件
几个月前,基于知识的问答系统(Knowledge Base Question Answering,KBQA)还是个新概念。
现在,随着大型语言模型(LLMs)的发展,带有检索增强生成(RAG)的KBQA对我们来说变得越来越容易了。
知识图谱(Knowledge Graph)是用来表示现实世界中的实体及其关系的一种数据结构。
它通过节点(表示实体)和边(表示实体间的关系)来构建一个连通的网络。
知识图谱的主要目的是将分散的数据组织成有结构的信息,使得机器能够理解和处理这些信息,从而在搜索、问答、推荐等应用中提供更智能的服务。
1、实体(Entity):知识图谱中的基本单元,代表现实世界中的对象,比如人、地点、事物等。
2、属性(Attribute):描述实体的特征,比如人的姓名、年龄,地点的名称、坐标等。
3、关系(Relation):表示实体之间的连接,比如“Tom 是 Mary 的朋友”这类描述实体间的关系。
Mary had a little lamb,
You’ve heard this tale before;
But did you know she passed her plate,
And had a little more!
绘制成KG,如下:
想要掌握如何将大模型的力量发挥到极致吗?叶老师带您深入了解 Llama Factory —— 一款革命性的大模型微调工具。9月22日晚,实战专家1小时讲解让您轻松上手,学习如何使用 Llama Factory 微调模型。
加助理微信提供直播链接:amliy007,29.9元即可参加线上直播分享,叶老师亲自指导,互动沟通,全面掌握Llama Factory,关注享粉丝福利,限时免费CSDN听直播后的录播讲解。
LLaMA Factory 支持多种预训练模型和微调算法。它提供灵活的运算精度和优化算法选择,以及丰富的实验监控工具。开源特性和社区支持使其易于使用,适合各类用户快速提升模型性能。
知识图谱在很多方面都很有用。
1、可以运行图算法并计算任何节点的中心性,以了解一个概念(节点)在整个工作体系中的重要性。
2、可以分析连接和断开的概念集合,或者计算概念群体,以深入理解主题内容。
3、还能理解看似不相关的概念之间的联系。
举例来说,仅仅依靠简单的语义相似性搜索来找到与查询最相关的上下文并不总是有效的,尤其是当查询没有提供足够的上下文来明确其真实意图,或者当上下文分散在大量文本中时。
比如,考虑这个查询:
告诉我《百年孤独》中何塞·阿尔卡迪奥·布恩迪亚的家谱。
这本书中记录了七代的何塞·阿尔卡迪奥·布恩迪亚,而且一半的人物都叫何塞·阿尔卡迪奥·布恩迪亚。
如果使用简单的 RAG 流程来回答这个查询,可能会非常具有挑战性,甚至可能无法实现。
另外,RAG 的另一个缺点是它无法引导你提出正确的问题。在很多情况下,提出正确的问题比获取答案更为关键。
图增强生成(Graph Augmented generation,GAG)在一定程度上可以解决 RAG 的这些缺点。
更好的是,我们可以灵活组合,构建一个图增强检索增强生成流水线,以融合两者的优点,达到事半功倍的效果。
项目地址:https://rahulnyk.github.io/knowledge_graph/
1、将文本语料库分割成块。为每个块分配一个 chunk_id。
2、针对每个文本块,使用大型语言模型提取概念及其语义关系。我们将这种关系赋予权重 W1。同一对概念之间可能存在多种关系。每种关系都是一对概念之间的边。
3、考虑到在同一文本块中出现的概念也会由于其上下文接近性而相关。我们将这种关系赋予权重 W2。请注意,同一对概念可能会在多个块中出现。
4、将相似的对组合起来,求其权重之和,并串联它们的关系。现在,对于任意不同的概念对之间只有一条边。该边具有一定的权重和一系列关系作为其名称。
5、它还计算每个节点的度数和节点的社区,分别用于调整图中节点的大小和着色。
使用 Mistral 7B Openorca 从文本块中提取概念。它可以很好地遵循系统提示指令。
Ollama 可以轻松在本地托管任何模型。Mistral 7B OpenOrca 版本已可与 Ollama 一起使用,开箱即用。
这是一个 Python 库,可以让处理图表变得超级简单
Pyvis 用于可视化的 Python 库。Pyvis 使用 python 生成 Javascript 图形可视化。
如果regenerate设置为True,则会重新生成数据框,并将它们以CSV格式写入,这样就无需再次计算。数据框分为两类:
dfne 是边的数据框(dataframe of edges)。
df 是块的数据框(dataframe of chunks)。
如果regenerate为False,则数据框将从输出目录读取,而不是重新计算。这意味着如果数据已经存在,程序将直接使用现有数据,无需再次处理。
文章的每个文本块运行此操作并将 json 转换为 Pandas 数据帧:
得到一个与原始数据框非常相似的数据框。
输出:(215,)
输出:./docs/index.html。
全部节点
选择需要查询的节点: