LangChain 基础知识

1. Runnable 与调用方式

LangChain 中很多组件都遵循统一的 Runnable 接口,例如 Prompt、Model、Retriever 等。

常见调用方式:

python 复制代码
# 单次调用
chain.invoke(input)

# 批量调用
chain.batch(inputs)

# 流式调用
chain.stream(input)

其中 invoke() 最常用,而 stream() 常用于实现类似 ChatGPT 的逐步输出效果。


2. RunnablePassthrough

RunnablePassthrough 可以将输入数据直接传递到 Chain 的下一环节。

例如 RAG 中经常需要同时传递:

text 复制代码
用户问题
    ├──→ Retriever → context
    │
    └──→ question

最终组合成:

text 复制代码
context + question
        ↓
      Prompt
        ↓
       LLM

它在构建 LCEL 流程时非常常见。


3. Chat History

普通模型调用默认不会自动记住之前的聊天内容。

例如:

text 复制代码
用户:设备 A001 出现了故障

AI:请问具体是什么故障?

用户:温度过高

如果需要模型理解第二次提问和第一次提问之间的关系,就需要保存聊天历史。

基本流程:

text 复制代码
用户消息
   ↓
Chat History
   ↓
Prompt
   ↓
LLM
   ↓
AI 回复
   ↓
保存到 Chat History

这也是实现多轮 AI 对话的重要基础。


4. Streaming 流式输出

普通调用:

text 复制代码
用户提问
   ↓
等待模型生成完成
   ↓
一次性显示答案

流式调用:

text 复制代码
用户提问
   ↓
模型生成
   ↓
生成一点 → 返回一点 → 页面显示一点

例如:

python 复制代码
for chunk in chain.stream({
    "question": "什么是 RAG?"
}):
    print(chunk.content, end="")

实际 Web 项目中的 AI 聊天界面通常会使用流式输出改善用户体验。


5. Metadata 元数据

知识库中的 Document 除了正文,还可以保存 Metadata。

例如:

python 复制代码
{
    "page_content": "变压器发生过热时需要检查冷却系统",
    "metadata": {
        "source": "设备运维手册.pdf",
        "page": 15,
        "device_type": "变压器"
    }
}

Metadata 可以记录:

  • 文件名称
  • 页码
  • 文档类型
  • 设备类型
  • 创建时间
  • 知识分类

在 RAG 中可以利用 Metadata 进行过滤,也可以在回答中展示知识来源。


6. 相似度搜索

向量数据库并不是简单进行关键词匹配,而是根据向量之间的相似程度进行搜索。

例如用户搜索:

text 复制代码
变压器温度太高怎么办?

知识库中可能没有完全相同的文字,但存在:

text 复制代码
变压器过热故障的检查与处理方法

通过 Embedding 和向量相似度计算,仍然可以找到这段内容。

基本流程:

text 复制代码
用户问题
   ↓
Embedding
   ↓
问题向量
   ↓
相似度计算
   ↓
Vector Store
   ↓
返回最相关 Chunk

这也是 RAG 能够实现语义检索的重要原因。


7. RAG 中的 Prompt

RAG 并不是把检索结果直接返回给用户。

一般会把检索到的内容放入 Prompt:

text 复制代码
你是一名专业的设备运维助手。

请严格根据以下资料回答用户问题。

参考资料:
{context}

用户问题:
{question}

如果资料中不存在答案,请明确说明无法从知识库中找到相关信息。

然后:

text 复制代码
Retriever
    ↓
context
    ↓
Prompt
    ↓
LLM
    ↓
最终答案

因此,一个 RAG 系统的回答质量不仅取决于模型,还受到 文档质量、文本切分、Embedding、检索策略和 Prompt 等多个环节影响。


8. Tool Calling

Tool 可以让大模型调用外部功能。

例如给模型提供:

text 复制代码
get_device_status
get_weather
search_database
query_alarm
search_knowledge

当用户询问:

text 复制代码
帮我查询 A001 设备现在是否正常。

模型可以判断:

text 复制代码
需要实时设备数据
      ↓
调用 get_device_status
      ↓
获得设备状态
      ↓
LLM 分析
      ↓
返回用户

这样,大模型就不再只是"聊天",而是可以和真实业务系统进行交互。


9. Agent 的基本工作方式

Agent 可以理解为让 LLM 根据当前任务决定下一步应该执行什么。

例如:

text 复制代码
用户提出任务
     ↓
Agent 分析
     ↓
选择 Tool
     ↓
执行 Tool
     ↓
获取结果
     ↓
继续分析
     ↓
是否还需要调用 Tool?
   ↙              ↘
需要              不需要
 ↓                  ↓
继续执行           最终回答

相比固定 Chain,Agent 更适合步骤无法提前完全确定的复杂任务。


10. LangChain 与 LangGraph

LangChain 主要提供:

text 复制代码
Model
Prompt
Retriever
Vector Store
Tool
RAG

而复杂 Agent 应用还会涉及:

text 复制代码
状态管理
条件判断
循环执行
多个 Agent 协作
人工审核
复杂工作流

这类需求可以进一步使用 LangGraph。

可以简单理解为:

text 复制代码
LangChain
    ↓
提供 AI 应用基础组件

LangGraph
    ↓
组织复杂 Agent 工作流

对于初学者,推荐学习顺序:

text 复制代码
LangChain 基础
      ↓
LCEL
      ↓
RAG
      ↓
Tool Calling
      ↓
Agent
      ↓
LangGraph

掌握这些内容后,就具备了进一步开发企业知识库、智能客服、设备运维助手和 AI Agent 等项目的基础。

相关推荐
染指11101 天前
131.Agent-Agent设计模式-MAS多智能体系统(Multi-Agent-System)
人工智能·设计模式·langchain·agent·agents
BD_Marathon1 天前
流式调用、批量调用与异步调用
langchain
王国强20092 天前
Deep Agents Code 源码阅读(二):main.py 启动流程与 CLI 配置系统
langchain
10年前端老司机2 天前
LangChain Agent 切面钩子实战:解耦业务,一键复用通用能力
人工智能·langchain·agent
ai大模型-探索者2 天前
LangChain框架完全指南(介绍与使用)
langchain
GISer_Jing2 天前
前端Agent架构师指南:从零搭建智能前端Agent
前端·ai·langchain
小此方2 天前
LangChain/LangGraph(一)提示词篇一:Prompt工程实战:从CO-STAR、Few-Shot到思维链与自我迭代,系统掌握提示词设计方法
ai·langchain·prompt
梦想不只是梦与想2 天前
LangGraph控制流:条件边、循环与并行(二)
langchain·大模型·边
Maiko Star2 天前
* LangChain 提示词模板详解:ChatPromptTemplate 的使用与高级特性
java·人工智能·langchain
染指11103 天前
128.Agent-LangChain核心组件-中间件-调用模型的时候
人工智能·windows·中间件·langchain·agent