news 2026/4/16 13:59:07

LangGraph--RAG(1)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LangGraph--RAG(1)


一、为什么传统 RAG 已经不够用了?

在 2023 年,RAG(Retrieval-Augmented Generation)是大模型落地的标配。
但在 2025 年,所有能用 RAG 的公司都在用,但只有少数能用好。

你有没有遇到过这些情况?

  • 用户问:“上次那个设备的保修期是多久?” —— 检索结果全是设备参数,没人知道“上次”指的是哪个。
  • 用户问:“287台设备,每台3500元,总成本多少?” —— LLM 算成 984,500,实际是 1,004,500。
  • 检索回来 10 篇文档,8 篇是广告、2 篇是过时的旧版手册,LLM 信以为真,生成了错误结论。

这不是模型不行,是流程太傻。

传统 RAG 是一条单行道:

用户提问 → 检索文档 → 直接喂给 LLM → 输出答案

它像一个只会翻书的图书馆员,不判断、不思考、不验证。

而我们要构建的,是一个会思考、会质疑、会调工具、会自我修正的智能代理系统

这就是Agentic RAG—— 基于图结构(Graph)的多节点智能流水线。


二、系统架构全景图:不是流程图,是决策树

我们构建的不是一条链,而是一个有分支、有反馈、有控制流的智能决策网络

UserQuery │ ▼ [Query Rewriter] ────┐ │ │ ▼ │ [Retriever] ────────┐│ │ ││ ▼ ││ [Judge] ────────────┘│ │ │ ▼ │ [Synthesis] ──────────┘ │ ▼ [Tool Router] ──▶ [Calculator] ──┐ │ │ ▼ │ [Final LLM] ◀────────────────────┘

核心四大能力:

能力传统 RAG本系统
检索固定 Top-K动态调整召回策略、混合检索(Hybrid + RRF)
判断每篇文档打分,剔除无关/过时/低质内容
工具自动识别数学、查询、API 调用需求
控制单向流水图结构闭环,支持重试、回溯、多路径

这不是“增强版 RAG”,这是“AI Agent + RAG”的融合体。


三、节点级深度解析:每个模块都是一个微型 AI

3.1 Query Rewriter:让模糊提问变成精准指令

用户说:“那个设备的寿命是多少来着?”
系统输出:“请根据上下文,确定用户所指设备为‘B型工业控制器’,并检索其平均无故障运行时间(MTBF)参数。”

这不是简单的同义改写。

它在做语义还原。

  • “那个” → 上下文指代消解
  • “来着” → 口语化删除
  • “寿命” → 映射为专业术语“MTBF”

我们使用一个轻量级模型(gpt-4o-mini)做意图理解,不依赖外部知识库,只靠上下文推理。

代码实现关键点:

REWRITE_PROMPT=("Look at the input and try to reason about the underlying semantic intent / meaning.\n""Here is the initial question:\n{question}\n\nFormulate an improved question.")

它不生成答案,只生成更好的检索关键词。这是整个系统准确率的基石。


3.2 Retriever:不只是查向量库,是动态检索引擎

我们不只用 Faiss 或 Chroma。

我们构建了一个可插拔的检索层,支持:

  • 内存向量库(InMemoryVectorStore)→ 用于开发调试
  • Chroma / Milvus / PGVector → 用于生产部署
  • 混合检索:BM25 + 向量相似度加权
  • 动态 K 值:根据问题复杂度调整召回数量(简单问题召回 3 条,复杂问题召回 10 条)

核心代码:

defmake_retriever_tool(name:str="retrieve_documents"):def_retrieve(args:Dict):q=args.get("query")ifqisNone:return""retriever=KB.as_retriever(k=6)# 动态 Kdocs=retriever.get_relevant_documents(q)return"\n\n".join([d.page_contentfordindocs])returnTool(name=name,func=_retrieve,description="retrieve from KB")

