LangChain核心组件可用工具

108 阅读4分钟

LangChain 是一个用于构建基于大语言模型(LLM)应用的框架,其核心思想是“组合可复用的组件”来构建复杂链式逻辑。LangChain 的架构模块化清晰,主要包括以下 六大核心组件


🧩 一、LangChain 六大核心组件概览

组件功能说明主要子模块/工具
1. Models(模型)调用 LLM 或 Embedding 模型ChatOpenAI, HuggingFaceLLM, Ollama, AzureChatOpenAI
2. Prompts(提示)构建和管理提示模板PromptTemplate, ChatPromptTemplate, FewShotPromptTemplate
3. Chains(链)组合多个步骤形成工作流LLMChain, RetrievalQA, ConversationalRetrievalChain, SequentialChain
4. Memory(记忆)在对话中保持上下文状态ConversationBufferMemory, ConversationSummaryMemory, RedisChatMessageHistory
5. Indexes & Retrievers(索引与检索器)文档加载、切分、向量化、检索Document Loaders, Text Splitters, Vectorstores, Retrievers
6. Agents(代理)让 LLM 调用工具自主决策Zero-shot ReAct Agent, Self-ask Agent, Tool(如搜索、计算器等)

下面对每个组件进行 详细展开 + 可用工具 + 优缺点对比


1️⃣ Models(模型)

✅ 功能

  • 封装 LLM(生成)和 Embedding(向量化)模型的调用接口。
  • 统一 API,支持切换不同后端。

🔧 常用工具(按类型)

A. Chat/Completion Models

工具所属包说明
ChatOpenAIlangchain_openaiOpenAI GPT 系列(gpt-4, gpt-3.5-turbo)
ChatAnthropiclangchain_anthropicClaude 系列
ChatOllamalangchain_ollama本地运行开源模型(Llama3, Mistral 等)
HuggingFacePipelinelangchain_huggingface本地 Hugging Face Transformers 模型
AzureChatOpenAIlangchain_openaiAzure OpenAI 服务

B. Embedding Models

工具说明
OpenAIEmbeddingsOpenAI text-embedding-ada-002
HuggingFaceEmbeddings开源模型(如 all-MiniLM-L6-v2)
OllamaEmbeddings通过 Ollama 使用本地嵌入模型

⚖️ 优缺点对比

方案优点缺点
OpenAI / Anthropic效果好、API 稳定、低延迟付费、需网络、数据隐私风险
Ollama / HuggingFace(本地)数据私有、免费、可离线需 GPU/CPU 资源、部署复杂、效果略弱
Azure OpenAI企业合规、私有部署选项配置复杂、成本高

💡 建议:开发阶段用 OpenAI 快速验证,生产环境考虑 Ollama + 开源模型保安全。


2️⃣ Prompts(提示模板)

✅ 功能

  • 结构化构建提示,支持变量注入、示例填充、多轮对话格式。

🔧 常用工具

  • PromptTemplate:基础字符串模板
  • ChatPromptTemplate:支持 HumanMessage / AIMessage 格式(推荐用于聊天模型)
  • FewShotPromptTemplate:带少量示例的提示(提升小模型效果)
  • PipelinePromptTemplate:组合多个子模板

⚖️ 优缺点

类型优点缺点
PromptTemplate简单直接不适合聊天模型
ChatPromptTemplate符合现代 LLM 对话格式,支持系统消息略复杂
FewShot...提升 zero-shot 性能占用 token,成本高

最佳实践:始终使用 ChatPromptTemplate + SystemMessage 定义角色。


3️⃣ Chains(链)

✅ 功能

  • 将多个操作(如 prompt → LLM → parse → call tool)串联成 pipeline。

🔧 常用 Chain

Chain用途
LLMChain最基础:prompt + LLM
RetrievalQARAG:检索 + 问答
ConversationalRetrievalChain带历史的 RAG
SequentialChain / SimpleSequentialChain多步骤顺序执行
TransformChain自定义函数处理输入/输出

