news 2026/6/24 7:34:48

Langchain:22年的老古董,现在都不知道是什么?一千字带你通关

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Langchain:22年的老古董,现在都不知道是什么?一千字带你通关

LangChain 技术全栈速览

最小篇幅,最大信息密度。一文覆盖 LangChain 全知识体系。


一、知识图谱

┌─────────────────────────────┐ │ LangChain 应用层 │ │ ┌──────┐ ┌──────┐ ┌──────┐ │ │ │ RAG │ │Agent │ │Workflow│ │ │ └──┬───┘ └──┬───┘ └──┬───┘ │ │ │ │ │ │ │ └────────┼────────┘ │ │ ▼ │ │ ┌──────────────────────┐ │ │ │ Chain / LCEL │ │ │ └──────────┬───────────┘ │ │ ▼ │ │ ┌─────┐ ┌──────┐ ┌───────┐ │ │ │Model│ │Prompt│ │Parser │ │ │ └─────┘ └──────┘ └───────┘ │ └─────────────────────────────┘

二、环境底线

pip install langchain langchain-openai langchain-community pip install faiss-cpu chromadb pypdf streamlit
组件推荐方案替代方案
LLMDeepSeek(便宜中文化)OpenAI / 通义 / Ollama本地
向量库FAISS(入门)Chroma(生产)
EmbeddingOpenAI text-embedding-3-smallBGE-small-zh(本地免费)
搜索TavilyCohere Rerank

三、核心三板斧:Model → Prompt → Chain

3.1 Model:统一调用接口

from langchain_openai import ChatOpenAI ​ llm = ChatOpenAI(base_url="https://api.deepseek.com", api_key="sk-xxx", model="deepseek-chat") ​ # 三种调用方式 llm.invoke("问题") # 单次 llm.batch(["q1","q2"]) # 并发批量 for chunk in llm.stream("..."): # 流式

3.2 PromptTemplate:告别字符串拼接

from langchain_core.prompts import ChatPromptTemplate ​ prompt = ChatPromptTemplate.from_messages([ ("system", "你是{role}"), ("human", "{question}"), ]) # 填入变量 → 消息列表 → 喂给 LLM prompt.invoke({"role":"老师","question":"..."}).to_messages()

3.3 LCEL:管道符串联一切

chain = prompt | llm | StrOutputParser() # | 是核心语法 chain.invoke({"topic":"LangChain"}) # 输入 dict → 输出 str

RunnablePassthrough:原样传递数据RunnableParallel:并行执行多个子链(翻译 + 总结同时跑)


四、Memory:让对话有记忆

from langchain_core.prompts import MessagesPlaceholder from langchain_core.runnables import RunnableWithMessageHistory from langchain_community.chat_message_histories import ChatMessageHistory ​ # Prompt 中预留历史槽位 prompt = ChatPromptTemplate.from_messages([ ("system", "你是一个助手"), MessagesPlaceholder(variable_name="chat_history"), # ← 关键 ("human", "{input}"), ]) ​ # 包装成有记忆的链 chain_with_history = RunnableWithMessageHistory( prompt | llm, lambda session_id: ChatMessageHistory(), # 按 session_id 取历史 input_messages_key="input", history_messages_key="chat_history", )
要点说明
持久化SQLChatMessageHistory替换内存存储,重启不丢失
裁剪trim_messages(max_tokens=2000)防上下文溢出
session_id区分多用户,生产环境每条链对应一个 session

五、RAG:检索增强生成

5.1 五步流水线

加载文档 → 分块 → 向量化 → 存向量库 → 检索+生成
from langchain_community.document_loaders import PyPDFLoader from langchain_text_splitters import RecursiveCharacterTextSplitter from langchain_community.vectorstores import FAISS ​ # 1. 加载 docs = PyPDFLoader("doc.pdf").load() # 2. 分块 chunks = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50).split_documents(docs) # 3+4. 向量化 + 存储 vectorstore = FAISS.from_documents(chunks, embeddings) # 5. 检索 + 生成 retriever = vectorstore.as_retriever(search_kwargs={"k": 3}) ​ # 完整 RAG Chain rag_chain = ( {"context": retriever | format_docs, "question": RunnablePassthrough()} | prompt | llm | StrOutputParser() )

