主流 RAG 与 GraphRAG 框架总结及推荐
引言
在构建智能问答系统时,随着数据规模扩大,传统检索增强生成(RAG)系统常面临检索效率下滑和生成质量下降的挑战。核心问题在于如何在数据冗余、检索效率低下以及生成内容不相关之间找到最佳平衡点。
RAG 的发展瓶颈
传统 RAG 系统通过检索模型提取最相关文档,再交给生成模型处理。这种流水线式设计存在两个主要问题:
- 检索不够精确:简单的相似性检索容易漏掉重要信息或引入噪声数据。
- 生成效率低下:无关或低质量的上下文增加了生成负担,降低了回答的质量和速度。
GraphRAG 框架介绍
GraphRAG 框架在微软公司内部广受赞誉,并衍生出了一系列轻量级的优化版本,如 LightRAG 与 nano-GraphRAG 等。这些框架的核心改进之处在于,它们在传统 RAG 框架的基础上,进一步强化了实体、社区以及文本切块之间的内在联系,并将现有知识图谱中的知识融入其中。这一系列的改进措施,显著提升了信息检索的召回率与准确性。
1.0 GraphRAG (微软)
最近微软团队开源了一款结合了检索增强生成(RAG)技术和知识图谱的先进框架。它旨在通过利用外部结构化知识图谱来增强大型语言模型的性能,有效解决模型可能出现的'幻觉'问题、领域知识缺失以及信息过时等问题。
GraphRAG 工作原理
索引建立阶段:
- 文本块拆分:原始文档被拆分成多个文本块,作为 GraphRAG 处理的基本单元。
- 实体与关系提取:利用 LLM 对每个文本块进行分析,提取出实体和关系。
- 生成实体与关系摘要:为提取的实体与关系生成描述性信息,作为图节点的属性。
- 社区检测:通过社区检测算法(如 Leiden 算法),识别图中的多个社区。
- 生成社区摘要:利用 LLM 为每个社区生成摘要信息,提供对数据集全局主题结构的高层次理解。
查询处理阶段:
- 本地搜索(Local Search):针对特定实体的查询,扩展到相关实体的邻居和相关概念。
- 全局搜索(Global Search):对于复杂查询,采用 Map-Reduce 架构,利用社区摘要独立并行地回答查询,然后汇总生成全局答案。
1.1 LightRAG (香港大学)
LightRAG 在信息之间保持关系,能产生更优质的答案,同时计算效率更高。其创新功能包括:
- 图增强文本索引:将图结构纳入文本索引,建立相关实体之间的复杂关系。
- 双层检索系统:同时处理低层(具体细节)和高层(抽象概念)的查询。
- 增量更新算法:在不重建整个数据索引的情况下,快速整合最新信息。
关键词提取示例:
{
"high_level_keywords": ["国际贸易", "全球经济稳定", "经济影响"],
"low_level_keywords": ["贸易协定", "关税", "货币汇率"]
}
评估显示,LightRAG 在检索精确度、响应速度等方面展现出超越 NaiveRAG 和 GraphRAG 的优势,且运行资源需求更低。
1.2 GraphRAG-Ollama-UI
使用本地 LLM 的 GraphRAG 应用,具有强大的 API 和用于索引、查询、聊天、可视化等功能。
1.3 nano-GraphRAG
一款简洁且易于定制的 GraphRAG 实现。代码量约 800 行,短小精悍,易于扩展,支持异步操作和类型注解。适合高级用户替换默认组件(LLM 函数、嵌入函数等)进行定制。
1.4 KAG (蚂蚁)
基于 OpenSPG 引擎和 LLM 的逻辑推理问答框架。核心功能包括知识与 Chunk 互索引结构、概念语义推理对齐、Schema-Constraint 知识构建等。支持逻辑符号引导的混合推理与检索。
1.5 Fast-GraphRAG
高效、可解释且精度高的快速图检索增强生成框架。核心特性包括知识的可解释性、低成本快速运行、数据动态性、实时更新以及基于 PageRank 的智能探索能力。
1.6 Tiny-GraphRAG
简洁版本的 GraphRAG 实现,包含添加文档、本地查询和全局查询功能。适用于学习和原型验证,不建议直接用于生产环境。
传统 RAG 框架介绍
传统的 RAG 框架集成了文本切块、向量转换、数据存储、信息检索、二次排序、内容生成及评估等关键环节。以下是主流实现:
2.1 AnythingLLM
具备完整的 RAG 和 AI 代理能力。
2.2 MaxKB
基于大语言模型和 RAG 的开源知识库问答系统,广泛应用于智能客服和企业内部知识库。
2.3 RAGFlow
基于深度文档理解的开源 RAG 引擎,针对复杂格式数据提供可靠的问答及引用。
2.4 Dify
开源的大型语言模型应用开发平台,结合 AI 工作流、RAG 流程、代理能力等。
2.5 FastGPT
基于 LLM 的知识库问答系统,提供开箱即用的数据处理和 Flow 可视化编排。
2.6 Langchain-Chatchat
基于 Langchain 和 ChatGLM 等不同大模型的本地知识库问答。
2.7 QAnything
致力于支持任意格式文件或数据库的本地知识库问答系统,支持断网安装。
2.8 Quivr
利用 GenerativeAI 的力量构建第二大脑,替代 OpenAI GPTs 和 ChatGPT。
2.9 RAG-GPT
利用 LLM 和 RAG 技术从自定义知识库学习,快速上线智能客服系统。
2.10 Verba
由 Weaviate 驱动的检索增强生成聊天机器人,提供端到端精简界面。
2.11 FlashRAG
用于复现和开发 RAG 研究的 Python 工具包,包含 36 个基准数据集和 15 种算法。
2.12 kotaemon
开源的干净且可定制的 RAG UI。
2.13 RAGapp
在企业中使用 Agentic RAG 的最简单方式。
2.14 TurboRAG
通过预计算的 KV 缓存加速检索增强生成,降低 TTFT 延迟。
2.15 TEN Framework
实时多模态 AI 代理框架,代表下一代 AI 代理框架。
2.16 AutoRAG
RAG AutoML 工具,使用 AutoML 风格自动化进行 RAG 评估和优化。
框架选型建议
在选择合适的 RAG 框架时,需根据具体场景权衡性能、成本与易用性。
- 追求极致效果与资源充足:选择 Microsoft GraphRAG。它提供了最全面的全局与局部搜索能力,适合需要深度理解复杂文档关系的场景,但资源消耗较大。
- 追求速度与轻量化:选择 LightRAG 或 nano-GraphRAG。LightRAG 在保持高性能的同时大幅降低了计算成本,适合大多数企业级应用;nano-GraphRAG 则更适合开发者进行定制化研究。
- 注重逻辑推理与垂直领域:选择 KAG。如果业务涉及复杂的逻辑推理和多跳事实问答,KAG 提供的 Schema 约束和逻辑推理能力更具优势。
- 快速搭建应用与可视化:选择 Dify 或 FastGPT。这两个平台提供了友好的 UI 和工作流编排,适合快速将 RAG 能力集成到业务系统中。
- 关注检索效率优化:考虑 TurboRAG。如果首字延迟(TTFT)是关键指标,预计算 KV 缓存的方案能显著提升响应速度。
综上所述,没有绝对最好的框架,只有最适合当前业务需求的方案。建议先在小规模数据上进行 POC 测试,再决定最终的技术栈。