LangChain 1.2.2+ 完整知识脑图
1. 核心架构
langchain-core (核心包)
- Runnables (可运行对象)
- RunnableSequence - 链式组合
- RunnableParallel - 并行执行
- RunnableBranch - 条件分支
- RunnablePassthrough - 数据透传
- RunnableLambda - 自定义函数
- RunnableWithMessageHistory - 带历史记录
- LCEL (LangChain Expression Language)
- 管道操作符 |
- 组合运算符
- 流式处理
- 批处理
- 异步支持
- Messages (消息系统)
- SystemMessage - 系统消息
- HumanMessage - 用户消息
- AIMessage - AI回复
- FunctionMessage - 函数调用
- ToolMessage - 工具调用结果
- Prompts (提示模板)
- ChatPromptTemplate - 聊天模板
- MessagesPlaceholder - 消息占位符
- FewShotPromptTemplate - 少样本模板
- PipelinePromptTemplate - 管道模板
- Output Parsers (输出解析器)
- StrOutputParser - 字符串解析
- JsonOutputParser - JSON解析
- PydanticOutputParser - Pydantic模型解析
- CommaSeparatedListOutputParser - 列表解析
- StructuredOutputParser - 结构化解析
langchain-community (社区集成)
- 第三方集成
- 各种LLM提供商
- 向量数据库
- 文档加载器
- 工具集成
langchain (主包)
- 高级功能
- Agents
- Chains (部分)
- 工具和工具包
- 回调处理
2. LLM 集成 (Language Models)
Chat Models (聊天模型)
- langchain-openai
- ChatOpenAI - GPT-3.5/4/4o
- AzureChatOpenAI - Azure OpenAI
- langchain-anthropic
- ChatAnthropic - Claude 3.x/3.5
- langchain-google-genai
- ChatGoogleGenerativeAI - Gemini
- langchain-mistralai
- ChatMistralAI - Mistral
- 其他提供商
- ChatCohere
- ChatOllama - 本地模型
- ChatFireworks
- ChatGroq
- ChatDeepSeek
LLM (传统模型)
- OpenAI
- Anthropic
- HuggingFaceHub
- Ollama
Embeddings (嵌入模型)
- OpenAIEmbeddings
- HuggingFaceEmbeddings
- CohereEmbeddings
- OllamaEmbeddings
- BGEEmbeddings - 中文友好
3. 记忆系统 (Memory) - 新架构 🔥
Chat History (对话历史)
- BaseChatMessageHistory
- InMemoryChatMessageHistory - 内存存储
- RedisChatMessageHistory - Redis持久化
- PostgresChatMessageHistory - PostgreSQL
- MongoDBChatMessageHistory - MongoDB
- FileChatMessageHistory - 文件存储
- SQLChatMessageHistory - SQL数据库
History Management (历史管理)
- RunnableWithMessageHistory ⭐
- 自动历史管理
- Session管理
- 多用户支持
自定义实现
- 滑动窗口记忆
- Token限制
- 摘要记忆
迁移指南
- ❌ ConversationBufferMemory → ✅ InMemoryChatMessageHistory
- ❌ ConversationSummaryMemory → ✅ 手动实现摘要功能
- ❌ memory.save_context() → ✅ history.add_messages()
4. 检索增强生成 (RAG)
Document Loaders (文档加载器)
- 文本文档
- TextLoader - 纯文本
- PyPDFLoader - PDF
- UnstructuredPDFLoader - 复杂PDF
- Docx2txtLoader - Word
- UnstructuredMarkdownLoader - Markdown
- UnstructuredHTMLLoader - HTML
- Web内容
- WebBaseLoader - 网页
- SeleniumURLLoader - 动态网页
- PlaywrightURLLoader - 现代网页
- SitemapLoader - 站点地图
- 代码
- PythonLoader
- NotebookLoader
- DirectoryLoader - 批量加载
- API/数据库
- JSONLoader
- CSVLoader
- SQLDatabaseLoader
- GitLoader - Git仓库
Text Splitters (文本分割)
- RecursiveCharacterTextSplitter - 递归分割 ⭐
- CharacterTextSplitter - 字符分割
- TokenTextSplitter - Token分割
- MarkdownHeaderTextSplitter - Markdown分割
- HTMLHeaderTextSplitter - HTML分割
- SemanticChunker - 语义分割 🔥
- SpacyTextSplitter - NLP分割
- 参数配置
- chunk_size=1000
- chunk_overlap=200
- separators=["\n\n", "\n", " ", ""]
Vector Stores (向量数据库)
- 开源本地
- Chroma - 轻量级,推荐入门 ⭐
- FAISS - Facebook AI,高性能
- DocArrayInMemorySearch - 内存搜索
- 开源服务器
- Qdrant - 高性能 Rust
- Milvus - 企业级
- Weaviate - 云原生
- 云服务
- Pinecone - 托管服务
- Supabase - PostgreSQL扩展
- MongoDB Atlas - MongoDB向量搜索
- Redis - Redis Vector Search
Retrievers (检索器)
- 基础检索
- VectorStoreRetriever - 向量检索 ⭐
- search_type="similarity"
- search_kwargs=
- VectorStoreRetriever - 向量检索 ⭐
- 高级检索
- MultiQueryRetriever - 多查询生成
- ContextualCompressionRetriever - 压缩检索
- EnsembleRetriever - 混合检索(向量+BM25)
- ParentDocumentRetriever - 父文档检索
- SelfQueryRetriever - 自查询元数据
- 搜索类型
- similarity - 相似度搜索
- mmr - 最大边际相关性
- similarity_score_threshold - 阈值过滤
RAG Chains (RAG链)
- 方式1: LCEL
- prompt | llm | StrOutputParser()
- 方式2: create_retrieval_chain
- create_retrieval_chain(retriever, create_stuff_documents_chain(llm, prompt))
5. Agents (智能体) - 1.x 新架构 🔥
Agent Types (智能体类型)
- 工具调用 Agent
- create_tool_calling_agent - OpenAI风格 ⭐
- create_react_agent - ReAct推理模式
- create_structured_chat_agent - 结构化聊天
- create_openai_functions_agent - 函数调用
- create_openai_tools_agent - 工具调用(推荐)
Tools (工具)
- 内置工具
- DuckDuckGoSearchRun - 网页搜索
- WikipediaQueryRun - 维基百科
- PythonREPLTool - Python执行
- ShellTool - Shell命令
- RequestsGetTool - HTTP GET
- RequestsPostTool - HTTP POST
- GoogleSerperAPIWrapper - Google搜索
- WolframAlphaQueryRun - 数学计算
- 工具创建方式
- @tool 装饰器 ⭐
- StructuredTool.from_function
- 自定义 BaseTool 类
Agent Executor (执行器)
- AgentExecutor 配置
- max_iterations - 最大迭代次数
- max_execution_time - 超时时间
- early_stopping_method - 停止策略
- handle_parsing_errors - 错误处理
- return_intermediate_steps - 返回中间步骤
Multi-Agent (多智能体)
- 协作模式
- 顺序执行
- 并行执行
- 层级结构
- 状态共享
- 共享内存
- 消息传递
- LangGraph工作流
6. Chains (链) - 简化后的架构
推荐做法 ✅
- 优先使用 LCEL
- chain = prompt | llm | output_parser
实用链
- LLMChain → LCEL
- SequentialChain → chain1 | chain2 | chain3
- RouterChain → RunnableBranch
文档处理链
- StuffDocumentsChain - 填充文档
- MapReduceDocumentsChain - 映射归约
- RefineDocumentsChain - 精炼
7. Callbacks (回调系统)
Callback Handlers (回调处理器)
- 内置处理器
- StdOutCallbackHandler - 标准输出
- StreamingStdOutCallbackHandler - 流式输出
- FileCallbackHandler - 文件记录
- WandbCallbackHandler - W&B集成
- LangChainTracer - LangSmith追踪
Callback Manager
- CallbackManager
- 管理多个回调处理器
自定义回调
- BaseCallbackHandler
- on_llm_start
- on_llm_end
- on_llm_error
- on_tool_start
- on_agent_action
Token计数和成本追踪
- get_openai_callback
- total_tokens
- total_cost
8. 流式处理 (Streaming)
LLM Streaming
- 同步流式
- llm.stream()
- 异步流式
- llm.astream()
Chain Streaming
- 基础流式
- chain.stream()
- 事件流 (更细粒度)
- chain.astream_events()
流式类型
- 字符串流 - StrOutputParser()
- Token流 - 逐token输出
- 事件流 - 完整事件信息
9. 批处理 (Batch Processing)
Batch Invocation
- 同步批处理
- chain.batch()
- 异步批处理
- chain.abatch()
配置选项
- max_concurrency - 最大并发数
- return_exceptions - 返回异常
10. LangServe (部署服务) 🔥
FastAPI 集成
- add_routes()
- path="/my-chain"
- enabled_endpoints=["invoke", "batch", "stream"]
客户端调用
- RemoteRunnable
- invoke()
- stream()
- batch()
特性
- ✅ 自动生成 Playground UI
- ✅ OpenAPI文档 (Swagger)
- ✅ 流式支持
- ✅ 批处理支持
- ✅ 异步支持
11. LangSmith (监控和调试) 🔥
Setup
- LANGCHAIN_TRACING_V2=true
- LANGCHAIN_API_KEY
- LANGCHAIN_PROJECT
Tracing (追踪)
- 自动追踪
- 所有LLM调用
- 链执行
- Agent行为
- 工具使用
- 可视化
- 调用链路图
- 时间线
- 输入输出
Evaluation (评估)
- 创建数据集
- 运行评估
- 性能对比
Datasets (数据集)
- 创建测试集
- 版本管理
- 团队共享
12. LangGraph (工作流编排) 🔥
基础概念
- StateGraph
- 定义状态
- 添加节点
- 添加边
- 编译图
执行控制
- 检查点 (Checkpointing)
- 保存中间状态
- 断点续传
- 回滚
- 人机协作 (Human-in-the-loop)
- 等待人工确认
- 修改中间结果
- 干预决策
应用场景
- 复杂Agent工作流
- 多步骤任务编排
- 状态机实现
- 条件分支逻辑
13. 高级特性
Structured Output (结构化输出) 🔥
- with_structured_output()
- Pydantic模型
- JSON Schema
Function Calling (函数调用)
- bind_tools()
- tool_calls
- 并行调用
Caching (缓存)
- InMemoryCache
- RedisCache
- SQLiteCache
Retry Logic (重试机制)
- with_retry()
- stop_after_attempt
- wait_exponential_jitter
- retry_if_exception_type
Fallbacks (降级策略)
- with_fallbacks()
- 主模型失败时使用备用模型
Configurable Fields (可配置字段)
- configurable_fields()
- ConfigurableField
- 运行时配置
14. 实用工具
Token 计数
- get_openai_callback()
- total_tokens
- prompt_tokens
- completion_tokens
- total_cost
调试工具
- chain.get_graph().print_ascii()
- chain.config_schema()
- chain.input_schema.schema()
- chain.output_schema.schema()
日志配置
- logging.basicConfig()
- langchain.debug = True
15. 性能优化
异步处理
- ainvoke()
- astream()
- abatch()
批量优化
- batch()
- max_concurrency
缓存策略
- LLM级别缓存
- 嵌入模型缓存
- 检索结果缓存
向量存储优化
- 使用索引
- 批量插入
16. 错误处理
异常捕获
- OutputParserException
- 通用异常处理
优雅降级
- with_fallbacks()
- with_retry()
超时控制
- RunnableConfig
- timeout=30
17. 最佳实践
提示词工程
- 清晰的指令
- 提供示例(Few-shot)
- 使用分隔符
- 指定输出格式
- 测试和迭代
RAG优化
- 文档处理
- 合适的chunk_size
- 适当的overlap
- 元数据保留
- 检索策略
- 混合检索(向量+关键词)
- 重排序(Reranking)
- 过滤低相关性结果
- 生成优化
- 上下文压缩
- 引用来源
- 处理冲突信息
Agent设计
- 工具描述清晰
- 限制迭代次数
- 添加人工审核
- 错误处理完善
生产部署
- 环境变量管理
- 日志和监控
- 限流和熔断
- 成本控制
- 版本管理
18. 版本迁移指南
从 0.x 到 1.x 的重大变化
Memory系统 🔥
- ❌ ConversationBufferMemory
- ✅ InMemoryChatMessageHistory + RunnableWithMessageHistory
Chain构建 🔥
- ❌ LLMChain
- ✅ LCEL (prompt | llm)
Agent创建 🔥
- ❌ initialize_agent
- ✅ create_*_agent()
工具加载 🔥
- ❌ load_tools()
- ✅ 直接导入工具类
弃用功能列表
- ❌ langchain.memory.*
- ❌ LLMChain
- ❌ initialize_agent
- ❌ load_tools()
新增功能
- ✅ LCEL表达式语言
- ✅ 结构化输出
- ✅ LangGraph工作流
- ✅ LangServe部署
- ✅ 改进的流式API
- ✅ 更好的类型支持
19. 常见使用模式
简单问答
- ChatOpenAI + ChatPromptTemplate + StrOutputParser
带记忆的聊天
- RunnableWithMessageHistory
- InMemoryChatMessageHistory
- MessagesPlaceholder
RAG应用
- Document Loaders
- Text Splitters
- Vector Stores
- Retrievers
- RAG Chains
Agent应用
- create_tool_calling_agent
- AgentExecutor
- Tools
多链条件路由
- RunnableBranch
- 条件分支
20. 生态系统和扩展包
核心包
- langchain-core - 核心抽象
- langchain-community - 社区集成
- langchain - 主包
模型提供商包
- langchain-openai - OpenAI GPT
- langchain-anthropic - Claude
- langchain-google-genai - Gemini
- langchain-mistralai - Mistral
- langchain-cohere - Cohere
- langchain-huggingface - HuggingFace
工具包
- langgraph - 工作流编排
- langserve - API部署
- langsmith - 监控调试
可选依赖
- 向量数据库: chromadb, faiss-cpu, qdrant-client
- 文档处理: pypdf, python-docx, unstructured
- 工具: duckduckgo-search, wikipedia
21. 学习资源
官方资源
- 官方文档: https://python.langchain.com/
- API参考: https://api.python.langchain.com/
- GitHub: https://github.com/langchain-ai/langchain
- Discord社区: https://discord.gg/langchain
学习路径
- 基础概念 (1周)
- LCEL语法
- Runnables
- Prompts和输出解析
- 核心功能 (2周)
- LLM集成
- 记忆系统(新架构)
- RAG实现
- 进阶特性 (2周)
- Agents开发
- 工具创建
- LangGraph工作流
- 生产部署 (1周)
- LangServe
- 监控和调试
- 性能优化
实战项目建议
- 📝 智能聊天机器人
- 📚 文档问答系统
- 🤖 多功能Agent助手
- 🔍 知识库搜索引擎
- 📊 数据分析助手
22. 快速参考
常用导入
- 核心模块
- LLM模块
- 记忆模块
- RAG模块
- Agent模块
- 工具模块
常用配置
- 环境变量
- LLM配置
调试技巧
- 打印链结构
- 详细日志
- 回调
总结:1.2.2+ 核心变化
🔥 最重要的变化
- Memory → RunnableWithMessageHistory - 记忆系统完全重构
- LLMChain → LCEL - 推荐使用表达式语言
- Agent创建方式变更 - 新的create_*_agent函数
- 更好的流式支持 - astream_events
- 结构化输出 - with_structured_output
⭐ 推荐学习重点
- LCEL语法 - 核心表达式语言
- 新记忆系统 - RunnableWithMessageHistory
- RAG最佳实践 - 检索增强生成
- Agent开发 - 工具调用和编排
- LangGraph - 复杂工作流
🚀 下一步行动
- 安装最新版本: pip install -U langchain
- 阅读官方迁移指南
- 实践基础示例
- 构建自己的项目