5.2 分块黄金参数

参数推荐值原理
chunk_size500-1000太小缺上下文,太大不精准
chunk_overlap10%防关键信息被截断在两块之间
separators\n\n\n优先在自然边界切割

六、RAG 进阶优化

优化四象限

方向技术原理
查询优化Query Rewrite口语→精确查询
HyDE用 LLM 先生成假设答案,再拿答案向量去搜
Multi-Query生成 3-5 个查询变体,合并去重检索
检索优化MMR最大边际相关,减少重复 chunk
RerankCross-Encoder 重排序(Cohere/LLM Rerank)
混合检索向量 + BM25 关键词
生成优化引用来源回答中标注页码
拒答机制检索不到 → "我不知道"
压缩上下文去除无关片段
评估RAGAS忠实度 + 相关性 + 上下文精确度 + 召回率

一句话:查询改写让搜得到 → MMR/Rerank 让搜得准 → 引用来源让答得可信。


七、Agent:LLM 自主调用工具

7.1 Chain vs Agent

ChainAgent
流程固定,开发者定义动态,LLM 自主决策
适用翻译→总结等确定性任务"帮我查天气再算个平均值"
核心LCEL 管道ReAct 推理循环

7.2 定义工具

from langchain_core.tools import tool ​ @tool def calculator(expression: str) -> str: """计算数学表达式,如 '3+5*2'""" return str(eval(expression)) ​ @tool def get_weather(city: str) -> str: """查询城市天气""" return f"{city}:晴 25°C"

7.3 创建 Agent

