认识lightrag

LightRAG 由入门到精通 本文主要介绍 LightRAG 基本知识,处理流程。在官方文档基础上,进行部分调整和BUG修改,指导你快速搭起 LightRAG 的环境 阅读详情

lightrag是什么

1. Light RAG 介绍
1. 研究背景与动机
  • 传统 Naive RAG 只用向量检索 → 容易丢失实体间复杂关系,全局理解差,回答常碎片化(无法很好合成多跳、多源信息)。

  • GraphRAG(Microsoft)用社区摘要 + 图结构提升全局理解,但非常贵且慢:构建阶段 token 消耗巨大(常数十万到百万 token),增量更新几乎不可能。

  • LightRAG 要做的事:保留图结构的优势(捕捉关系、全局理解),但大幅降低成本与时间,支持增量更新,适合实际生产。

2. 核心创新:双层检索 

LightRAG 的关键设计是 dual-level retrieval(双层检索) + graph-enhanced text indexing(图增强文本索引)。

  • 知识图构建方式

    • 文档分块 → LLM 提取实体 + 关系 → 构建知识图(节点=实体,边=关系)。

    • 同时为每个实体/关系生成简短文本描述(key-value pairs),存入向量数据库。

  • 双层检索机制

    • 低层(low-level):针对查询提取具体实体/关系关键词 → 向量匹配最相关实体 + 直接邻居 → 提供精确细节。 (孙悟空的师傅是谁这种问题)

    • 高层(high-level):提取更抽象的主题/关键词 → 检索更广的上下文 + 高阶邻居(2-3跳)→ 提供全局视角。(西游记说的什么样的故事)

    • 最终把两层结果融合 → 给 LLM 更全面的上下文。

  • 增量更新

    • 新文档进来时,只更新受影响的局部图 + 向量,不需重跑整个 corpus。

    • 这点让LightRAG 在动态知识库场景下远比 GraphRAG 友好。

3. 系统整体流程
  1. 索引阶段:文档 → 分块 → LLM 抽实体/关系 → 建图 + 向量嵌入(实体/关系/文本块)。

  2. 检索阶段:查询 → 双层关键词提取 → 向量检索 + 图遍历(低层精确 + 高层全局)→ 融合上下文。

  3. 生成阶段:检索结果 + 查询 → 喂给 LLM 生成最终回答。

  4. 整个过程只用少量 API 调用,token 消耗极低。

2. 架构流程分析

也可以自行搜索资料综合分析。

功能介绍

  • 索引阶段

    • Input Documents → Text Chunks : 把原始文档切分成小块(chunks)

    • Store in Vector DB Storage : 把文本块的向量存入向量数据库(NanoVectorDB/ Faiss 等)

    • Store in KV Storage : 把实体/关系/块的元数据、描述、chunk_id 等存入 JSON KV 存储

    • Extract Entities & Relations : 用 LLM 从文本块中提取实体(人、物、地点等)和关系(谁对谁做了什么)

    • Max Cleaning Turns / Dedupe : 去重(set dedupe + LLM 进一步清洗),避免重复实体/关系

    • Update Description : 用 LLM 为去重后的实体/关系生成/优化描述(更简洁、准确)

    • Store in Knowledge Graph : 把实体(节点)和关系(边)存入知识图谱

  • 检索阶段

    • Query → Keywords Extraction : 用 LLM + 专用 Prompt 从查询中提取两组关键词: low_level_keywords(底层:实体导向) high_level_keywords(高层:主题/关系导向)

    • low_level_keywords → Embedding → Top Entities Results : 用底层关键词向量搜索 → 找到最相关的实体

    • high_level_keywords → Embedding → Top Relations Results : 用高层关键词向量搜索 → 找到最相关的关系

    • Top Entities Results → related text_units / related Relations / Local Query Context : 从 Top 实体拉取:相关文本块 + 直接相关关系 + 局部上下文

    • Top Relations Results → related text_units / Global Query Context : 从 Top 关系拉取:相关文本块 + 全局聚合上下文

    • Local Query Context + Global Query Context → Combined Context : 把局部 + 全局上下文融合(简单拼接或加权)

3. 实战案例
  • 模块安装

