LightRAG 框架与 WebUI 本地部署及应用
LightRAG 是一个基于知识图谱的检索增强生成(RAG)框架,通过构建实体关系网络实现双层检索范式。 LightRAG 的技术栈、核心功能及本地部署流程,包括 PyCharm 环境配置、Bun 安装、服务器与 Core 部署以及 WebUI 界面使用。内容涵盖文档管理、知识图库、检索机制及 API 管理,并对比了传统 RAG、GraphRAG 与 LightRAG 的差异,详细阐述了索引、增量索引及查询模式的工作原理。

LightRAG 是一个基于知识图谱的检索增强生成(RAG)框架,通过构建实体关系网络实现双层检索范式。 LightRAG 的技术栈、核心功能及本地部署流程,包括 PyCharm 环境配置、Bun 安装、服务器与 Core 部署以及 WebUI 界面使用。内容涵盖文档管理、知识图库、检索机制及 API 管理,并对比了传统 RAG、GraphRAG 与 LightRAG 的差异,详细阐述了索引、增量索引及查询模式的工作原理。

LightRAG WebUI 本地部署与应用指南。
LightRAG 是一个为实现简单快速的检索增强生成(Retrieval-Augmented Generation)而设计的框架。通过从文档中构建知识图谱来增强传统的 RAG,能够更深入、更具上下文感知地理解源材料,超越了简单的基于关键词的检索,实现了一种利用广泛上下文和具体细节的双层检索范式。
LightRAG 配备了一系列功能,旨在提供一个灵活、强大且可观测的 RAG 系统。
官方资源:
工具要求:
配置 Python 环境 3.10.5,PyCharm 打开 LightRAG-1.4.9.10 源代码。在 PyCharm 终端 PowerShell 中安装 Bun。
powershell -c "irm bun.sh/install.ps1|iex"
pip install "lightrag-hku[api]"
pip install lightrag-hku
# 构建前端代码
cd lightrag_webui
bun install --frozen-lockfile
bun run build
cd ..
# 配置 env 文件
cp env.example .env
# 使用你的 LLM 和 Embedding 模型访问参数更新.env 文件
# 启动 API-WebUI 服务
lightrag-server
.env 文件修改 LLM 模型和 Embedding 模型示例
### 184 行:LLM Configuration - aliyuncs【qwen3-max】
LLM_BINDING=openai
LLM_MODEL=qwen3-max
LLM_BINDING_HOST=https://dashscope.aliyuncs.com/compatible-mode/v1
LLM_BINDING_API_KEY=sk-XXXXXXXXXXXXXXX
### OpenAI compatible embedding - aliyuncs【text-embedding-v1]
EMBEDDING_BINDING=openai
EMBEDDING_MODEL=text-embedding-v1
EMBEDDING_DIM=1536
### 不同的 embedding 模型嵌入向量的维度值不一样
EMBEDDING_SEND_DIM=false
EMBEDDING_TOKEN_LIMIT=8192
EMBEDDING_BINDING_HOST=https://dashscope.aliyuncs.com/compatible-mode/v1
EMBEDDING_BINDING_API_KEY=sk-XXXXXXXXXXXXXXX
所有服务器(LoLLMs、Ollama、OpenAI 和 Azure OpenAI)都为 RAG 功能提供相同的 REST API 端点。当 API 服务器运行时,访问上述地址。
文档矢量化分 4 段:原始文档变成可检索的向量结构,大致会经过:
生成的文件说明:
支持可视化查看知识图谱结构。
输入查询语句,检索上传的文件并响应。
提供 API 接口管理与测试功能。
LightRAG 在构建 RAG 系统方面提供了相对完整的解决方案。相比传统的纯向量检索,它的核心特点是引入了知识图谱,能把非结构化文本组织成实体 - 关系网络,这种混合检索策略(语义向量 + 图谱关系)确实能让 LLM 获得更丰富的上下文信息。
LightRAG 是一种基于 GraphRAG 的创新方法,结合了知识图谱的属性与基于嵌入的检索系统,使其既快速又高效,实现了 SOTA(最先进的技术方案)结果。它在多个基准测试中都优于 naive RAG 和 GraphRAG。
知识图谱是由一组节点组成的数据结构,这些节点保留了不同实体之间存在于不同数据点之间的关系。结构化知识图谱使 GraphRAG 能够通过连接点或对比信息片段,在多跳推理中表现出色。
GraphRAG 流水线涉及索引和查询:
1. Indexing – GraphRAG 索引
2. Querying – GraphRAG 查询
3. GraphRAG 的缺点
尽管 GraphRAG 看起来很有前景,但由于运营成本和计算复杂性,它并不是一个高效的解决方案。
一个简单、快速且高效的图 x RAG。LightRAG 通过将文档分割成更小、更易管理的块块 Di 来增强检索过程。这种分块策略使得快速识别相关内容,无需逐一浏览整个文档。
索引阶段,LightRAG 处理原始文本文档以构建一个结构化且可查询的知识图谱。 LightRAG 通过将文档分割成更小、更易管理的部分,增强了检索系统。这种策略允许快速识别并访问相关信息,而无需分析整份文件。接下来,我们利用大型语言模型识别和提取各种实体(例如名称、日期、地点和事件)以及它们之间的关系。通过该过程收集的信息将用于创建一个全面的知识图谱,突出整个文档集合之间的联系和洞见。
基于图的文本索引范式中使用的函数描述如下:
1.1 提取实体和关系 R() 大型语言模型 (LLM) 分析这些文本块,以识别关键实体(如人物、地点或概念)及其之间的关系(边)。例如,它可以从文本中提取'心脏病专家'和'心脏病'等实体,以及'心脏病专家诊断心脏病'等关系:'心脏病专家评估症状以识别潜在心脏问题。'为了提高效率,原始文本被分割成多个区块。
1.2 用于键值对生成 P() 的 LLM 分析 采用 LLM 赋能的分析函数为每个实体节点和关系边生成文本键值对。每个索引键是一个单词或短语,便于高效检索,而对应的值则是一个文本段落,总结了外部数据中的相关片段,以辅助文本生成。实体使用其名称作为唯一的索引键,而关系则可能拥有多个索引键,这些索引键源自 LLM 增强,包含来自连接实体的全局主题。
1.3 去重以优化图作 D(.) 去重函数,识别并合并原始文本不同段的相同实体和关系。这一过程通过最小化图的大小,有效减少了图作的开销,从而实现更高效的数据处理。
为了从特定文档块及其复杂的相互依赖关系中获取最相关的上下文,LightRAG 提出在详细和抽象层面生成查询键。 借助基于图的文本索引,LightRAG 流水线采用双层检索策略。该方法从 KG 内的多跳子图中识别低级和高级键,以回答多样化的查询。
双层检索查询过程:
对于给定的查询,LightRAG 的检索算法会同时提取本地 k(l) 和全局查询关键词 k(g)。然后利用向量相似度,将相关实体匹配到带有低层密钥的本地查询和带有高级概念的全局查询关键词。 通过在局部子图中收集一跳邻近节点,LightRAG 集成了额外的上下文层,提高了图索引中边结果的相关性。这种双层检索结构结合了关键词匹配与由构建的 KG 诱导的相关结构信息。
检索的内容是 LLM 剖析阶段的输出,包含名称、实体和关系的描述以及原文的简短摘要。
索引流程图:最后,构建的图索引保存为 graph_chunk_entity_relation.graphml,我们稍后将利用它来可视化 Neo4j 中的 KG。
vdb_relationship.json 文件存储通过 ID 连接源实体和目标实体之间的关系,以表示连接。 vdb_entities.json 包含从文本块中提取的具有唯一 ID、实体名称等的实体向量嵌入。 kv_store_llm_response.json 存储由大型语言模型生成的关于实体及其关系的摘要。它采用缓存机制防止对相同 ID 进行冗余索引。如用户输入 query = '重置下拉代码命令'。 kv_store_text_chunks.json 存储文档文本块及其相关的元数据,如 chunk_size(令牌)、实际内容、块索引、父文档 ID 等。
索引新文件,自动更新 LLM 响应 kv_store_llm_response.json,包含任何新的实体和关系,且不会与现有数据冲突或重复。 用户输入 query = 'redis 启动过程'。
LLM 响应,kv_store_llm_response.json 文件添加增量节点信息:global:keywords:b3f3bc653c7ca6f095224a9e787b1965
{
"global:keywords:323f0a4456f4753a60d7a65e23267c4e": {
"return": "{\"high_level_keywords\": [\"Code reset\", \"Dropdown functionality\"], \"low_level_keywords\": [\"\\u91cd\\u7f6e\\u4e0b\\u62c9\\u4ee3\\u7801\\u547d\\u4ee4\"]}",
"cache_type": "keywords",
"chunk_id": null,
"original_prompt": "重置下拉代码命令",
"queryparam": {"mode": "global", "response_type": "Multiple Paragraphs", "top_k": 40, "chunk_top_k": 20, "max_entity_tokens": 6000, "max_relation_tokens": 8000, "max_total_tokens": 30000, "user_prompt": ""
根据查询模式(如 naive、局部 local、全局 global 和混合 hybrid),相关关键词会从查询中提取,并与 KV 存储和向量数据库进行比较,以根据余弦相似度 cosine 检索候选实体和关系。
查询阶段流程:
# mode="naive"
await rag.aquery("What are the top themes in this story?", param=QueryParam(mode="naive"))
# mode="local"
await rag.aquery("What are the top themes in this story?", param=QueryParam(mode="local"))
# mode="global"
await rag.aquery("What are the top themes in this story?", param=QueryParam(mode="global"))
# mode="hybrid"
await rag.aquery("What are the top themes in this story?", param=QueryParam(mode="hybrid"))
代码参考:LightRAG-1.4.9.10\examples\lightrag_openai_demo.py

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online