知识图谱增强:RAG 到 GraphRAG 再到 LightRAG

【大模型】检索增强生成:从RAG、GraphRAG到LightRAG 自 ChatGPT 发布以来,大型语言模型(Large Language Model,LLM,大模型)得到了飞速发展,它在处理复杂任务、增强自然语言理解和生成类人文本等方面的能力让人惊叹,几乎各行各业均可从中获益。为了解决以上通用大模型问题,方案就应运而生。 阅读详情

知识图谱增强:RAG 到 GraphRAG 再到 LightRAG

一、概念速查

传统 RAG 的局限

问题表现根因
知识碎片化问答返回零散段落而非结构化答案向量检索只做语义匹配,不理解实体间的显式关系
多跳推理弱"A 和 B 有什么关系"类问题容易答偏文本块之间无关联索引
可解释性差无法追溯答案的推理路径检索过程是黑盒相似度计算
索引更新慢新增文档需全量重建所有 chunk 重新向量化

知识碎片化最为致命。向量检索本质是在高维空间中找"语义最像"的文本片段,但它不知道两个片段里的实体是否有关联。比如"苹果发布了新手机"和"库克出席了发布会"都能被"苹果"相关的问题召回,但向量检索不会把它们连接成"库克是苹果CEO"这条关系链——它只返回排名靠前的独立段落。

多跳推理弱的根因在于文本块之间没有关联索引。问"A 和 B 有什么关系"时,系统必须先找到 A 相关的块,再找到 B 相关的块,然后推断两者之间的关系。传统 RAG 的扁平结构让这种链式查找只能依赖 LLM 的"内在知识",等于放弃了检索增强的核心优势。

可解释性差源于检索过程是黑盒相似度计算。用户看到答案后无法追溯"为什么返回这段文本",更无法验证推理路径。这在医疗、金融等合规场景中是致命缺陷。

RAG / GraphRAG / LightRAG 对比

维度传统 RAGGraphRAG (Microsoft)LightRAG
检索方式向量相似度匹配向量 + 图谱社区遍历向量 + 图谱双层级检索
知识表示扁平文本块实体 + 关系 + 社区层次实体 + 关系(去社区层次)
多跳推理弱强(社区链式推理)强(双层级路由)
索引成本低(一次向量化)高(LLM 反复调用 + 莱顿聚类)中(实体抽取 + 去重)
增量更新不支持,需全量重索引不支持,需全量重建支持,增量插入图谱
适用场景简单事实问答专业领域深度推理动态数据、快速迭代
部署复杂度极低高(需 Neo4j / Milvus 等)低(内置 SQLite + NetworkX)

Neo4j 与 NetworkX

特性Neo4jNetworkX
类型原生图数据库(磁盘持久化)Python 内存图分析库
查询语言CypherPython API
规模千万级节点百万级以内
部署需独立服务(Docker 或安装包)pip install 即可
可视化Neo4j Browser / Bloom 内置Matplotlib / pyvis
场景生产环境持久化存储快速原型、小型实验

二、底层原理

RAG 基础流程

文档输入

文档切分 Chunk

Embedding 向量化

向量库存储

用户查询

查询向量化

ANN 相似度检索

Top-K 文本块

LLM 生成回答

切分策略: chunk_size=300-500,chunk_overlap=50-100。但无论参数怎么调,切分带来的语义断裂无法根除:一个实体被切到两个 chunk 中,两端都丢失了完整上下文。向量检索按余弦相似度排序,返回的 Top-K 片段可能来自文档的不同章节,LLM 需要自己"拼接"它们之间的逻辑关系——这恰恰是 LLM 最容易产生幻觉的环节。

Embedding 的天花板: 即便用最好的 Embedding 模型,语义匹配也无法建模实体间的显式关系。"苹果"和"iPhone"在两个 chunk 中被分别向量化,检索"苹果的供应链"时,系统能找到"苹果"相关的片段,但无法理解"iPhone→供应链"这条路径。

GraphRAG:实体抽取 + 图结构检索

GraphRAG 在 RAG 的基础上引入知识图谱构建层,核心流程如下:

局部

全局

文档

NER 实体识别

关系抽取

莱顿社区检测

层次化社区摘要

用户查询

查询类型

向量相似度检索

社区摘要检索

结果融合 + Rerank

LLM 生成

关键改进: 用莱顿(Leiden)算法对实体图做社区检测,每个社区自动生成摘要。全局查询时遍历社区摘要链,回答宏观问题效果显著提升。