pip install lightrag-hku
  • 操作案例

#!/usr/bin/env python
# -*- coding: UTF-8 -*-



# pip install lightrag-hku

import asyncio
import os


from lightrag import LightRAG, QueryParam
from lightrag.llm.openai import openai_complete_if_cache, openai_embed
from dotenv import load_dotenv
from lightrag.utils import EmbeddingFunc
from lightrag.kg.shared_storage import initialize_pipeline_status
from sentence_transformers import SentenceTransformer

load_dotenv()

# 创建嵌入模型  512
model_name = r'D:\LLM\Local_model\maidalun\bce-embedding-base_v1'
WORKING_DIR = 'light_test'
model = SentenceTransformer(model_name)

# 准备大模型链接
async def llm_func(prompt, system_prompt=None, history_messages=[], **kwargs):
    return await openai_complete_if_cache(
        model="qwen3.7-plus",
        prompt=prompt,
        system_prompt=system_prompt,
        history_messages=history_messages,
        base_url=os.getenv("DASHSCOPE_BASE_URL"),
        api_key=os.getenv("DASHSCOPE_API_KEY"),
        **kwargs
    )


# 准备向量模型
async def local_embedding_func(texts):
    embeddings = model.encode(texts, convert_to_numpy=True, batch_size=32)  # 生成嵌入
    return embeddings


async def initialize_rag():
    rag = LightRAG(
        llm_model_func=llm_func,
        # 使用自定义本地嵌入函数
        embedding_func=EmbeddingFunc(
            embedding_dim=768,  # 模型维度,根据你的模型调整
            max_token_size=8192,  # 最大 token 长度,根据模型调整
            func=local_embedding_func  # 传入你的函数(异步或同步)
        ),
        # vector_storage="FaissVectorDBStorage",
        # window 添加之后会报错 RuntimeError: Event loop is closed   使用get_event_loop启动协程
        graph_storage='Neo4JStorage',

    )
    # IMPORTANT: Both initialization calls are required!
    await rag.initialize_storages()  # Initialize storage backends
    await initialize_pipeline_status()  # Initialize processing pipeline

    return rag


async def main():
    rag = await initialize_rag()
    # 第一遍生成好后,第二遍执行时,可以注释掉 代码开始位置。
    await rag.aclear_cache()
    with open('西游记.txt', 'r', encoding='utf-8')as f:
        data = f.read()
    task = loop.create_task(rag.ainsert(data))
    await asyncio.gather(task)
    # 第一遍生成好后,第二遍执行时,可以注释掉 代码结束位置。
    # 向量检索
    # da1 = await rag.aquery('孙悟空的虎皮裙怎么得到的?', param=QueryParam(mode="naive"))
    # print(da1)
    # da1 = await rag.aquery('美猴王被谁压在五指山下?', param=QueryParam(mode="local"))
    # print(da1)
    # da1 = await rag.aquery('五指山是谁的技能?', param=QueryParam(mode="global"))
    # print(da1)
    # da1 = await rag.aquery('唐僧的为什么要西天?为什么不去东天?', param=QueryParam(mode="hybrid"))
    # print(da1)
    da1 = await rag.aquery('孙悟空和观音菩萨有啥联系?', param=QueryParam(mode="hybrid"))
    print(da1)
    da1 = await rag.aquery('猪八戒和菩提祖师有啥联系?', param=QueryParam(mode="naive"))
    print(da1)




if __name__ == '__main__':
    # asyncio.run(main())
    loop = asyncio.get_event_loop()
    loop.run_until_complete(main())



观察结果:

查看neo4j控制台,没有建立任何实体和关系。


 

LightRAG 简单使用教程 我只展示了和gpt不同的地方,主要是换了LLM和embedding的调用方式,但我在个人电脑上使用ollama很慢,主要在LLM调用方面,半小时完成了不到20个chunk的图谱提取,embedding速度还行。我自己主要用的deepseek的api,但也试过本地部署的xinference,虽然模型自己调用没问题,但lightrag调用时会出现500gateway错误,试了qwen和chatglm都一样,但同时部署的embedding模型没出现问题。4.问答,它提供了多种维度的问答方式,含义就不说了。 阅读详情

