资讯动态

LangChain 保姆级学习笔记|大模型应用开发框架(LCEL+RAG 实战

发布时间:2026/10/29 20:02:09 来源:尧图企业网站定制
标签LangChain大模型RAGLLMNLPAI应用开发阅读时长15 分钟适合人群AI 应用开发初学者、想上手 RAG 项目、面试备考【摘要】 LangChain 是当下主流的大模型应用编排框架很多同学刚上手会被繁多组件、新旧 API、各种 Chain 写法搞晕。本文从底层定位、核心组件、LCEL 表达式语言出发搭配两份可直接运行的 Python 代码基础对话链 极简 RAG 检索问答 Demo对比 LangChain / LangGraph / LlamaIndex整理踩坑经验与学习路线带你一次性打通 RAG 基础流程适合作为入门笔记、项目开发参考以及面试复习材料。【置顶导语】 说明LangChain 版本迭代速度很快网上大量 0.1 之前旧版教程已经失效本文全部采用官方主推的LCEL 管道写法摒弃老旧 LLMChain代码适配新版包结构。 配套后续会更新 LangGraph 多智能体、RAG 工程化优化、Milvus 向量库实战笔记欢迎点赞 收藏 关注一、LangChain 是什么二、LangChain 整体架构 核心组件1. Models 模型层2. Prompt 提示词模板3. Output Parsers 输出解析器4. Document 文档索引体系RAG 核心5. Memory 记忆组件6. Chain 链LCEL 管道7. Agent 智能体 Tools 工具8. LangSmith三、环境安装四、入门 Demo1LCEL 基础对话链可直接运行五、入门 Demo2极简 RAG 检索问答面试高频六、LangChain、LangGraph、LlamaIndex 怎么选七、优点 缺点 适用场景八、学习路线建议九、个人踩坑记录十、参考资料结语一、LangChain 是什么LangChain 是一个大语言模型应用开发编排框架它本身不是大模型。 一句话理解LLM 只是一个 “大脑”LangChain 是大脑的神经系统负责调度记忆、读取私有资料、调用工具、编排多步骤任务。核心定位统一抽象一套接口切换不同大模型OpenAI、通义千问、ChatGLM、Ollama 本地模型组件化提示模板、文档加载、文本切分、向量存储、记忆、链、Agent配套生态LangSmith调试、追踪、评估、LangGraph复杂有状态 Agent 流程二、LangChain 整体架构 核心组件✅ 重点新版本官方主推LCELLangChain Expression Language表达式语言使用管道符|串联组件可读性更强流式、异步支持更好。1. Models 模型层分为两类LLM文本补全模型老接口逐步淘汰ChatModel对话模型消息结构System / Human / AI现在主流包区分小提示langchain_core核心抽象跨模型通用langchain_openai/langchain_ollama厂商独立包langchain_community社区第三方集成2. Prompt 提示词模板解决硬编码 prompt 的问题支持变量填充、消息占位、历史对话插入。 常用类ChatPromptTemplate、MessagesPlaceholder专门存放聊天历史3. Output Parsers 输出解析器用来约束大模型输出格式普通字符串、JSON、Pydantic 对象、列表等。 项目开发非常实用保证结构化输出方便后端解析。4. Document 文档索引体系RAG 核心RAG 检索增强生成用来解决大模型幻觉、知识过时、私有数据无法读取的痛点。 整条标准链路文档加载 → 文本切分 → Embedding向量化 → 存入向量库 → 检索召回 → 拼入上下文交给LLMDocumentLoaderPDF、Markdown、网页、Word、CSV、文件夹加载TextSplitterRecursiveCharacterTextSplitter递归字符分割最常用控制 chunk 大小、重叠Embeddings文本转向量OpenAIEmbeddings、BGE、通义 EmbeddingVectorStore 向量库Chroma、FAISS、Milvus、Qdrant、PineconeRetriever 检索器从向量库根据 query 召回相关文档5. Memory 记忆组件大模型本身无状态每次调用互相独立Memory 用来保存对话上下文。 常见类型ChatMessageHistory原始消息列表ConversationBufferMemory完整历史ConversationSummaryMemory历史摘要适合长对话节省 token提示复杂状态、断点续对话优先使用 LangGraph Checkpointer6. Chain 链LCEL 管道LCEL 标准写法prompt | model | parser管道串行执行。 对比旧版 LLMChain代码简洁、原生支持流式输出、异步、批处理调试更友好。7. Agent 智能体 Tools 工具Agent 让 LLM 自己思考决策自主判断什么时候调用工具、调用哪个工具。Tools联网搜索、查数据库、计算器、API 接口、自定义函数经典范式ReAct思考 行动 观察循环复杂循环、分支、人工审核流程官方更推荐 LangGraph 而不是普通 Agent 链8. LangSmithLangChain 配套观测平台日志追踪、输入输出查看、token 消耗统计、评估、提示词版本管理。开发 RAG/Agent 强烈建议开启。三、环境安装# 基础核心包 pip install langchain langchain-core langchain-openai # 本地测试向量库Chroma pip install chroma # PDF文档加载依赖 pip install pypdf国内模型通义千问、智谱等安装对应的 community 包本地 Ollama 使用langchain-ollama。四、入门 Demo1LCEL 基础对话链可直接运行from langchain_openai import ChatOpenAI from langchain_core.prompts import ChatPromptTemplate from langchain_core.output_parsers import StrOutputParser # 1. 初始化模型替换为自己的api-key和base_url llm ChatOpenAI( modelgpt-3.5-turbo, api_keyxxx, base_urlxxx ) # 2. 提示模板 prompt ChatPromptTemplate.from_messages([ (system, 你是一个专业的技术博主回答简洁清晰适合写学习笔记。), (user, 请解释{question}) ]) # 3. LCEL 管道串联 chain prompt | llm | StrOutputParser() # 4. 同步调用 res chain.invoke({question: 什么是LCEL}) print(res) # 流式输出取消注释即可使用 # for chunk in chain.stream({question: 什么是LCEL}): # print(chunk, end)五、入门 Demo2极简 RAG 检索问答面试高频from langchain_community.document_loaders import PyPDFLoader from langchain_text_splitters import RecursiveCharacterTextSplitter from langchain_openai import ChatOpenAI, OpenAIEmbeddings from langchain_chroma import Chroma from langchain_core.prompts import ChatPromptTemplate from langchain_core.output_parsers import StrOutputParser from langchain_core.runnables import RunnablePassthrough # 1.加载文档 loader PyPDFLoader(test.pdf) docs loader.load() # 2.切分文档 splitter RecursiveCharacterTextSplitter( chunk_size500, chunk_overlap80 ) split_docs splitter.split_documents(docs) # 3.向量化存入Chroma向量库 embedding OpenAIEmbeddings() vector_store Chroma.from_documents(split_docs, embedding) retriever vector_store.as_retriever(search_kwargs{k:3}) # 4.RAG提示词 rag_prompt ChatPromptTemplate.from_template( 基于下面的上下文回答用户问题如果上下文没有答案就直接说不知道不要编造。 上下文{context} 问题{question} ) llm ChatOpenAI(modelgpt-3.5-turbo, api_keyxxx, base_urlxxx) # 5.RAG链检索器拿到上下文透传question送入prompt模型 rag_chain ( {context: retriever, question: RunnablePassthrough()} | rag_prompt | llm | StrOutputParser() ) # 提问 ans rag_chain.invoke(文档里面讲了什么内容) print(ans)RAG 进阶优化方向面试常问块大小调优、重排 Rerank、查询改写、多检索器融合、混合检索、上下文压缩。六、LangChain、LangGraph、LlamaIndex 怎么选LangChain适合通用 LLM 应用、快速原型、RAG、简单 Agent模型生态最全集成工具多线性流水线首选LangGraphLangChain 生态内的图编排库适合循环、分支、多 Agent、需要人工介入审核、状态持久化的复杂智能体LlamaIndex更偏向私有文档检索内置大量文档解析器、检索策略数据 ingestion 更强纯知识库问答优先考虑七、优点 缺点 适用场景✅ 优点组件高度抽象切换模型几乎不用改业务代码生态庞大向量库、文档、工具、第三方 API 集成极多LCEL 管道优雅原生支持流式、异步、批处理LangSmith 配套调试方便定位幻觉、召回差等问题❌ 缺点踩坑重点版本迭代非常快API 经常变动网上很多旧教程0.1 之前已经失效抽象有成本简单调用 LLM 直接用模型 SDK 更轻量没必要上 LangChain封装层数多出问题时排查链路较长新手容易被抽象困住 适合做企业私有知识库问答RAG带工具调用的 AI 助手查天气、查数据库、联网搜索多步骤任务编排、文档摘要、数据抽取快速验证 LLM 业务原型 不适合只需要单次简单对话、没有外部资料和工具极致性能、超低延迟的核心链路封装带来额外开销八、学习路线建议先理解大模型本身的局限幻觉、无状态、上下文窗口限制吃透 LCEL不要死学老版本 Chain 写法跑通基础 RAG Demo理解索引全链路然后做 RAG 优化rerank、chunk 策略学习 Memory 机制做多轮对话 RAG学习 Tools AgentReAct进阶LangGraph实现带循环、断点、人工确认的 AgentLangSmith 做评估、调优上线工程化九、个人踩坑记录包导入混乱分清langchain_core/langchain_openai/langchain_community很多类已经迁移旧导入方式会报错文本切分chunk_overlap 重叠很重要避免语义被切断不是 chunk 越小越好幻觉RAG 必须加约束提示词强制 “没有信息就说不知道”配合 rerank 过滤无关文档记忆溢出长对话不要无脑全量塞进 prompt用摘要记忆或者 LangGraph 持久化流式输出旧版 Chain 流式坑很多LCEL 流式稳定很多十、参考资料官方文档LangChain overview - Docs by LangChainLangSmithLangSmithLangGraph 文档Redirecting to LangGraph Documentation结语LangChain 本质是 “胶水框架”它不会让大模型变聪明但它让我们低成本把 LLM 接入真实业务数据和工具。现在工业界 RAGAgent 的项目基本都绕不开这套生态学好 LCEL 和 RAG 是 AI 应用开发的敲门砖。✨ 如果本文对你有帮助欢迎点赞、收藏、评论交流后续持续更新 LangGraph 多智能体、RAG 工程化、向量库调优实战 小思考提问大家跑 RAG 的时候遇到召回效果差一般怎么调欢迎一起讨论

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