首页 > 其他分享 >RAG知识库之知识库图谱应用

RAG知识库之知识库图谱应用

时间:2024-09-03 08:53:49浏览次数:3  
标签:RAG 知识库 图谱 Chunk 实体 文档 定安县

      上篇文章介绍了使用大模型构建生成知识图谱,其实也可不用大模型用其他方式构建生成知识图谱,但RAG要结合知识图谱使用关键还是怎么把图谱的内容查询出来;简单来说可以先查出Chunk集在关联查出每个Chunk所关联的实体Entity再查询出实体之间的的关系集;这里说的RAG结合知识图谱和微软开源的GraphRAG具体实现是不同的,GraphRAG效果提升会更好。

      在Neo4j中使用Cypher查询语言可以轻松实现图谱数据的查询,通过Chunk元数据fileName以及Document与Chunk节点的关系PART_OF、Chunk与实体的关系HAS_ENTITY就可查询到了该文档的完整知识图谱。图谱查询的具体流程如下:

      1、将问题转为嵌入向量
      2、如果选择了Document过滤则会根据Chunk的字段fileName过滤Chunk否则使用问题向量查询匹配vector索引所对应的chunk
      3、计算Chunk节点的嵌入embedding字段与问题向量的余弦相似度作为score
      4、查找与Chunk节点具有PART_OF关系的Document并使用fileName过滤文档
      5、查找与Chunk节点具有HAS_ENTITY关系的Entity实体节点根据fileName过滤实体
      6、组装从Chunk节点到实体节点的路径、从实体到实体的路径等
      7、返回Chunk节点text内容、所有chunk的平均分score、Chunk元数据(源文档名称、chunkId、余弦相似度分数score等)、实体集、关系集
      8、计算问题嵌入向量与返回的图谱文档嵌入向量余弦相似度,根据预设阈值过滤掉相似度较低的图谱文档
      9、提交提问问题与经过过滤的图谱文档作为上下文到LLM

示例

      海南岛文档其内容如下:

定安县位于海南岛东北部为海南省直辖县,最近的机场是美兰机场距30公里左右。

      假如此段文本生成的图谱如上图所示。

提问问题:定安
限定文档:海南岛

      在这个知识图谱中查询数据时会发生一下情况:

      1、根据海南岛文档名称查询到其文档存在两个Chunk因为两个Chunk存fileName为海南岛的元数据
      2、根据Chunk与Doc的Part_of关系溯源到Dunk所属与海南岛文档
      3、根据Chunk与Entity的HAS_ENTITY关系查找到《海南省》、《定安县》、《美兰机场》实体
      4、根据查找到的实体查找实体间的关系、实体的属性

      经过如上4个流程后在图谱中查询到的文档内容如下:

定安县位于海南岛东北部为海南省直辖县,最近的机场是美兰机场距30公里左右。
实体集:行政区划:海南省 县:定安县 机场:美兰机场 关系集:行政区划:海南省 管辖 县:定安县  县:定安县 距离30公里:美兰机场

      由于返回的此段文本与提问问题余弦相似度超过阈值所以保留该文档,讲该文档作为提问问题上下文提交到大模型。

      当然在这个简单的图谱可能看不出知识图谱的优势,但可以明显的看到经过知识图谱的RAG得到的上下文比普通基于向量的RAG其上下文多了实体集、关系集信息,如图谱质量较高实体与关系的比较精准此时的上下文对于LLM还是会有很大帮助,对于RAG的准确性也会有所提高;

标签:RAG,知识库,图谱,Chunk,实体,文档,定安县
From: https://www.cnblogs.com/softlin/p/18379101