⚖️ 优缺点

Chain优点缺点
RetrievalQA开箱即用 RAG无法精细控制检索-生成交互
ConversationalRetrievalChain支持对话历史内存消耗大
自定义 Chain灵活需手动编写逻辑

💡 LangChain Expression Language(LCEL)正在取代传统 Chain,更灵活(见 v0.1+)。


4️⃣ Memory(记忆)

✅ 功能

  • 在多轮对话中保存上下文,避免 LLM “失忆”。

🔧 常用 Memory 类型

Memory特点
ConversationBufferMemory保存全部历史(简单但占 token)
ConversationSummaryMemory用 LLM 压缩历史为摘要
ConversationBufferWindowMemory只保留最近 N 轮
RedisChatMessageHistory外部存储(支持多用户会话持久化)

⚖️ 优缺点

类型优点缺点
Buffer精确还原上下文token 成本高,长对话失效
Summary节省 token摘要可能丢失细节
Window平衡可能切断关键上下文
Redis/DB可扩展、多用户需额外基础设施

生产建议:用 Window + 外部存储(如 Redis)组合。


5️⃣ Indexes & Retrievers(索引与检索)

✅ 功能

  • 从非结构化数据(PDF、MD、网页等)构建可检索的知识库。

🔧 子组件与工具

A. Document Loaders

  • TextLoader, UnstructuredMarkdownLoader, PyPDFLoader, WebBaseLoader, DirectoryLoader

B. Text Splitters

  • RecursiveCharacterTextSplitter(最常用)
  • MarkdownHeaderTextSplitter(保留标题结构)
  • TokenTextSplitter(按 token 切分)

C. Vectorstores(向量数据库)

  • FAISS, Chroma, Qdrant, Pinecone, Weaviate(见前文对比)

D. Retrievers

  • vectorstore.as_retriever()
  • MultiQueryRetriever(生成多个查询提升召回)
  • ContextualCompressionRetriever(压缩冗余内容)

⚖️ 优缺点(整体流程)

环节挑战优化建议
加载格式兼容性差优先用 unstructured
切分语义断裂MarkdownHeaderTextSplitter + overlap
向量库过滤能力弱(如 FAISS)选 Qdrant/Pinecone 支持 metadata filter
检索召回率低MultiQueryRetriever + 重排序(CohereRerank)

6️⃣ Agents(代理)

✅ 功能

  • 让 LLM 自主决定是否调用工具(如搜索、计算、查数据库),实现动态推理。

🔧 核心组成

  • Agent Type

    • zero-shot-react-description(最常用)
    • self-ask-with-search
    • conversational-react-description
  • Tools

    • DuckDuckGoSearchRun(网络搜索)
    • WikipediaQueryRun
    • PythonREPLTool(慎用!)
    • 自定义 Tool(继承 BaseTool

⚖️ 优缺点

方面优点缺点
能力可解决复杂、开放问题执行慢(多轮 LLM 调用)
可控性可限制可用工具LLM 可能误用或死循环
安全性——若允许代码执行,有安全风险

⚠️ 生产建议:严格限制工具权限,避免 PythonREPLTool;用 max_iterations 防止死循环。


📌 总结:LangChain 组件选型建议

场景推荐配置
快速 RAG DemoChroma + OpenAI + RetrievalQA + BufferMemory
企业私有知识库Qdrant + Ollama(Llama3)+ MarkdownHeaderTextSplitter + RedisMemory
多轮智能客服ConversationalRetrievalChain + WindowMemory + Pinecone
复杂任务自动化Agent(ReAct) + DuckDuckGo + 自定义安全工具

LangChain 的优势在于 高度模块化,但也带来“选择困难”。建议:

  1. 先用默认组合(如 Chroma + OpenAI)跑通流程;
  2. 再根据性能、成本、隐私需求逐步替换组件。