代价: 索引阶段需反复调用 LLM(GPT-4o 级别),Token 消耗通常是 LightRAG 的 3-5 倍。100 份文档的索引耗时约 3-5 分钟。

实体抽取原理:从文本到三元组

GraphRAG 的实体抽取依赖 LLM 完成两个步骤:命名实体识别(NER)和关系抽取(RE)。

NER 层给 LLM 一段文本,要求它识别出预定义类型的实体。实践中,实体类型体系决定了图谱质量。只分"人名/地名/机构名"三类对技术文档远远不够——“Transformer”"GraphRAG"会被误归为地名。推荐扩展到五类:

类型示例
TECHNOLOGYGraphRAG, PyTorch, FAISS
CONCEPTretrieval-augmented generation
PERSONYoshua Bengio
ORGANIZATIONMicrosoft Research
LOCATIONSan Francisco

RE 层识别实体对之间的关系。有两类策略:一是让 LLM 直接输出 (subject, relation, object) 三元组;二是仅抽实体,同一段落内的实体自动生成 CO_OCCURS_IN 共现边。后者更稳定——LLM 抽关系时经常漏抽或凭空编造,而共现边隐含语义关联,下游图检索通过邻居扩展足以发现相关实体。

def extract_entities(text: str) -> list[dict]:
    prompt = f"""从以下文本中抽取实体。
实体类型: TECHNOLOGY, CONCEPT, PERSON, ORGANIZATION, LOCATION
输出 JSON 数组,每个元素包含 name 和 type。

文本: {text}
"""
    resp = client.chat.completions.create(
        model="gpt-4o-mini",
        messages=[{"role": "user", "content": prompt}],
        response_format={"type": "json_object"}
    )
    return json.loads(resp.choices[0].message.content)["entities"]

实体去重是另一个关键环节。"苹果公司"和"Apple Inc."指向同一实体,需用别名映射表或编辑距离做 resolution。不做去重的图谱密度和质量都会严重下降。

Neo4j 查询示例

生产环境中图数据库首选 Neo4j。以下 Cypher 查询覆盖了最常见的图操作:

// 创建实体节点
CREATE (p:Person {name: "姚明", birth: "1980-09-12"})
CREATE (c:Career {name: "篮球运动员"})

// 创建关系
MATCH (p:Person {name: "姚明"})
MATCH (c:Career {name: "篮球运动员"})
CREATE (p)-[:HAS_CAREER]->(c)

// 多跳查询:姚明同事圈
MATCH (p:Person {name: "姚明"})-[:HAS_CAREER]->(:Career)<-[:HAS_CAREER]-(other:Person)
RETURN other.name

// 路径查询:姚明到郭晶晶的关系路径
MATCH path = shortestPath(
  (a:Person {name: "姚明"})-[*..6]-(b:Person {name: "郭晶晶"})
)
RETURN path

// 社区检测:Louvain 算法聚类
CALL gds.louvain.stream({
  nodeProjection: 'Person',
  relationshipProjection: {
    CO_OCCURS_IN: {type: 'CO_OCCURS_IN', orientation: 'UNDIRECTED'}
  }
})
YIELD nodeId, communityId
RETURN gds.util.asNode(nodeId).name AS person, communityId