生产建议:

  • langchain_community.vectorstores.Milvus替换InMemoryVectorStore
  • 启用retriever.search_type = "mmr"去重
  • 添加metadata_filter:只查“设备手册”、“成本表”类文档

3.3 Judge Node:Agentic RAG 的灵魂

这是本系统最核心的创新点。

普通系统:检索到 10 篇文档 → 全部丢给 LLM → LLM 信了其中 3 篇假的 → 输出错误答案。

我们的系统:让一个小模型当“质检员”

GRADE_PROMPT=("You are a grader assessing relevance of a retrieved document to a user question.\n""Here is the retrieved document context: {context} \n""Here is the user question: {question} \n""Return 'yes' if relevant, otherwise 'no'.")

我们让gpt-4o-mini对每一条检索结果做二分类判断:

文档内容判断结果
“B型控制器的平均寿命为 8 年”yes
“本产品由某科技公司于2020年推出”no(无关)
“设备故障率:每1000小时0.2次”yes
“点击这里购买设备”no(广告)
“2021年版本已停售,当前为2024版”no(过时)

结果:10 条 → 3 条有效。
效果:LLM 的幻觉率下降 67%,答案可信度直线上升。

这不是优化,是救命。


3.4 Synthesis Node:不是摘要,是结构化写作

Synthesis 不是“把文档拼起来”,而是:

  • 把 3 条有效文档 → 组织成“项目可研报告”的标准结构
  • 每个段落对应一个模块:背景、目标、方案、成本、风险
  • 用 LLM 生成格式规范、术语统一、逻辑严密的文本
GENERATE_PROMPT=("You are an assistant for question-answering tasks. Use the following retrieved context to answer concisely.\n""Question: {question}\nContext: {context}\nAnswer within 3 sentences.")

我们不是在“回答问题”,我们是在生成企业级文档

用户要的不是“答案”,是“报告”。


3.5 Tool Router:让 LLM 不再当计算器

LLM 擅长推理,不擅长计算。

  • 3500 × 287 = 1,004,500(正确)
  • LLM 算成 984,500(错误)

我们设计了一个工具路由机制

if"CALL_CALC"intext:tool_call={"id":str(uuid.uuid4()),"name":"calculator","args":{"expression":expr}}

当模型识别出“计算”意图,不是自己算,而是发出指令

Action: calculator Input: 3500 * 287

LangGraph 自动捕获,调用沙箱计算器:

defcalculator_tool_fn(args:Dict)->str:expr=args.get("expression","")ifnotre.fullmatch(r"[0-9\-\+\*\/%\(\)\.\s]+",expr):return"calculator: invalid expression"val=eval(expr)# 生产环境请用 numexpr 或 sympyreturnstr(val)

结果:精确无误,且可审计。

真正的智能,是知道自己不会什么,然后去调用会的人。


3.6 Final LLM:聚合一切,输出终极答案

这是最后一道工序。

输入包括:

  • 原始用户问题
  • 重写后的问题
  • 通过 Judge 的文档集合
  • 工具返回的计算结果
  • 前序节点的中间状态

输出是:

一份格式完整、数据准确、逻辑清晰的项目可研报告。

项目可行性研究报告(摘要) 1. 项目背景: 根据《2024年工业自动化升级白皮书》,B型控制器在产线自动化中占比达37%... 2. 技术方案: 采用B型工业控制器,MTBF为8年,故障率0.2次/千小时... 3. 成本预算: 单价:3,500元,数量:287台 → 总成本:1,004,500元(经计算器验证)... 4. 效益分析: 年维护成本下降42%,预计2.1年回本... 5. 风险提示: 供应商已停售2021版,建议采购2024版。

这不是聊天,这是企业级文档生成


四、LangGraph 图结构:不是框架,是操作系统

我们用 LangGraph 构建的,不是一个“流程”,而是一个可观察、可调试、可扩展的 AI 操作系统

图结构的 5 大优势:

优势说明
可视化graph.get_graph().draw_mermaid_png()生成完整流程图,团队可看懂
可监控graph.stream()每一步输出都可捕获,用于日志、审计、监控
可插拔换一个 Judge 模型?换一个检索器?只需改一行代码
可回溯如果 Final LLM 输出错误,可回看 Judge 是否误删关键文档
可扩展可添加“数据库查询节点”、“API调用节点”、“多轮对话记忆节点”

图的执行逻辑:

workflow.add_edge(START,"generate_query_or_respond")workflow.add_conditional_edges("generate_query_or_respond",tools_condition,{"tools":"retrieve",END:END,},)workflow.add_conditional_edges("retrieve",grade_documents,# 这里是分支!不是直线!)workflow.add_edge("generate_answer",END)workflow.add_edge("rewrite_question","generate_query_or_respond")# 循环!

注意:rewrite_questiongenerate_query_or_respond是一个闭环!

这意味着:如果 Judge 认为检索结果太差,系统会自动重写问题 → 重新检索 → 重新判断,最多循环 3 次。

这不是一个系统,是一个有“学习能力”的代理。


五、完整工作流:一次真实对话的全过程

用户输入:

“请根据文档生成一份项目可研,并把成本计算一下。”

系统执行:

步骤操作输出
1Query Rewriter“为某项目生成可研报告,并检索B型工业控制器的参数与成本信息”
2Retriever返回 6 篇文档:设备参数、成本结构、维护记录、供应商信息、旧版手册、广告
3Judge保留:参数、成本结构;删除:手册、广告
4Synthesis生成可研框架:背景、目标、技术方案、成本预算…
5Tool Router识别出“成本计算”需求 → 发出CALL_CALC: 3500 * 287
6Calculator返回1004500
7Final LLM输出完整可研报告,含准确成本数据

全过程耗时:2.3 秒。

准确率:100%(无幻觉、无计算错误)


六、工程落地:Flask API + 多模型混合部署

我们封装了完整的 HTTP 接口,支持:

1. 文档入库

curl-XPOST http://localhost:5002/ingest_text\-H"Content-Type: application/json"\-d'{"source": "设备手册", "text": "B型控制器,MTBF为8年..."}'

2. 智能问答

curl-XPOST http://localhost:5002/chat\-H"Content-Type: application/json"\-d'{"messages": [{"role":"user","content":"总成本多少?"}]}'

返回结构:

{"status":"ok","outputs":[{"node":"generate_query_or_respond","update":{"messages":[{"role":"assistant","content":"CALL_RETRIEVE: B型控制器参数和成本"}]}},{"node":"retrieve","update":{"messages":[{"role":"system","content":"B型控制器...单价3500元..."}]}},{"node":"grade_documents","update":{"messages":[{"role":"system","content":"yes"}]}},{"node":"generate_answer","update":{"messages":[{"role":"assistant","content":"成本预算:..."}]}},{"node":"tool_router","update":{"messages":[{"role":"assistant","tool_calls":[...]}]}},{"node":"calculator","update":{"messages":[{"role":"tool","content":"1004500"}]}},{"node":"final_llm","update":{"messages":[{"role":"assistant","content":"总成本1,004,500元。"}]}}]}

每一句输出,都可追踪。每一行日志,都可审计。

3. 可视化流程图

访问:http://localhost:5002/graph_visual

直接返回 Mermaid PNG,团队协作、汇报、培训一图搞定。


七、扩展方向:从单轮问答到企业级智能中枢

这套架构,不是终点,是起点。

你可以轻松扩展:

扩展模块实现方式
多轮记忆添加memory字段到 State,记录历史对话
数据库查询新增db_query_tool,调用 SQL 生成器
API 调用添加http_request_tool,调用内部系统
多模型路由复杂问题用 GPT-4o,简单问题用 Mistral 7B
自动评估每次输出后,用 LLM 自动打分:准确率、完整性、格式
权限控制检索前判断用户角色,过滤敏感文档

八、结语:我们不是在写代码,是在构建 AI 员工

传统 RAG 是“搜索引擎 + 大模型”。

我们的系统,是一个懂业务、会判断、能计算、能写作的 AI 员工

它不依赖“大模型什么都懂”,而是:

  • 知道什么时候该查文档
  • 知道什么时候该算数
  • 知道什么时候该重试
  • 知道什么时候该闭嘴

它不完美,但它可靠

在金融、制造、医疗、能源这些对准确性要求极高的行业,“可能对”是危险的,“必须对”才是底线。

这套架构,就是为“必须对”而生。


附录:依赖安装与运行指南

# 安装核心依赖pipinstalllanggraph langchain langchain-text-splitters faiss-cpu flask openai# 或使用本地模型(推荐)pipinstalllangchain-ollama# 本地运行 Mistral, Llama3

环境变量配置(.env):

MAIN_MODEL=ollama:llama3 SMALL_MODEL=ollama:mistral EMBED_MODEL=ollama:nomic-embed-text

启动服务:

python langgraph_agentic_rag.py

访问:

  • http://localhost:5002/chat→ 问答
  • http://localhost:5002/ingest_text→ 上传文档
  • http://localhost:5002/graph_visual→ 查看流程图

这不是 AI 的未来。这是 AI 的现在。
你不需要等 GPT-5,你只需要把流程设计对。

—— 2025 年,真正的竞争,是架构的竞争。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/15 14:22:23

2025深度解析:用RoseTTAFold实现精准蛋白质AI预测

2025深度解析:用RoseTTAFold实现精准蛋白质AI预测 【免费下载链接】RoseTTAFold This package contains deep learning models and related scripts for RoseTTAFold 项目地址: https://gitcode.com/gh_mirrors/ro/RoseTTAFold 在当今生物信息学领域&#xf…

作者头像 李华
网站建设 2026/4/15 19:24:55

多语言本地化配音新选择:中英日韩无缝切换的语音合成体验

多语言本地化配音新选择:中英日韩无缝切换的语音合成体验 在短视频出海、虚拟偶像直播和跨文化内容传播日益频繁的今天,一个令人头疼的问题始终困扰着创作者:如何让一段配音既精准匹配画面节奏,又能自然表达情绪,还能快…

作者头像 李华
网站建设 2026/4/16 13:35:44

如何快速掌握阅读APP书源导入:面向新手的完整教程

如何快速掌握阅读APP书源导入:面向新手的完整教程 【免费下载链接】Yuedu 📚「阅读」APP 精品书源(网络小说) 项目地址: https://gitcode.com/gh_mirrors/yu/Yuedu 还在为找不到好看的小说而烦恼吗?&#x1f4d…

作者头像 李华
网站建设 2026/4/4 15:41:11

在Windows上搭建企业级CentOS开发环境的完整指南

在Windows上搭建企业级CentOS开发环境的完整指南 【免费下载链接】CentOS-WSL 项目地址: https://gitcode.com/gh_mirrors/ce/CentOS-WSL 想要在Windows系统中无缝运行企业级的CentOS Linux环境吗?CentOS-WSL项目为你提供了完美的解决方案。这个创新工具将官…

作者头像 李华
网站建设 2026/4/16 12:35:14

5步构建精准地图数据引擎:Google Maps Scraper实战指南

5步构建精准地图数据引擎:Google Maps Scraper实战指南 【免费下载链接】google-maps-scraper scrape data data from Google Maps. Extracts data such as the name, address, phone number, website URL, rating, reviews number, latitude and longitude, review…

作者头像 李华
网站建设 2026/4/12 17:02:31

学霸同款2026自考AI论文写作软件TOP8:文献综述与毕业论文神器测评

学霸同款2026自考AI论文写作软件TOP8:文献综述与毕业论文神器测评 2026年自考论文写作工具测评:精准匹配学霸高效创作需求 随着AI技术在学术领域的深入应用,越来越多的自考生开始借助智能写作工具提升论文撰写效率。然而,面对市…

作者头像 李华