GraphRAG
GraphRAG是什么,如何使用?
RAG
RAG解决的问题:使用检索增强生成(RAG)技术从外部知识源检索相关信息,使大语言模型(LLMS)能够回答涉及私有或者之前没有见过的文档集合的问题。
相关概念:
传统RAG
传统RAG的局限性—>AI的精确度不高,处理复杂查询难 :索引与检索的过程都是基于文本块的
- 无法有效捕捉实体之间的复杂关系和层次结构
- 文本块数有限,只能检索固定数量的最相关的文本块
GraphRAG
GraphRAG:核心特点是全局性,类似知识图谱。
GraphRAG在对数据集建立索引时做两件事:
- 提取实体Entity
- 提取实体之间的关系
GraphRAG是一种结合了检索(Retrieval)和生成(Generation)的技术,它通过利用外部知识库来增强大型语言模型(LLMs)的性能,有效解决了模型可能出现的“幻觉”问题、领域知识缺失以及信息过时等问题。GraphRAG通过图结构信息,能够更精确地检索和生成与上下文相关的响应。GraphRAG技术通过在生成过程中融入检索组件来提升生成内容的质量和相关性。与传统的RAG相比,GraphRAG能够从预先构建的图数据库中检索包含关系知识的图元素,如节点、三元组、路径或子图,从而更准确地捕捉关系信息,并生成更符合上下文的响应。
GraphRAG的工作流程
基于图的索引(Graph-Based Indexing):在索引阶段,构建图数据库并建立索引以支持快速检索
图引导检索(Graph-Guided Retrieval):检索阶段根据用户查询提取最相关的图元素
图增强生成(Graph-Enhanced Generation):生成阶段利用检索到的图数据生成有意义的输出或响应
知识图增强的问题回答流水线:
输入->转化成向量嵌入->向量搜索(向量索引)->上下文检索(基于从向量索引中检索到的相关文本数据,从知识图中检索出对应的结点,即实体与属性)->密码查询(可选择,在知识图谱上执行密码查询以检索附加信息)->上下文聚合(将向量索引和知识图检索的信息聚集形成与用户的查询相关的综合上下文)->基于LLM的答案生成->输出
GraphRAG三个主要阶段(详情):
- 基于图的索引 (Graph-Based Indexing, G-Indexing):
GraphRAG的初始阶段,目的是识别或构建与下游任务对齐的图数据库 ( G ) 并建立索引。
图数据库可以来源于公共知识图谱、图数据或基于专有数据源构建,如文本或其他形式的数据。
索引过程通常包括映射节点和边属性、建立连接节点之间的指针,以及组织数据以支持快速遍历和检索操作。
2.图引导检索 (Graph-Guided Retrieval, G-Retrieval):
在基于图的索引之后,图引导检索阶段专注于根据用户查询或输入从图数据库中提取相关信息。
给定用自然语言表达的用户查询 ( q ),检索阶段旨在从知识图中提取最相关的元素(例如实体、三元组、路径、子图)。
3.图增强生成 (Graph-Enhanced Generation, G-Generation):
图增强生成阶段涉及基于检索到的图数据合成有意义的输出或响应。
在这个阶段,生成器接收查询、检索到的图元素和可选的提示作为输入,以生成响应。
Graph Data
GraphRAG中使用的图数据按来源分为两类:开放知识图谱和自构建图数据。
Open Knowledge Graphs 开放知识图谱指来自公共可用存储库或数据库的图数据,使用这些知识图谱可以大幅减少开发和维护所需的时间和资源。
General Knowledge Graphs 通用知识图谱主要存储一般性、结构化的知识,通常依赖全球社区的集体输入和更新,确保信息库全面且持续更新。
索引方法
图数据的索引方法对于GraphRAG中的快速查询操作至关重要,通常包括图索引、文本索引和向量索引等方法。图索引保留整个图结构,方便访问边和邻近节点。文本索引将图数据转换为文本描述,允许基于文本的检索技术。向量索引将图数据转化为向量表示,促进快速检索和高效查询处理。
在实践中,通常更倾向于结合这些方法的混合方法,以优化GraphRAG系统中的检索效率和有效性。 索引过程通常包括映射节点和边属性、建立连接节点之间的指针,以及组织数据以支持快速遍历和检索操作。索引的粒度决定了检索阶段的粒度,对提高查询效率起着关键作用。
图索引 (Graph Indexing)
图索引是最常用的方法,它保留了图的整个结构。这种方法确保对于任何给定节点,它的所有边和邻近节点都容易访问。在后续的检索阶段,可以使用经典的图搜索算法,如广度优先搜索(BFS)和最短路径算法,来促进检索任务。文本索引 (Text Indexing)
文本索引涉及将图数据转换为文本描述,以优化检索过程。这些描述存储在文本语料库中,可以应用各种基于文本的检索技术,如稀疏检索和密集检索。一些方法使用预定义的规则或模板将知识图谱转换为人类可读的文本。向量索引 (Vector Indexing)
向量索引将图数据转换为向量表示,以提高检索效率,促进快速检索和有效的查询处理。例如,通过查询嵌入,可以无缝应用实体链接,并且可以使用有效的向量搜索算法,如局部敏感哈希(LSH)。
GraphRAG+Ollama实现本地部署
操作流程
1 | conda create -n graphrag-ollama-local python=3.10 |
常规操作
1 | ollama serve |
部署参考文章:
GraphRAG+Ollama 本地部署,保姆教程,踩坑无数,闭坑大法
服务器上GraphRag+Ollama避坑指南_graphrag.index.input.text warning warning! error l-CSDN博客
微软GraphRAG+ollama复现(附问题解决过程)_graphrag复现-CSDN博客
傻瓜操作:GraphRAG、Ollama 本地部署及踩坑记录_graphrag本地部署-CSDN博客
ollama轻松部署本地GraphRAG(避雷篇)_graphrag ollama-CSDN博客
GraphRAG+Ollama实现本地部署(最全,非常详细,保姆教程)_graphrag ollama-CSDN博客、
embedding
“Embedding” 在字面上的翻译是“嵌入”,但在机器学习和自然语言处理的上下文中,我们更倾向于将其理解为一种 “向量化” 或 “向量表示” 的技术,这有助于更准确地描述其在这些领域中的应用和作用。
Embedding向量不仅仅是对物体进行简单编号或标识,而是通过特征抽象和编码,在尽量保持物体间相似性的前提下,将物体映射到一个高维特征空间中。Embedding向量能够捕捉到物体之间的相似性和关系,在映射到高维特征空间后,相似的物体在空间中会聚集在一起,而不同的物体会被分隔开。
一文读懂Embedding的概念,以及它和深度学习的关系 - 知乎
相关链接:
大模型RAG入门及实践(非常详细)零基础入门到精通,收藏这一篇就够了-CSDN博客
官网:https://microsoft.github.io/graphrag/
B站教程:【graphrag的原理&源码及应用介绍】https://www.bilibili.com/video/BV1u6iFeAEx9?vd_source=edc55aafc64a16d1ce06a1e4a760e83d
B站论文讲解【【RAG论文解读】GraphRAG】https://www.bilibili.com/video/BV17W421d7FZ?vd_source=edc55aafc64a16d1ce06a1e4a760e83d
原理介绍:https://blog.csdn.net/l01011_/article/details/141873346
示例项目:yuntianhe2014/Easy-RAG: 一个适合学习、使用、自主扩展的RAG【检索增强生成】系统!可联网做AI搜索
【【GraphRAG+阿里通义千问大模型】构建+检索全流程实操,打造基于知识图谱的本地知识库,本地搜索、全局搜索二合一】https://www.bilibili.com/video/BV1yzHxeZEG5?vd_source=edc55aafc64a16d1ce06a1e4a760e83d