Neo4j 自带的 Browser 界面(http://localhost:7474)将查询结果直接渲染为节点-边图,对调试和质量检查非常直观。

LightRAG:增量更新与轻量部署

具体实体

宏观主题

新文档

实体抽取

实体去重+键值索引

增量挂载到图谱

双层级检索

用户查询

问题类型

低层级:相邻节点检索

高层级:全局图遍历

混合排序

LLM 生成

增量更新机制: 新增文档只需抽取新实体和关系,去重后合并到现有图结构中。不需要重建任何已有索引。删除操作同理,仅移除对应节点和边。

# LightRAG 增量插入示例
from lightrag import LightRAG, QueryParam

rag = LightRAG(
    working_dir="./rag_storage",
    embedding_func=openai_embed,
    llm_model_func=gpt_4o_mini_complete,
)

# 首次索引
await rag.ainsert("首次导入的文档内容...")

# 增量更新 — 直接插入新内容,无需重建
await rag.ainsert("新增的文档内容...")

# 增量删除 — 移除文档对应节点和边,已有索引不受影响
# 底层:定位该文档抽取的实体 → 移除出度为 0 的孤立节点 → 更新向量库
await rag.adelete("document_id_123")

# 增量更新 — delete + insert 的原子组合
await rag.aupdate("document_id_456", "更新后的文档内容...")

# 查询(自动路由到合适的检索模式)
result = await rag.aquery(
    "某实体的最新信息",
    param=QueryParam(mode="hybrid")
)

存储架构: 四层解耦 — KV 存储(SQLite/Redis)、向量存储(Chroma/Faiss)、图存储(NetworkX/Neo4j)、文档状态跟踪。原型阶段用内置 SQLite+NetworkX,生产切 Neo4j+Milvus。

三、架构设计原则

什么时候该用 GraphRAG

  • 你的问题 60% 以上需要多跳推理(“A 和 B 的关系是什么”、“影响链路怎么走”)
  • 知识库是静态的,更新频率很低
  • 你愿意为准确性支付较高的计算成本

什么时候该用 LightRAG

  • 知识库持续增长,需要高频增量更新
  • 资源受限(单机、无 GPU)
  • 需要快速验证知识图谱增强的效果

知识图谱构建质量把控

  • 实体类型体系要覆盖领域专有词: 只分人名/地名/机构名不够,技术文档需要 TECHNOLOGY、CONCEPT 等类型。实体类型太少导致图谱密度过低(>0.3 → <1.8 的差异直接影响召回)
  • 共现边可以替代关系抽取: LLM 直接抽关系不稳定。实测策略"只抽实体,同一页/段内实体自动生成 CO_OCCURS_IN 边"足够实用
  • 必须做实体去重: “苹果公司” vs “Apple Inc.” vs “苹果” 指向同一实体。用别名映射表或编辑距离做 resolution

增量更新策略

  • 时间戳标记: 每个节点和边记录 created_at 和 expires_at
  • 版本化删除: 标记 status: deleted 而非物理删除,支持回滚
  • 阈值触发重索引: 增量增量超过原始图 30% 时,做一次全量优化(compact)
  • 分阶段处理: 大文档集按 batch_size=10 分批次,每批独立抽取后合并,避免 OOM
  • 冲突解决: 增量插入的实体若与已有实体同名,按置信度保留高置信度的一方,expires_at 过期后自动软删除
GraphRAG与LightRAG:从理论到实践,如何选择最适合你的图增强RAG方案 本文深入对比了GraphRAG与LightRAG两大图增强RAG方案的核心原理与应用场景。GraphRAG通过构建层级化知识图谱,擅长处理需要深度多跳推理的复杂问题,但构建和检索成本较高。LightRAG采用扁平化知识网络与混合检索,在响应速度和增量更新上优势明显,更适合对时效性要求高的实时问答场景。文章提供了从技术原理到实战代码的全面分析,并给出了基于数据特性、问题类型和资源约束的五步选型决策框架,帮助开发者根据实际项目需求选择最合适的方案。 阅读详情

相关推荐

LightRAG与GraphRAG技术选型实战指南

检索增强生成(RAG)作为大模型落地知识服务的核心范式,正从通用架构走向场景深度适配。LightRAG通过语义锚点切分、稀疏向量嵌入与query指纹缓存等技术,将检索压缩为毫秒级向量狙击,显著提升FAQ类高频单点查询的响应效率与稳定性;GraphRAG则依托实体关系抽取、动态子图检索与路径可验证推理,在多跳逻辑、因果推演与强合规场景中构建语义网络,实现答案的可追溯与逻辑完备。二者并非迭代替代,而是面向‘关系密度’与‘决策确定性’差异的技术分治:前者重性能与轻运维,后者重推理与可解释。本文基于医疗、制造、法律

congbao6525的博客 460

LightRAG与GraphRAG:知识图谱增强RAG的双路径实践

RAG(检索增强生成)正从简单的向量相似匹配,演进为基于知识结构的理解范式。其核心在于突破传统‘分块+嵌入’导致的信息孤岛与关系断裂问题,转向对实体、属性与语义关系的显式建模。GraphRAG通过LLM驱动的三元组抽取与社区聚类,构建可解释、可追溯的层次化知识图谱;LightRAG则以轻量级KV结构和双级检索,在保留图谱推理能力的同时实现毫秒级响应与原子化增量更新。二者共同指向RAG的本质升级:从‘找得近’到‘连得准、答得稳’。本文聚焦金融、支付等强关联业务场景,详解如何用结构化知识组织替代扁平向量池,支撑

weixin_32285357的博客 356

Dinic算法的复杂度分析及证明

一般图 复杂度主要取决于dfs增广的过程。 将dfs部分的复杂度分成两部分来分析:1)修改增广路上边的流量。至多会增广mmm次,一条增广路的长度至多是nnn,所以这一部分的复杂度是O(nm)O(nm)O(nm)。2)dfs遍历时找增广路失败时经过的边。由于一旦从某条边出发找最短路失败了,我们就不会再走那条边(当前弧优化),所以这一部分的复杂度是O(m)O(m)O(m)的。故而dfs增广的复杂度是O...

