Skip to content

Latest commit

 

History

History
141 lines (104 loc) · 7.22 KB

File metadata and controls

141 lines (104 loc) · 7.22 KB

九、RAG 框架

← 上一章:八、Agent 框架 | 返回总览 | 下一章:十、向量知识库 →

RAG(检索增强生成)框架。2026 年的趋势是向 Agentic RAG 和上下文工程演进。

主流 RAG 框架

框架 特点
RAGFlow 企业级知识处理引擎,深度文档解析,表格识别能力强
LlamaIndex 数据框架,RAG 核心工具,支持 Agent 集成
LangChain RAG 基础组件丰富,生态最大
Haystack deepset 出品,模块化 RAG 管线,支持主流向量库和 LLM
FastGPT 高速内容生成专家,轻量易用

RAG 框架选型对比

框架 文档解析 企业级 部署 学习曲线 适用规模 典型场景
RAGFlow 极强(深度文档解析、表格识别) 是 自托管/云 中 大 非结构化文档、表格密集型
LlamaIndex 强 是 自托管 中 大 数据框架、Agent 集成
LangChain 强(组件丰富) 是 自托管 中 大 生态最大,需要灵活组合
Haystack 强(模块化管线) 是 自托管 中 中-大 模块化 RAG 管线,向量库自由切换
FastGPT 中 否 自托管 低 中小 快速搭建知识库问答

5 分钟快速上手:用 LlamaIndex 搭建最简 RAG

# 1. 安装
pip install llama-index llama-index-embeddings-huggingface chromadb

# 2. 创建 test_rag.py
cat > test_rag.py << 'EOF'
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader, Settings
from llama_index.embeddings.huggingface import HuggingFaceEmbedding

# 设置中文 Embedding 模型
Settings.embed_model = HuggingFaceEmbedding("BAAI/bge-small-zh-v1.5")

# 加载文档(放入 data/ 目录)
documents = SimpleDirectoryReader("data/").load_data()

# 构建索引并查询
index = VectorStoreIndex.from_documents(documents)
query_engine = index.as_query_engine(similarity_top_k=3)
response = query_engine.query("文档的核心内容是什么?")
print(response)
EOF

# 3. 准备文档
mkdir -p data
echo "AI Wiki 是一个开源的 AI 开发知识导航项目..." > data/intro.txt

# 4. 运行
python test_rag.py

关键参数:similarity_top_k 控制检索文档数量,chunk_size 控制切分粒度(默认 1024,中文建议 256-512)。

选型路径

  • 快速验证 → FastGPT:小时级上线知识库问答
  • 文档密集型(PDF/表格) → RAGFlow:深度文档解析能力最强
  • 需要灵活编排 + Agent 集成 → LlamaIndex / LangChain
  • 模块化切换向量库和 LLM → Haystack
  • 企业私有化部署 → RAGFlow / Dify(低代码,可私有部署)

RAG 演进方向

GraphRAG

GraphRAG 在传统向量检索之上叠加知识图谱层,通过实体-关系抽取构建结构化语义网络,解决"片段式检索看不到全局关联"的问题。

核心流程:

文档 → 实体/关系抽取(LLM) → 知识图谱构建 → 图遍历 + 向量混合检索 → 生成

代表项目:

  • Microsoft GraphRAG(36.1K star):微软开源,自动构建实体知识图谱,支持全局摘要(Global Search)和局部检索(Local Search)两种模式
  • Neo4j + LLM:图数据库原生集成,适合已有 Neo4j 基础设施的企业
  • LightRAG(39.8K star):港大出品,轻量级 GraphRAG,成本更低

典型实践案例:

场景 为什么用 GraphRAG 效果
法律判例检索 法条之间相互引用,向量检索容易遗漏关联先例 图遍历可沿引用链追溯,召回率提升 30%+
医药文献分析 药物-靶点-疾病三者构成天然图结构 发现跨文献的间接关联,辅助药物重定位
企业制度问答 制度文件之间互相引用、存在层级关系 理解"上级制度→下级细则"的层级链
科研文献综述 论文引用网络是天然的知识图谱 沿引用链追踪研究脉络,生成结构化综述

Agentic RAG

Agentic RAG 用 Agent 替代固定的检索流水线——Agent 自主判断"该不该查、去哪里查、怎么查、查完够不够",实现动态多步检索。

区别于传统 RAG:

传统 RAG Agentic RAG
检索次数 一次 多轮,直到满足需求
检索源 固定向量库 向量库 + Web 搜索 + API + 数据库
决策主体 预设管线 Agent 自主决策
失败处理 静默返回不完整结果 重写查询、换源、自我纠错

典型架构:

用户提问 → Agent 分析意图
              ├── 需要检索?→ 选择检索源(向量库/Web/API)
              │                   → 评估结果质量
              │                   → 不满足?→ 重写查询重试
              └── 信息充足?→ 综合生成回答(含引用来源)

典型实践案例:

场景 Agent 行为 技术栈
竞品分析报告 先搜 Web 获最新动态 → 查内部文档补细节 → 交叉验证 → 生成报告 LangGraph + Tavily + 向量库
客服工单排查 查知识库 → 不够?查历史工单 DB → 还不够?查操作日志 → 给出根因 LangChain + SQL + 向量库
学术研究助手 检索论文摘要 → 筛选高相关 → 深度阅读全文 → 交叉引用追踪 → 综述 LlamaIndex + Semantic Scholar API
合规审查 检索法规条文 → 比对企业制度 → 标记冲突点 → 生成整改清单 RAGFlow + 规则引擎

落地建议:

  • 从简单场景起步:先用传统 RAG 跑通,发现"一次检索不够"时再加入 Agent 循环
  • 控制检索步数:建议上限 3-5 步,避免 Agent 无限循环消耗 token
  • 记录检索链路:每次检索的 query、来源、结果都应可追溯,便于调试和优化

多模态 RAG

支持图像、表格、音视频等非文本数据的检索增强生成。

代表项目:

上下文工程

从"丢一段检索结果给 LLM"升级为系统性编排上下文:去噪、排序、压缩、多文档融合,确保每一 token 上下文都有信息量。相关工具:LangChain Context、LlamaIndex Ingestion Pipeline。