AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


GraphRAG+Ollama 结合上市公司知识图谱的LLM分析
发布日期:2024-07-19 07:24:31 浏览次数: 2815


Content


微软最新开源了LLM工具GraphRAG,除了把模型外包给了OpenAI,微软在工具层已经开源了DeepSpeed,Autogen以及GraphRAG,集齐了模型训练,agent以及RAG三大神器。


这篇论文介绍了人类在多个领域中如何依赖于阅读和理解大量文档的能力,并指出了大型语言模型(LLMs)在自动化复杂领域感知制造中的潜力。然而,现有的检索增强生成(RAG)方法在处理针对整个文本语料库的全局性问题时存在局限性,因为这些问题本质上是查询聚焦摘要(QFS)任务,而不是局部的文本检索任务。为此,作者提出了一种基于图的RAG方法,通过构建基于实体的知识图谱和社区摘要来扩展RAG系统的能力,使其能够处理更广泛的用户问题和更大量的源文本。


图检索增强生成(Graph RAG)方法及其处理流程包括:

源文档到文本块(Source Documents → Text Chunks)

  • 文本块的粒度:作者首先讨论了如何处理源文档,将其分割成适合处理的文本块。文本块的粒度是一个关键设计决策,影响着后续处理的效率和准确性。较长的文本块可以减少对大型语言模型(LLM)的调用次数,但可能会因为LLM上下文窗口的召回率下降而影响提取效果。作者通过实验展示了不同文本块大小对实体引用检测的影响。

文本块到元素实例(Text Chunks → Element Instances)

  • 元素实例提取:在这一步骤中,作者使用多部分LLM提示来识别和提取文本块中的图节点和边的实例。这包括识别文本中的所有实体及其名称、类型和描述,以及识别实体之间的关系,包括源实体和目标实体及其关系的描述。

  • 领域定制:通过为LLM提供少量示例,可以定制提取过程以适应特定领域的知识。例如,科学、医学或法律领域的文档可能需要专门的示例来提取相关的实体和关系。

  • 多次提取(Gleanings):为了提高提取的准确性,作者采用了多轮“gleanings”(即多次提取)的方法。LLM首先被要求评估是否所有实体都已被提取,如果有遗漏,则继续提取遗漏的实体。这种方法可以在不引入噪声的情况下使用较大的文本块。

元素实例到元素摘要(Element Instances → Element Summaries)

  • 抽象性摘要:在提取了实体、关系和主张的实例后,下一步是将这些实例转换为每个图元素的描述性文本块。这涉及到对LLM生成的摘要进行进一步的LLM摘要,以确保每个图元素都有一个统一的描述性文本。

  • 实体一致性:作者指出,尽管LLM可能以不同的文本格式提取同一实体的引用,但通过社区检测和总结,可以确保在图索引中对这些实体有一个一致的表示。

元素摘要到图社区(Element Summaries → Graph Communities)

  • 图模型:在这一步骤中,作者将之前步骤创建的索引建模为一个同质无向加权图,其中实体节点通过关系边连接,边的权重表示检测到的关系实例的归一化计数。

  • 社区检测:使用社区检测算法(如Leiden算法)将图划分为社区,这些社区中的节点彼此之间的连接比与图中其他节点的连接更强。这种层次化的社区结构为全局摘要提供了一种分而治之的方法。

图社区到社区摘要(Graph Communities → Community Summaries)

  • 社区摘要生成:作者介绍了如何为Leiden算法生成的每个社区创建报告式的摘要。这些摘要不仅有助于理解数据集的全局结构和语义,还可以用于回答全局查询。

  • 摘要方法:对于叶级社区,元素摘要按优先级顺序添加到LLM的上下文窗口中,直到达到标记限制。对于更高级别的社区,如果所有元素摘要能够适应上下文窗口,则进行总结;否则,通过替换较长的元素摘要为较短的社区摘要来适应上下文窗口。

社区摘要到社区答案再到全局答案(Community Summaries → Community Answers → Global Answer)

  • 多阶段生成:给定用户查询,社区摘要可以用于生成最终答案的多阶段过程。作者讨论了如何准备社区摘要,生成中间答案,并最终汇总这些答案以生成全局答案。

  • 层次性:社区结构的层次性允许使用不同层次的社区摘要来回答查询,作者评估了不同层次的社区摘要在回答问题时的效果。


GraphRAG公司分析


接下来展示一个用GraphRAG结合本地ollma分析上市公司的案例:


首先下载GraphRAG代码:


git clone https://github.com/microsoft/graphrag.git


同时可以下载graphrag的UI工具:

git clone https://github.com/severian42/GraphRAG-Ollama-UI.git


按照教程安装好所需包之后,在settings.yaml中设置好ollama的api_base以及model即可将gpt4替换为本地LLM,如果运行效率较慢,也可替换为qwen,deepseek等国产性价比更高的模型。


将文本材料放在./ragtest/input之下,这里我用的达梦数据的招股说明书。运行以下命令构建知识图谱,运行时间较长,我本地4090运行llama3:8b耗时一小时左右:


python -m graphrag.index --init --root ./ragtest


这里需要注意,GraphRAG-Ollama-UI在UI端也可以运行indexing命令,但是Windows下会遇到编码问题,建议直接在命令行运行。


运行结束后,会得到知识图谱文件:


可在前端直接查看,可以看出,系统已经自动建立好了关于达梦数据的知识图谱,在对大模型对话时,可以利用知识图谱的内容结合RAG提高模型效果



大模型对话:




53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询