知识图谱通过提取实体和关系构建结构化知识库,解决了传统RAG系统处理长文档时忽视块间关联性的问题。文章对比分析了GraphRAG和LightRAG两大框架:GraphRAG适合企业级场景但成本高昂,LightRAG则更轻量高效,支持增量更新和多种检索模式。LightRAG实战展示如何构建知识库并执行查询,其hybrid模式能结合实体关系和向量检索,提供更全面准确的答案,是学习知识图谱RAG的理想选择。
为什么使用知识图谱
基于向量的RAG的原理大致是这样:
- 内容分块、嵌入、存储并建立索引(建立知识库)
- 对查询进行嵌入,再进行相似性检索
- 将检索结果作为上下文提供给LLM
一个内容紧密关联的长文档(比如合同、法律文书、小说)分隔成多个小块后,可能只有一些零散块因向量相似性被检索到,这可能会导致:
- 检索时忽视了块之间的内在联系
- 难以通过检索结果重复还原文档的概括性见解
- 随着内容不断增加检索的质量难以维系
这被称为RAG的局限性。
知识图谱(Knowledge Graph,KG)尝试用另一个角度来解决这些局限性:
- 对原始内容进行分析,并抽取出知识(实体及实体间的关系)
- 将实体和内容分块进行嵌入、存储并建立索引(建立知识库)
可以看到知识图谱和基于向量的RAG的一个显著区别是:数据库中不仅保存了文档的内容,还保存了对文档的分析和认知,
在检索时,也会先检索到相关实体和关系再检索相关内容块,二者相结合作为检索的结果,使LLM能够生成更全面的答案。
相关文献表明:基于图的 RAG 系统始终优于纯粹基于文本块的RAG的检索方法,随着数据集规模的增加,这种差距变得尤为明显。
开源知识图谱框架
目前,热门的开源知识图谱框架主要有:微软发布的Graph RAG和香港大学发布的LightRAG。
GraphRAG
GraphRAG 流程的基本步骤如下:
索引
- 对原始语料切分为TextUnit,从中提取实体、关系和关键声明
- 在实体中执行社区检测,并生产成多粒度的社区摘要和报告
- 将实体嵌入到图向量空间中,文本块嵌入到文本向量空间中
查询
- 全局搜索:遍历所有社区摘要和报告
- 局部搜索:识别出相关实体,进而提取相邻的实体、关系和社区
- DRIFT搜索:为局部搜索引入社区信息
- 基本搜索:在文本块上进行向量搜索
总体来讲,GraphRAG能够出色地处理全局或高级查询,并且对于关系密集、需要深度推理的查询,效果极佳。
不过劣势也有,比如因为需要大量、频繁的进行LLM调用,速度非常慢,成本非常高;新数据进行更新合并时,需要对整个知识图谱进行更新;如果语料内容关系稀疏的则应用效果一般。
在README中也有醒目的提醒:
⚠️警告:GraphRAG 索引可能是一个昂贵的操作,请阅读所有文档以了解所涉及的过程和成本,并从小处着手。
目前而看,GraphRAG更适合用在资源充足、数据庞大、内容垂直度高的成熟的企业重量级场景。
对于学习目的或者个人使用的轻量级场景,可优先考虑LightRAG。
LightRAG
基于图的文本索引
- 将文档分割成更小、更易于管理的部分,无需分析整个文档即可快速识别和访问相关信息
- 利用 LLM 识别和提取各种实体及其之间的关系,以键值对形式进行输出用于高效检索
- 识别并合并重复的实体和关系,缩减图形大小和图形操作开销
- 增量更新时按照同样流程构建小图,在对节点集进行并集操作,避免重新构建图谱
双层检索范式
- 低级检索:侧重与检索特定实体及其相关的的属性或关系,回答细节性主题
- 高级检索:聚合多个相关实体和关系信息,回答更广泛或抽象的主题
在检索时会融合图谱与向量,实现高效检索:
- 借助LLM从查询中提取出局部关键字和全局关键字
- 使用向量数据库将局部关键词与候选实体进行匹配,将全局关键词与链接到全局键的关系进行匹配
- 收集局部子图中的单跳相邻节点,最终形成包含实体、关系、原始文本的上下文
对比传统RAG,LightRAG能够更好的理解事物之间复杂的相互关系,帮助LLM实现更全面的回答;
对于GrapRAG,LightRAG在检索和增量更新方面,具有显著的降低成本、快速响应优势。
LightRAG 应用实战
安装
pip install lightrag-hkuLightRAG 除了提供核心组件外,还提供了两个扩展组件:
api组件:提供WebUI 和Ollama 兼容的接口,支持被聊天机器人直接调用
api组件
tools组件:提供RAG的交互式可视化工具
tools组件
注意:api组件仅支持ollama和openai的作为模型后端
如果使用HuggingFace或Gemini,则需要使用核心组件(或手动改造api组件)
启动
import os import asyncio from lightrag import LightRAG from lightrag.llm.openai import gpt_4o_mini_complete,openai_embed from lightrag.kg.shared_storage import initialize_pipeline_status WORKING_DIR="./dickens"asyncdefinitialize_rag():rag=LightRAG(# 指定工作目录,存储KV数据、向量数据、图数据等 working_dir=WORKING_DIR,# 指定LLM函数实现,可以使用OpenAI兼容接口 llm_model_func=gpt_4o_mini_complete,# 指定嵌入函数实现,可以使用本地嵌入模型 embedding_func=openai_embed,)await rag.initialize_storages()awaitinitialize_pipeline_status()returnrag asyncdefmain():rag=Nonetry:rag=awaitinitialize_rag()# 向rag导入新文档 withopen("./book.txt","r",encoding="utf-8")as f:await rag.ainsert(f.read())print('请在下方“>”处输入查询问题,输入“exit”则退出系统')whileTrue:query=input("> ")# 向rag检索内容 response=await rag.aquery(query)print(response)except Exception as e:print(f"An error occurred: {e}")finally:print('Bey~')ifrag:await rag.finalize_storages()if__name__=="__main__":asyncio.run(main())第一次启动时LightRAG 完成知识库的初始化(会稍微花点时间),初始化完成后,会在 dickens 目录下生成数据文件
dickens ├── graph_chunk_entity_relation.graphml ├── graph_data.json ├── kv_store_full_docs.json ├── kv_store_llm_response_cache.json ├── kv_store_text_chunks.json ├── lightrag.log ├── vdb_chunks.json ├── vdb_entities.json └── vdb_relationships.json下次启动前可以注释文档导入代码,即可直接进行内容检索
# 向rag导入新文档 # withopen("./book.txt","r",encoding="utf-8")as f:# await rag.ainsert(f.read())检索
LightRAG 支持多种检索模式:
- naive:传统的向量相似度检索
- local:利用局部关键字进行检索,关注实体细节信息
- global:利用全局关键字进行检索,关注实体关系和全局知识
- hybrid:结合了 local 和 global 模式,检索实体和关系信息
- mix:结合了 hybrid和 naive模式
- bypass:不进行任何检索,直接由LLM生成答案
默认情况下LightRAG使用 global 模式,并且允许在每一次检索进行自定义
print(await rag.aquery(query=query,param=QueryParam(mode="hybrid",top_k=5,response_type="single line"),))print(await rag.aquery(query=query,param=QueryParam(mode="naive",top_k=5,response_type="single line"),))print(await rag.aquery(query=query,param=QueryParam(mode="bypass",top_k=5,response_type="single line"),))我用小篇幅文档的实测结果来看:
hybrid 模式在回答中出现了多个有关联的实体(虽然有些实体没啥必要)
naive 模式能给出的答案也还行,但细节和扩展 比hybrid 模型差一些
bypass 模式长篇大论,离题万里。。。
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】
为什么要学习大模型?
我国在A大模型领域面临人才短缺,数量与质量均落后于发达国家。2023年,人才缺口已超百万,凸显培养不足。随着AI技术飞速发展,预计到2025年,这一缺口将急剧扩大至400万,严重制约我国AI产业的创新步伐。加强人才培养,优化教育体系,国际合作并进是破解困局、推动AI发展的关键。
大模型入门到实战全套学习大礼包
1、大模型系统化学习路线
作为学习AI大模型技术的新手,方向至关重要。 正确的学习路线可以为你节省时间,少走弯路;方向不对,努力白费。这里我给大家准备了一份最科学最系统的学习成长路线图和学习规划,带你从零基础入门到精通!
2、大模型学习书籍&文档
学习AI大模型离不开书籍文档,我精选了一系列大模型技术的书籍和学习文档(电子版),它们由领域内的顶尖专家撰写,内容全面、深入、详尽,为你学习大模型提供坚实的理论基础。
3、AI大模型最新行业报告
2025最新行业报告,针对不同行业的现状、趋势、问题、机会等进行系统地调研和评估,以了解哪些行业更适合引入大模型的技术和应用,以及在哪些方面可以发挥大模型的优势。
4、大模型项目实战&配套源码
学以致用,在项目实战中检验和巩固你所学到的知识,同时为你找工作就业和职业发展打下坚实的基础。
5、大模型大厂面试真题
面试不仅是技术的较量,更需要充分的准备。在你已经掌握了大模型技术之后,就需要开始准备面试,我精心整理了一份大模型面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余。
适用人群
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。