相关文章

  • GNN-RAG:以RAG形式将 llm 的语言能力与 gnns 推理进行联合
    Paper: https://arxiv.org/abs/2405.20139知识图(KGs)以三元组(头、关系、尾)的形式表示人类精心制作的事实知识,它们共同构成了一个图。大型语言模型(LargeLanguageModels,llm)是QA任务中最先进的模型,因为它们具有理解自然语言的卓越能力。另一方面,图神经网络(GraphNeu......
  • 有手就会之使用Dify构建RAG聊天应用(基于私有知识库和搜索引擎)
    之前我的文章里写的是通过langchain来构建RAG应用,对于很多人来说。langchain作为一个框架上手难度大,代码不够直观。但是通过dify你将学会可视化搭建工作流。什么是dify?Dify是一款开源的大语言模型(LLM)应用开发平台。它融合了后端即服务(BackendasService)和LLMOps的......
  • Allen基因图谱:python Aabgen的安装
    1.abagen使用教程的官方链接:abagen:AtoolboxfortheAllenBrainAtlasgeneticsdata—abagen0.1.3-doc+0.g2aeab5b.dirtydocumentation2.在安装abagen之前先提前安装好一下的包window系统操作步骤:(1)安装好python(假如安装在E盘,E:\python\)(2)win+R打开任务管理器,输入......
  • 【树莓派开发】gcc编译器中出现warning: #pragma once in main file
    众所周知,#pragmaonce语句是防止头文件重复包含非常常用的一条语句VS编译器在创建.h文件的时候会自动帮你在开头添加这个语句但是在gcc编译器下,这个语句就可能会出现一些问题所使用编译器:VS2019(windows10)树莓派(linux-gcc)warning:#pragmaonceinmainfile在我尝试在linux环境......
  • 只需六步,从0到1教你搭建个人AI知识库
    在这个信息爆炸的时代,拥有一个个人AI知识库对于整理、学习和应用知识至关重要。本文将引导你通过五个步骤,从零基础开始搭建起一个高效的个人AI知识库。第一步:确定知识库方案搭建个人知识库的第一步是选择合适的方案。你可以选择对现有的大型语言模型(LLM)进行微调,或者结合LL......
  • RAG在PostgreSQL上的实现:使用Azure Container Apps和OpenAI构建智能问答系统
    RAG在PostgreSQL上的实现:使用AzureContainerApps和OpenAI构建智能问答系统随着人工智能技术的快速发展,越来越多的企业和开发者开始探索如何将AI能力整合到现有的应用系统中。本文将介绍一种基于检索增强生成(RetrievalAugmentedGeneration,RAG)的方案,通过结合AzureCo......
  • GraphRAG 检索增强+图模型
    https://arxiv.org/pdf/2404.16130往期的NaiveRAG基本都是显式检索,而GraphRAG通过知识图谱实现了总结能力。知识图谱通常是事先生成的,并存储在系统中,供用户查询和模型使用。1引入通常意义上,RAG的作用是从外部知识源中检索相关信息,使LLM能够回答有关私有或以前未见过的文档集......
  • 云存储抽象层-FluentStorage
    FluentStorage是一个.NET云存储抽象层,支持多种云服务提供商。它提供了一个统一的API来处理不同云服务提供商的Blob存储(如AWSS3,GCP,FTP,SFTP,AzureBlob/File/EventHub/DataLake)和消息传递(如AWSSQS,AzureQueue/ServiceBus)。这个库完全用C#编写,支持.NET5+和.NETStanda......
  • 大模型 | RAG 架构设计三阶段:Naive RAG 架构设计、Advanced RAG 架构设计、Agentic RA
    第一阶段:NaiveRAG架构设计大型语言模型(LLMs)虽然展现出卓越的性能,但在处理特定领域或知识密集型任务时,存在一些挑战,比如:产生虚假信息、知识陈旧以及推理过程的非透明性和不可追溯性。RAG技术作为一种有希望的解决方案,通过融合外部数据库的知识,有效应对了这些问题。它显著......
  • 个人成长加速器:Trilium Notes知识库构建指南
    前言信息即力量,组织决定效率--这句话不仅揭示了信息在现代社会中的核心价值,也指出了有效组织信息对于提升工作效率的重要性。正是基于这样的认识,一款名为Trilium的知识管理工具应运而生,它以其独特的组织模式和强大的功能,成为了众多知识工作者和终身学习者的得力助手。它源......