大数跨境

LangChain 实战(下):Data Connection + Agents,构建真正的智能应用

LangChain 实战(下):Data Connection + Agents,构建真正的智能应用 知识代码AI
2026-09-21
16

🧠 LangChain 实战(下):Data Connection + Agents,构建真正的智能应用


一、本章概览

第11章《大模型应用开发框架 LangChain(下)》是 LangChain 系列的收官之章,聚焦两大核心模块——Data Connection(数据处理流) 和 Agents(代理系统)

核心内容:

  1. Data Connection:五大模块完整数据处理流
  2. Document Loaders:快速接入各类数据源
  3. Document Transformers:文档清洗、拆分与转换
  4. Text Embedding Models:文本向量化
  5. Vector Stores:向量数据库全景
  6. Retrievers:数据检索器
  7. Agent 理论基础:ReAct(Reasoning + Acting)
  8. LangChain Agents 模块设计原理
  9. 实战:Self-ask-with-search(SerpAPI 搜索)
  10. 实战:ReAct(Google Search + LLM-Math)
  11. 课程项目:openai-quickstart

二、Data Connection:框架原生的数据处理流

完整数据处理链路

Source → Load → Transform → Embed → Store → Retrieve

对应五大组件:

模块
作用
典型工具
📥 Document Loaders
从各类数据源加载原始数据为 Document
CSVLoader、PDFLoader、GitHubLoader
🔧 Document Transformers
对文档进行清洗、拆分、提取等转换
RecursiveCharacterTextSplitter
🧬 Text Embedding Models
将文本转为向量嵌入
OpenAIEmbeddings、HuggingFace
🗄️ Vector Stores
存储向量,支持相似度检索
Chroma、FAISS、Pinecone
🔍 Retrievers
从向量库中检索相关文档
BM25、kNN、WikipediaRetriever

数据处理流程可视化

加载  转换  向量化  存储  检索
 ┌──┐  ┌──┐  ┌──┐  ┌──┐  ┌──┐
 │  │→ │  │→ │  │→ │  │→ │  │
 └──┘  └──┘  └──┘  └──┘  └──┘
 原始    文本    向量    向量    相关
 文档    片段    嵌入    数据库    片段

三、Document Loaders:快速接入各类数据源

典型数据格式

格式
说明
📄 CSV
表格数据
🌐 HTML
网页内容
📋 JSON
结构化数据
📝 Markdown
文档格式
📕 PDF
电子文档
📁 File Directory
目录批量加载
更多格式

典型数据源

ArXiv、BiliBili、Discord、Figma、GitHub、Reddit、TensorFlow Datasets 等

BaseLoader 与 Document 类

BaseLoader 统一接口,核心方法:

方法
说明
load()
加载数据为 Document 列表
load_and_split()
加载并拆分文档,默认使用 RecursiveCharacterTextSplitter

Document 类字段:

字段
说明
page_content
页面内容
metadata
元数据字典
lookup()
仿 cmd-F 进行段落检索
paragraphs
按 \n\n 拆分段落
summary
默认取第一段作为摘要

四、Document Transformers:数据转换模块

主要转换工具一览:

工具
作用
🍜 Beautiful Soup
细粒度控制 HTML 内容提取
📄 Doctran Extract Properties
提取文档属性
❓ Doctran Interrogate
文档问答转换
🌍 Doctran Translate
文档翻译
🔤 html2text
将 HTML 页面转换为纯文本
🏷️ OpenAI Functions Metadata Tagger
为文档打结构化元数据标签
🔬 Nuclia Understanding API
自动索引非结构化数据

五、Text Embedding Models:文本嵌入模型

工作原理

将文本映射为数值向量(如 [0.5, 0.2, ...]),用于后续语义相似度计算。

支持的模型(部分列举)

类别
模型
☁️ 商业 API
OpenAI、AzureOpenAI、Cohere、Jina、DashScope、MiniMax
🤗 开源
Hugging Face Hub、ModelScope、GPT4All
☁️ 云平台
Bedrock Embeddings、SageMaker Endpoint
🏠 本地
LocalAI、Text Embeddings
🌐 聚合平台
Clarifai、EDEN AI

六、Vector Stores:向量数据库

支持列表(部分)