这个博客已经搬到了:zhongyuwei.github.io 4392

RAG 知识图谱增强演进:GraphRAG 和 LightRAG 详解

介绍 RAG 知识图谱增强演进的 GraphRAG 和 LightRAG 两大核心技术。适合已经了解 RAG 技术及其流程的同学。

m0_49672865的博客 1022

AI Agent开发实战:100个真实场景题库解析

AI Agent开发涉及复杂的需求理解、架构设计及安全防护等关键技术环节。在工程实践中,开发者常面临需求偏差、系统崩溃等挑战,特别是在金融、医疗等高要求场景下。通过真实案例题库,开发者能系统性地掌握需求分析、架构决策树建模(如向量数据库选型)、安全攻防策略(如提示词注入防御)等核心技能。这些实战经验不仅能提升Agent的可用性和安全性,还能优化其在电商客服、智能家居等场景中的表现。题库采用动态难度系统,覆盖从基础到高级的开发挑战,是AI工程化落地的重要参考。

weixin_29057695的博客 345

LVDS系列11:Xilinx Ultrascale系可编程输入延迟(一)

按照IDELAYCTRL的参考时钟频率可以准确计算获取到,如200M参考时钟抽头分辨率为78ps,Ultrascale系列相对于7系列架构大改,体现便是U/U+系列的抽头增加到512个,同时每个抽头的分辨率就无法像7系列那样能得到一个准确的值,是一个波动的范围值,抽头分辨率随着工艺温度电压的变化而变化。EN_VTC:电压温度补偿开启的使用信号,COUNT模式下不能使用,必须保持为0,TIME模式下需要使用,在延迟工作时要启用温度电压补偿,在修改抽头值时需要关闭温度电压补偿,修改完后启用;

weixin_38828382的博客 1941

知识图谱增强 RAG 各 SOTA 方法对比:阿里 KAG VS 微软 GraphRAG VS 牛津 MedGraphRAG VS 港大 LightRAG,以及未来优化方向

美国 Glean 公司用的 GraphRAG 技术,在最新一轮融资超过 2.6 亿美元。说明,这个技术非常强大、而且潜力巨大。GraphRAG = 知识图谱 + RAG,优化全局搜索+局部搜索,以及部署指南MedGraphRAG:医学版 GraphRAG,以及部署指南LightRAG 知识图谱+大模型 新SOTA:超越 GraphRAG,效率提升99.98% + 准确率提升8-13% + 多样性提升 20-61% + 更新成本降低 80%,以及部署指南。

Debroon 8903

【新手必看】挖漏洞流程指南,黑客手把手教你挖漏洞月入过万!收藏这篇就够了!(附学习笔记)

【新手必看】挖漏洞流程指南,黑客手把手教你挖漏洞月入过万!收藏这篇就够了!(附学习笔记)【新手必看】挖漏洞流程指南,黑客手把手教你挖漏洞月入过万!收藏这篇就够了!(附学习笔记)

weixin_57514792的博客 1105

大模型入门必看:一文搞清楚GraphRAG、LightRAG、AgenticRAG

大模型入门必看:一文搞清楚GraphRAG、LightRAG、AgenticRAG

优快云_430422的博客 1653

STM32 Proteu直流电机正反转控制系统限位开关-0035

硬件组成:STM32F103C6单片机 +L298N电机控制电路+直流电机+3个按键(正转、反转、停止)+LED指示灯(正转、反转、停止)+限位开关(正限位 反限位) 1.通过3个按键(正转、反转、停止)控制电机的正转、反转、停止。 2.有3个LED指示灯,正转时正转指示灯亮。反转停止对应反转停止指示灯亮。 3.有自动正转反转停止功能,正转时当正限位按键按下时说明正转到最大距离。此时自动停止。反转一样。

zhaxiaobian_er的博客 2002

数据治理路径之辩:从“先治后用”到“边用边治”,企业如何选择最优路径?