相关推荐

GraphRAG 和 LightRAG

LightRAG 是一种优化版的检索增强生成(RAG)框架,旨在通过减少资源消耗和简化系统设计,实现轻量化与高效性。核心理念:轻量化设计:减少模型参数和计算复杂度,使其能在资源受限的环境中运行。实时性优化:提高系统响应速度,满足高实时性需求。模块化集成:提供灵活的检索与生成模块,便于在不同环境中部署。目标:在保证生成质量的同时,降低硬件要求和运行成本。为移动设备、边缘计算环境等提供优化解决方案。

putaolove的博客 1853

LightRAG应用一:[LightRAG & LightRAG WebUI]

LightRAG是一个基于知识图谱的RAG系统解决方案,支持本地部署与WebUI应用。系统支持文档矢量化处理,将文本分块并生成向量存储,同时构建知识图谱实体关系网络。WebUI提供文档管理、知识图库展示、语义检索和API管理功能,实现混合检索策略(语义向量+图谱关系),为LLM提供更丰富的上下文信息。该系统相比传统纯向量

HarryChenj的专栏 2966

GraphRAG竞争对手来了,跑通LightRAG

LightRAG是个精炼的RAG框架,专门用于通过检索关键知识片段来构建响应,并且整合了知识图谱和嵌入技术。与那些将文档简单拆分成独立片段的传统RAG系统不同,LightRAG进一步深化了这一过程——创建了实体与实体之间的关系对,将文本中的概念紧密联系起来。与微软的GraphRAG相比,两者有相似之处,但LightRAG在速度和成本上更具优势,并且支持对图谱进行增量更新,无需每次都重新生成整个图谱。

csdn1561168266的博客 3009

LightRAG学习使用

lightrag的简介及部署使用

分享各种测试中的用到的内容,一起学习 3127

黑客渗透测试后门隐藏技术揭秘

本文介绍了在授权渗透测试中隐藏后门文件(muma.exe)的多种技术手段。主要包括:通过WinRAR自解压脚本将后门与正常程序捆绑实现双开;利用系统自动运行目录和注册表实现开机自启;修改文件图标伪装成常用软件;将文件存放在冷门系统目录;设置系统+隐藏双重属性增强隐蔽性。此外还涉及对抗安全软件的加壳(UPX)、免杀(msfvenom编码)技术,以及进程注入、日志清除等运行隐藏方法。所有技术仅限合法授权测试使用,未经授权使用将面临法律责任。

m0_60781580的博客 1040

【电磁场计算】磁偶极子在外磁场中的受力

最近在总结电磁场计算公式的时候发现,关于磁偶极子受力的计算公式,在不同文献中的说明有点出入,在此特地写一篇博客澄清一下。

sky4403的博客 7462

LightRAG代码详解

LightRAG是一种基于图结构和双层检索机制的检索增强生成(Retrieval-Augmented Generation, RAG)系统,旨在通过优化检索效率和知识表示,提升自然语言处理任务的性能。LightRAG的架构分为两个主要部分:基于图的索引阶段和基于图的检索阶段。在索引阶段,系统利用大型语言模型(LLM)从文本块中提取实体和关系,并构建知识图谱。该图谱通过去重和LLM增强分析,生成高效的索引键值对,便于后续检索。

sherlockMa的博客 3746

多路输出电源的交叉调整率:从理论到无源优化实践

本文深入探讨了多路输出电源中的交叉调整率问题,分析了其物理根源及无源优化方法。通过漏感与耦合的理论分析,结合加权反馈、电感耦合等五种无源优化技术,帮助工程师有效解决交叉调整率挑战。文章还以TDK-Lambda CUT75系列为例,展示了优化技术的实际应用与效果。

weixin_26886855的博客 279

LightRAG论文解读

LightRAG是一个简单而快速的检索增强生成系统,它通过将图结构集成到文本索引和检索过程中,解决了现有RAG系统的关键局限性。

qq_62952999的博客 1900

AI: 机器学习的模型是如何训练的?(在试错中学习)