类型
数据库
🎯 热门
Chroma、FAISS、Pinecone、Milvus、Qdrant、Weaviate
🗄️ 传统数据库扩展
Redis、PGVector、MongoDB Atlas、ElasticSearch、Cassandra
☁️ 云服务
Alibaba Cloud OpenSearch、AnalyticDB、Azure Cognitive Search
🧪 实验性
Annoy、AwaDB、BagelDB、DocArrayInMemorySearch

💡 向量数据库存储的是语义向量而非原始文本,支持近似最近邻(ANN)搜索,是知识库问答的技术基础。


七、Retrievers:数据检索器

支持列表(部分)

检索器
说明
BM25
经典文本检索算法
kNN / SVM / TF-IDF
传统机器学习检索
ElasticSearch BM25
ES 全文检索
Pinecone Hybrid Search
混合检索
Cohere Reranker
重排序增强检索
LOTR(Merger Retriever)
多检索器结果合并
Wikipedia
维基百科检索
Amazon Kendra
企业级知识检索
Azure Cognitive Search
微软云检索
RePhraseQueryRetriever
查询改写 + 检索
Weaviate Hybrid Search
混合检索
Zep / Vespa / PubMed
专业领域检索

八、Agent 理论基础:ReAct

三种范式对比

核心问题: 大模型如何与外部世界交互?

Reason-only(仅推理):
  Thought → Thought → Thought → Answer
  (依赖内部知识,无法获取新信息)

Act-only(仅行动):
  Action → Obs → Action → Obs → Answer
  (缺少推理,无法综合判断)

ReAct(推理 + 行动)⭐:
  Thought → Action → Obs → Thought → Action → Obs → Answer
  (推理与行动交替,最佳方案)
范式
代表方法
优点
缺点
📖 Reason-only
Chain-of-Thought (CoT)
逻辑推理强
依赖内部知识,易产生幻觉
🛠️ Act-only
SayCan、WebGPT
能执行外部操作
缺乏推理,无法综合判断
⚡ ReAct
Reasoning + Acting
推理+行动结合,SOTA
实现相对复杂

ReAct Prompt 设计

ReAct Prompt 由 few-shot task-solving trajectories 组成,包含三个部分:

  1. Thought(推理):人工编写的文本推理过程
  2. Act(行动):要执行的动作
  3. Obs(观察):环境对动作的反馈

设计直观灵活,在 QA 到在线购物等多种任务上实现了最先进的少样本性能

ReAct 性能对比表

Prompting Method
HotpotQA(精确匹配,6-shot)
FEVER(准确率,3-shot)
ALFWorld(成功率,2-shot)
WebShop(成功率,1-shot)
Standard (IO)
28.7
57.1
N/A
N/A
Reason-only (CoT)
29.4
56.3
N/A
N/A
Act-only
25.7
58.9
AS
30.1
Best ReAct method 35.1 64.6 40
Supervised/Imitation SoTA
67.5
89.5
37
29.1

ReAct 的两大优势

1. 获取新数据方面

  • Reason-only 依赖内部知识,容易受错误信息影响(如"Apple Remote"错答为 iPhone/iPad)
  • Act-only 缺乏推理无法综合答案
  • ReAct 通过可解释的真实轨迹正确解题,例子:搜索 Apple Remote → Front Row → Front Row (software) → 正确答案:keyboard function keys

2. 微调方面

  • ReAct 是各种模型规模下最好的微调方式
  • ReAct 微调的较小模型胜过了被 prompt 的更大模型

九、LangChain Agents 模块设计原理

核心思想

与 Chains 中动作序列硬编码不同,Agents 使用 LLM 作为推理引擎,动态决定采取哪些动作及其执行顺序。

模块组成

User Input
    ↓
Agent(LLM + Prompts)← 推理引擎,决定下一步动作
    ↕
AgentExecutor(Runtime)← 执行循环
    ↕
Tools(Tool 1, Tool 2, Tool 3…)→ Toolkits(工具集合)
    ↓
Observation(环境反馈)

AgentType(Prompting Strategies)

类型
说明
🔄 ReAct
推理+行动交替,最通用
🔧 OpenAI Functions
基于 OpenAI Function Calling
❓ Self ask with search
自问自答 + 搜索
📋 Plan-and-execute
先规划再执行
🤖 BabyAGI / AutoGPT
自主智能体

AgentExecutor 执行循环

next_action = agent.get_action(...)
while next_action != AgentFinish:
    observation = run(next_action)
    next_action = agent.get_action(..., next_action, observation)