数据治理是企业在数智化建设中的核心挑战,主要涉及三种时序策略:先治理后使用、先用后治理和边用边治。先治理后使用强调在数据应用前建立完整的治理框架,适合高合规要求的行业,但可能响应滞后。先用后治理则优先释放数据价值,适合快速变化的业务环境,但可能累积数据质量问题。边用边治寻求动态平衡,通过持续改进实现治理与应用的同步迭代,适合复杂数据环境。技术选型决策矩阵和实施方法论提供了具体的操作指南,建议根据组织特性和业务需求选择适配方案,并通过渐进式演进路径实现治理与业务的共生演进。

石榴姐yyds 405

GraphRAG、Naive RAG框架总结主流框架推荐(共23个):LightRAG、nano-GraphRAG、Dify等

设想你正致力于构建一个智能问答系统,该系统旨在从庞大的知识库中迅速而精确地提取关键信息,并据此生成自然流畅的回答。然而,随着数据规模的不断扩大,系统面临着严峻的挑战:检索效率逐渐下滑,生成内容的质量亦趋于下降。这正是当前众多检索增强型生成(RAG)系统亟需解决的核心问题——如何在数据冗余、检索效率低下以及生成内容不相关之间找到一个最佳的平衡点。RAG 的发展瓶颈:传统 RAG 系统通过检索模型提取最相关的文档,再交给生成模型处理。

python1234_的博客 2477

HBase批量导入工具:BulkLoad使用详解

HBase作为分布式NoSQL数据库,在大数据领域有着广泛应用。传统的数据写入方式(如Put操作)在面对海量数据导入时存在性能瓶颈。BulkLoad提供了一种高效的大批量数据导入方案,可以显著提高数据加载速度并降低集群负载。BulkLoad的核心原理和架构与传统写入方式的性能对比详细的使用方法和实现步骤性能优化技巧和最佳实践实际应用案例分析本文首先介绍BulkLoad的基本概念和原理,然后深入讲解其实现机制和关键技术。接着通过实际案例演示BulkLoad的使用方法,并分析性能优化策略。

大数据洞察的博客 1236

收藏!小白程序员轻松入门大模型:普通RAG、LightRAG、GraphRAG三款工具大对比

本文以清朝政府到近代民国的历史资料为例,对比分析了普通RAG、LightRAG、GraphRAG在索引结构、查询流程、回答效果和落地场景上的差异。文章重点解释了为何同一问题,三种RAG的检索路径和答案不同,并总结了它们各自适合解决的问题类型,帮助读者理解不同RAG工具的应用场景。

2401_85154887的博客 166

vue - 网站接入微信扫码登录功能详细教程,完整详细流程及完整功能示例源代码(附常见问题的解决方案与二维码样式修改方案)

vue.js项目植入微信登录,vue网页项目怎么做微信扫码登录,VUE项目中的微信扫码登录,VUE中最简单的js调用微信扫一扫功能,vue:如何设计网页的微信扫码登录功能,微信扫码功能官方文档,通过vue方式实现二维码扫码功能,vue调用微信扫码,vue H5 调用微信扫描二维码,Vue前端实现微信扫码登录,vue-wxlogin 微信授权登录组件,网站引入的微信登录框如何修改宽高或其他样式,wxlogin 组件插件怎么改变宽高,vue-wxlogin组件怎么自定义样式,微信网页授权,vue调用微信JSDK

✅ 精选推荐文章 6365

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

LLM —— 普通 RAG、LightRAG、GraphRAG 到底有什么区别?

GraphRAG 更关注“从大量资料中形成结构化理解”。它不只是抽实体关系,还会把图谱进一步组织成社区,并为每个社区生成摘要。普通 RAG:适合查历史事实。LightRAG:适合解释历史事件之间的因果和关联。GraphRAG:适合总结历史阶段、政治任务和结构性主线。普通 RAG = 向量库 + 原文库LightRAG = 向量库 + 原文库 + 轻量实体关系图GraphRAG = 知识图谱 + 社区摘要 + 局部/全局检索,向量库可以作为辅助先用普通 RAG 解决“能不能查到”。

i_k_o_x_s的专栏 552

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

LightRAG快速上手手册:零基础实现RAG增强检索