一句话理解机器学习一般训练过程 :通过有标签样本来调整(学习)并确定所有权重Weights和偏差Bias的理想值。 训练的目标:最小化损失函数 (损失函数下面马上会介绍) 机器学习算法在训练过程中,做的就是:检查多个样本并尝试找出可最大限度地减少损失的模型;目标就是将损失(Loss)最小化 在这里插入图片描述 上图就是一般模型训练的一般过程(试错过程),其中 模型: 将一个或多个特征作为输入,然后返回一个预测 (y’) 作为输出。为了进行简化,不妨考虑一种采用一个特征并返回一个预测的模型,如下公式

HowieXue 薛永浩的博客 3万+

1篇2章1节:在 Mac 上安装 Python,从环境检查到工具配置的完整指南

Python 是当今最流行的高级编程语言之一,广泛应用于数据分析、人工智能、自动化脚本和 Web 开发。虽然 macOS 曾自带 Python,但从 macOS 12.3 开始,系统不再默认提供可直接使用的版本,因此需要手动安装。本文将详细讲解如何在 Mac 上安装最新版本的 Python,如何验证安装是否成功,以及如何配置 IDLE 和 Python Launcher 等工具,为日常开发和学习打下坚实基础。即便你是完全的新手,也能按步骤完成环境搭建。

MD Code 848

LightRAG实践详解

e) all_edges_data组装all_edges, all_edges_pack, all_edges_degree, 并按照 (rank, weight) 倒序排序。从 use_text_units 提取数据,组成 text_units_section_list , 进一步生成 text_units_context。h) 按照max_token_size(4000)截取all_text_units , 存入 use_text_units。

2402

【深度学习】脸部修复,CodeFormer,论文,实战

Blind face restoration是一个高度 ill-posed 的问题,通常需要辅助引导来 1) 改善从降级输入到期望输出的映射,或者 2) 补充在输入中丢失的高质量细节。在本文中,我们展示了在一个小的代理空间中学到的离散码本先验可以通过将盲目的面部恢复建模为 a code prediction task来大大减少恢复映射的不确定性和模糊性,同时为生成高质量面部提供丰富的视觉元素。

q742971636的博客 2989

LightRAG

LightRAG 通过​​轻量化图谱索引​​与​​灵活检索策略​​,解决了传统 RAG 在动态更新与复杂关系推理上的瓶颈,特别适合需快速响应、资源受限的场景。其开源生态(支持 OpenAI/Ollama/Hugging Face 模型)和模块化存储设计,进一步降低了企业部署门槛。开发者可通过GitHub 项目获取完整代码与案例。

thesky123456的博客 2076

基于STM32设计的电能质量控制系统_353

本项目基于STM32F103RCT6微控制器设计了一套电能质量控制系统,实现了对火焰、烟雾、环境温湿度、电压、电流及功率等多项参数的实时监测与报警。系统通过MQ2烟雾传感器、火焰传感器、SHT30温湿度传感器及电力参数采集模块采集数据,采用高电平触发有源蜂鸣器进行异常报警。采集的数据通过ESP8266无线模块以AP+TCP模式上传至基于Qt开发的手机APP和电脑上位机,实现远程实时监控和历史数据管理。系统配备1.44寸LCD显示屏,实现本地数据显示。软件采用Keil5开发,采用寄存器编程方式,提高系统响应速

251

【WRF模拟】如何查看 WPS 的输入静态地理数据(二进制格式)?

如何查看 WPS 的输入静态地理数据(二进制格式)?

WW、forever的博客 632

LightRAG安装部署

LightRAG安装部署指南摘要:本文详细介绍LightRAG的完整安装流程,包括Python3.10环境配置、LightRAG服务器搭建、Ollama模型集成、Neo4j/Milvus数据库部署等关键步骤。重点说明通过REST API集成项目的推荐方案,并演示了hybrid混合检索模式的实际效果(响应时间约5秒)。同时提供了常见问题解决方案(如aiohttp安装报错)和环境参数调优建议(超时设置6000秒),附有官方文档参考和可视化操作截图,帮助开发者快速搭建这个融合关键词/语义/主题检索的智能问答系统。

qq_34067275的博客 2270

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

使用 TiDB Vector 构建 LightRAG 知识库