from langchain.agents import create_tool_calling_agent, AgentExecutor ​ agent = create_tool_calling_agent(llm, [calculator, get_weather], prompt) executor = AgentExecutor( agent=agent, tools=tools, max_iterations=5, # 防死循环 handle_parsing_errors=True, # 容错 ) executor.invoke({"input": "北京天气几度?"})

7.4 ReAct 模式

Thought → Action → Observation → Thought → ... → Answer "需要天气" | 调工具 | 拿到结果 | "够了" | 最终回复

八、LangGraph:复杂工作流

8.1 解决什么问题

LangChain Agent 流程不可控。LangGraph 用状态图精确控制每一步。

8.2 核心四要素

from langgraph.graph import StateGraph, START, END ​ class State(TypedDict): question: str answer: str category: str ​ # 节点 → 函数,输入 State 返回部分 State def classify(state): ... def answer_math(state): ... ​ graph = StateGraph(State) ​ graph.add_node("classify", classify) graph.add_node("math", answer_math) ​ graph.add_edge(START, "classify") # 普通边 graph.add_conditional_edges("classify", route_func, { # 条件分支 "math": "math", "code": "code", "general": "general" }) graph.add_edge("math", END) ​ app = graph.compile() app.invoke({"question": "1+1=?"})

8.3 三种经典模式

模式场景Graph 形态
条件分支问题分类→不同回答路径classify → {math/code/general}
循环优化生成→审核→不满意重写(最多N次)draft → review ⇄ revise
并行处理同时分析优点+缺点→汇总评分summarize → {strengths, weaknesses} → score

九、三个入门项目

项目技术栈一行卖点
PDF 智能问答LangChain + FAISS + StreamlitMMR检索 + 来源引用 + 流式输出
多工具 AgentLangChain Agent + FastAPI搜索/计算/天气/数据库 + 容错恢复
文档审核工作流LangGraph + FastAPI摘要→审核→决策→循环修改

十、极速质检

Q1: LangChain 核心模块?

Model(LLM封装)、Prompt(模板管理)、Chain(LCEL管道)、Memory(对话历史)、Retriever(RAG检索)、Agent(工具调用)、LangGraph(工作流)。

Q2: RAG 检索不准怎么办?

查询改写 → Multi-Query → HyDE → MMR → Rerank → 混合检索。依次叠加,观察效果。

Q3: Agent 和 Chain 区别?

Chain 流程固定(确定性),Agent 动态决策(开放性)。复杂条件/循环用 LangGraph。

Q4: 如何处理幻觉?

RAG绑定事实来源 + temperature=0 + 拒答机制 + 标注引用出处。三重保障最有效。

Q5: Memory 怎么持久化?

SQLChatMessageHistory存 SQLite,按session_id区分用户。长对话加trim_messages裁剪。


十一、技能优先级

必须掌握 强烈推荐 了解即可 ───────────────── ──────────────── ────────────── Python + LangChain LangGraph LLM 训练 RAG 全流程 Docker/Cloud 部署 分布式系统 Agent + Tool 向量库进阶(Milvus) 算法细节 LCEL 链式语法 RAGAS 评估 GPU编程 FastAPI 技术博客/开源贡献

十二、一条龙速通路线

第1天 → 跑通 LLM 调用 + LCEL 链 + Memory 对话 第2天 → RAG 全流程(PDF→向量库→问答) 第3天 → RAG 优化(Rewrite + MMR + Rerank + 评估) 第4天 → Agent 多工具 + ReAct 第5天 → LangGraph 条件分支 + 循环优化 第6天 → 3 个项目 + Streamlit/Docker 部署第7-8周 → 简历 + 面试 + 投递

🦞 最小篇幅,最大信息密度。收藏即掌握。

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

TVA为什么是企业智能化升级的战略支点(16)

重磅预告:本专栏将独家连载系列丛书《AI智能体视觉技术与应用》部分精华内容,该书是世界首套系统阐述“因式智能体”视觉理论与实践的专著,特邀美国 TypeOne 公司首席科学家、斯坦福大学博士 Bohan 担任技术顾问。Bohan先生师从美国三院院士、…

作者头像 李华
网站建设 2026/6/14 6:46:58

绝了!原来毕业论文还能这样写?2026降AI率平台推荐合集

还在为查重太高、AI痕迹明显、格式乱成一团而发愁?2026 年的 AI 论文工具早已全面升级,从选题构思到最终定稿,全流程智能辅助,帮你轻松应对论文写作难题!无论是逻辑大纲梳理、原创内容生成、降重处理、去除 AI 味道&am…

作者头像 李华
网站建设 2026/6/14 6:46:58

神经渲染引爆虚拟制片:技术原理、实战应用与未来蓝图

神经渲染引爆虚拟制片:技术原理、实战应用与未来蓝图 引言 配图:左侧是传统绿幕拍摄现场,演员在单调的绿色背景前表演;右侧是演员在由神经渲染实时生成的逼真虚拟场景中表演,导演可实时预览最终合成效果。 你是否想过…

作者头像 李华
网站建设 2026/6/14 6:47:00

JoyCon-Driver:Windows平台上的Switch控制器终极驱动解决方案

JoyCon-Driver:Windows平台上的Switch控制器终极驱动解决方案 【免费下载链接】JoyCon-Driver A vJoy feeder for the Nintendo Switch JoyCons and Pro Controller 项目地址: https://gitcode.com/gh_mirrors/jo/JoyCon-Driver 你是否曾经想过将Nintendo Sw…

作者头像 李华
网站建设 2026/6/14 6:46:56

潘多拉魔盒开了!AI每天疯狂找茬、24小时自创木马,一场席卷所有人的“数字海啸”正轰然逼近

网络研究观 你发现了吗?我们正在经历人类科技史上最魔幻、最令人后背发凉的权力交接。 就在几天前的2026年6月4日,美国众议院国土安全部举办了一场极其特殊的听证会。坐在证人席上的不是普通的行业学者,而是掌控全球网络命脉的“一线大佬”…

作者头像 李华