基于向量的RAG(检索增强生成)技术原理可概括为以下核心流程: 首先,将原始文档进行分块处理,通过嵌入模型转化为向量表示,并存储于向量数据库中建立索引,形成结构化知识库。其次,当用户发起查询时,系统对查询语句执行相同的嵌入操作,在向量数据库中通过相似性计算检索出与查询语义最相关的文本片段。最后,将检索到的文本片段作为上下文信息输入大语言模型(LLM),由LLM结合查询意图生成最终回答。 然而,针对内容高度关联的长文档(如法律文书、合同或小说),传统分块策略可能导致语义连贯性破坏。当文档被机械切分为多个独立

m0_59162559的博客 1518

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

LightRAG vs GraphRAG:哪个更适合你的LLM项目?详细对比与选型指南

本文深入对比了LightRAG与GraphRAG两大检索增强生成方案,为LLM项目选型提供决策指南。GraphRAG基于知识图谱,擅长处理复杂的多跳推理和关系探索,但构建和维护成本高。LightRAG则采用创新的双级检索系统,将图语义信息融入向量检索,在检索效率、部署简易性和成本控制方面表现突出,尤其适合以非结构化文本为主、对响应速度要求高的场景。

year5的博客 475

GraphRAG:当 RAG 遇上知识图谱,信息检索从此不一样了

GraphRAG 不是要"取代"传统 RAG,而是在传统 RAG 的基础上加了一层"知识结构"。当你的问题需要"连点成线"的时候,它比纯向量检索强太多了。从"搜文本"到"搜知识"。微软 GraphRAG 点燃了这个方向,LightRAG 让它更轻量,MiroFish 把它用到了群体智能预测,Kotaemon 让普通用户也能开箱即用。这个生态还在快速生长。GraphRAG 官方文档:https://microsoft.github.io/graphrag/

warm3snow的博客 610

大模型入门15:GraphRAG、LightRAG、AgenticRAG

传统RAG存在某些局限性,比如对于知识图谱支持准确性很差,同时还面临歧义查询或需要深入理解上下文的查询方面的困难。但是大模型私有化部署通常依赖于多个外部来源,这些来源可能具有不同的格式、标准和可靠性水平。我们需要更多的方案解决这些难题。为什么需要多类型RAG前文提到了,RAG是大模型定制化或者私有化部署时知识增强方法的最便捷、成本最低的方式,是一种新数据引入大模型的经济高效的方法,它大模型私有化部署必备的步骤。前文。

leah126的博客 945

GraphRAG vs LightRAG:如何根据业务需求选择最适合的图增强RAG框架?

本文深入对比了GraphRAG和LightRAG两种图增强RAG框架的技术特点与应用场景,帮助开发者根据业务需求选择最佳方案。GraphRAG适合需要深度推理的复杂知识网络,而LightRAG则优化了响应速度,适用于资源受限的实时场景。通过技术对比和实战指南,为构建智能问答系统提供决策框架。

weixin_30505225的博客 96

Graph RAG:知识图谱与检索增强生成的完美融合

本文系统介绍了基于知识图谱的检索增强生成(GraphRAG)技术的新进展,重点分析了GraphRAG、LightRAG和PathRAG三种代表性框架。GraphRAG通过层次化社区发现实现全局语义推理;LightRAG采用双层级检索和动态更新机制提升效率;PathRAG则利用关联路径剪枝减少信息噪音。研究表明,这些方法在保持传统RAG优点的同时,显著提升了处理复杂全局查询的能力,为知识密集型任务提供了新思路。文章还提供了完整的AI大模型学习资源包,涵盖从基础到应用的全方位内容。

2401_84204207的博客 1658

收藏必备!知识图谱如何解决RAG局限性?大模型开发者必读指南

知识图谱解决传统RAG系统忽视内容内在联系的问题,通过抽取实体关系构建更全面的知识库。GraphRAG适合企业级场景但成本高,LightRAG更适合轻量级应用,支持多种检索模式,在理解复杂关系和增量更新方面有明显优势,是大模型检索增强的有效解决方案。

优快云_430422的博客 668

RAG 不只是“向量库 + 大模型”:从普通 RAG 到 GraphRAG、LightRAG、HybridRAG

这篇文章围绕 RAG 技术的演进展开,介绍了普通 RAG 从文档解析、切片、Embedding、召回、重排到大模型生成的完整流程,并分析了它在复杂推理、跨文档关系理解等场景中的局限。

weixin_46874786的博客 547
上一篇: Agent 安全沙箱:Code Interpreter 与数据验证
下一篇: LangGraph 编排实战:从 Demo 到生产级部署
Ricky_Theseus
博客等级 码龄3年 126粉丝 158原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ricky_Theseus

感谢大家,祝您生活愉快

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值