return next_action

十、实战案例

案例1:Self-ask-with-search(SerpAPI 搜索)

问题: "2023年大运会举办地在哪里?"

Agent 执行过程:

Thought: 我需要知道2023年大运会的信息
Followup: 什么是2023年大运会?
  → 搜索:2023 FISU Summer World University Games
  → 观察:第32届夏季世界大学生运动会,由国际大学生体育联合会(FISU)组织
Followup: 2023年大运会的举办地在哪里?
  → 搜索:成都大运会
  → 观察:第31届世界大学生夏季运动会,开幕式2023年7月28日,闭幕式8月8日
  → 举办地:成都
Final Answer: 成都 ✅

案例2:对比仅 LLM(Reason-only)

llm("2023年大运会举办地在哪里?")
# 输出: "2023年大运会将在日本东京举办" ❌(错误!)

⚠️ 仅靠 LLM 内部知识容易产生幻觉,ReAct 通过检索外部信息得到正确答案。

案例3:实战 ReAct(Google Search + LLM-Math)

from langchain.llms import OpenAI
from langchain.agents import load_tools, initialize_agent, AgentType

llm = OpenAI(temperature=0)
tools = load_tools(['serpapi''llm-math'], llm=llm)
agent = initialize_agent(tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True)

Tools 扩展:更多工具

# Wikipedia 检索
from langchain.tools import WikipediaQueryRun
from langchain.utilities import WikipediaAPIWrapper
wikipedia = WikipediaQueryRun(api_wrapper=WikipediaAPIWrapper())
wikipedia.run("HUNTER X HUNTER")

# Hugging Face 工具
from langchain.agents import load_huggingface_tool
tool = load_huggingface_tool("lysandre/hf-model-downloads")

# DALL-E 图像生成
tools = load_tools(['dalle-image-generator'])
agent = initialize_agent(tools, llm, agent="zero-shot-react-description", verbose=True)
agent.run("Create an image of a halloween night at a haunted museum")

十一、课程项目:GitHub openai-quickstart

项目信息
内容
项目名称
OpenAI Quickstart
定位
一站式大语言模型学习资源
文档
中英文双语(README.md + README-CN.md)

项目目录

openai-quickstart/
├── openai_api/          # OpenAI API 实战
├── langchain/           # LangChain 集成示例
├── openai-translator/   # OpenAI 翻译工具
├── chatgpt-plugins/     # ChatGPT 插件开发
├── docs/                # 文档与学习资料
└── selected_homework/   # 学员优秀作业

📌 本章核心要点总结

序号
核心要点
一句话总结
1
Data Connection 五步流
Source → Load → Transform → Embed → Store → Retrieve
2
Document Loaders
从 CSV、PDF、HTML、GitHub 等各类数据源加载文档
3
Vector Stores
Chroma、FAISS、Pinecone 等 30+ 向量数据库支持
4
ReAct 核心思想
推理 + 行动交替,打破 LLM 信息孤岛
5
ReAct 性能优势
在 HotpotQA、FEVER 等基准上超越 CoT 和 Act-only
6
Agents 模块组成
Agent(LLM)+ Tools + Toolkits + AgentExecutor
7
AgentExecutor 循环
get_action → run → observation → get_action… 直到完成
8
Self-ask-with-search
搜索"2023大运会"→ 正确答案成都(vs 仅LLM答错东京)
9
ReAct 微调优势
微调后的较小模型胜过大模型+prompt

📚 下期预告:第12章 —— 实战 LangChain 版 OpenAI-Translator v2.0,用 LangChain 重构翻译应用,敬请期待!



【声明】内容源于网络
0
0
知识代码AI
技术基底 机器视觉全栈 × 光学成像 × 图像处理算法 编程栈 C++/C#工业开发 | Python智能建模 工具链 Halcon/VisionPro工业部署 | PyTorch/TensorFlow模型炼金术 | 模型压缩&嵌入式移植
内容 412
粉丝 0
知识代码AI 技术基底 机器视觉全栈 × 光学成像 × 图像处理算法 编程栈 C++/C#工业开发 | Python智能建模 工具链 Halcon/VisionPro工业部署 | PyTorch/TensorFlow模型炼金术 | 模型压缩&嵌入式移植
总阅读7.4k
粉丝0
内容412