作者: 魔人逗逗 原文来源: https://tidb.net/blog/a3202a6b ...

TiDB 社区干货传送门 754

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

LightRAG+Ollama本地部署

下载测试数据:curl https://raw.githubusercontent.com/gusye1234/nano-graphrag/main/tests/mock_data.txt > ./book.txt。6.运行lightrag-server --llm-binding ollama --embedding-binding ollama。1.通过git clone准备代码:git clone https://github.com/HKUDS/LightRAG.git。

Wardell_wang的博客 6751

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

LightRAG基础原理解析

LightRAG-GIT地址LightRAG是个精炼的RAG框架,使用Python来实现,专门用于通过检索关键知识片段来构建响应,并且整合了知识图谱和嵌入技术。与那些将文档简单拆分成独立片段的传统RAG系统不同,LightRAG进一步深化了这一过程——创建了实体与实体之间的关系对,将文本中的概念紧密联系起来。它与微软的GraphRAG有相似之处,但LightRAG在速度和成本上更具优势,并且支持对图谱进行增量更新,无需每次都重新生成整个图谱。介绍完LightRag的关键技术,就来总体的介绍一下。

qq_33781946的博客 2570

简单理解 LightRAG

文章摘要: LightRAG(轻量级检索增强生成)是一种改进的AI信息检索框架,旨在解决传统RAG(检索增强生成)的局限性。传统RAG通过从外部数据源检索信息来增强大型语言模型(LLM)的生成能力,但存在知识碎片化、上下文有限和可扩展性问题。LightRAG通过引入知识图谱,将文档转换为结构化的知识网络,从而更好地理解实体之间的关系。其核心优势在于高效性和低成本,通过智能索引和双层检索策略,LightRAG能够在保持高准确性的同时,显著减少计算资源和时间消耗。LightRAG适用于保险、医疗、金融、法律等需

CODE杂谈 1299

轻量的基于图结构的RAG方案LightRAG

LightRAG出自2024年10月的论文《LIGHTRAG: SIMPLE AND FASTRETRIEVAL-AUGMENTED GENERATION》,也是利用图结构来增强RAG的能力,像是GraphRAG的简化版。它利用图结构来存储和检索文本数据,对于实体和关系不仅使用图存储,同时使用向量存储。检索时先用向量进行实体或关系召回,再借助图结构找到对应的chunk文本。

beingstrong的博客 2434

lightrag嵌入思路

│ │ └── enhanced_processor.py # 您新增的带RAG的处理器。src/ocr/processor.py # 如果修改了原文件。git add src/ocr/processor.py # 如果修改了。python test_ocr_with_rag.py # 您的测试脚本。│ │ ├── processor.py # 原有OCR代码。- 新增处理器:src/ocr/enhanced_processor.py。

2403_87387270的博客 683

LightRAG 源码级讲解

本文介绍了LightRAG类的本地安装与使用方法,重点分析了其核心功能实现。系统通过键值存储、向量存储等方式实现文档管理,采用异步方法处理文档插入和预处理流程。主要方法包括:apipeline_enqueue_documents用于文档去重和状态管理,apipeline_process_enqueue_documents实现多进程文档处理。系统支持文本分块、实体关系提取、向量分析等功能,通过ollama进行embedding处理,并利用大模型分析文档实体间关系。该框架强调异步处理和资源优化,适用于高效处理大

那一缕寒意,冰封千里 1454

LightRAG初体验

本文介绍了LightRAG的配置与使用指南。首先详细说明了安装后的.env配置文件参数设置,包括服务器、LLM模型(支持openai/ollama/azure等)、向量化模型、存储方式等核心配置项。接着展示了WebUI的文档处理功能,支持文件上传、分块和向量化处理。最后重点讲解了查询模块的工作流程,系统通过提取高低层关键词实现混合检索,提供Naive/Local/Global/Hybrid/Mix/Bypass六种查询模式,并支持重排模型优化结果。文中还附有常见问题解决方案和配置参数说明,为使用者提供了完整

qq_34067275的博客 2255
上一篇: WorkBuddy实战
下一篇: ragas评估
veminhe
博客等级 码龄14年 721粉丝 426原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值