5.1 主流框架:LangChain、LlamaIndex、Semantic Kernel

你已经理解了 RAG、Agent、Function Calling 的原理------但真要写代码的时候,从零实现太累了。开发框架就是把这些能力封装成好用的 API,让你「搭积木」而不是「烧砖头」来构建 AI 应用。选对框架,开发效率提升 10 倍;选错框架,重构代码累到怀疑人生。

📑 目录


为什么需要 AI 开发框架

复制代码
不用框架(纯 OpenAI SDK):

你需要自己写:
├── Prompt 模板管理
├── 对话历史维护(滑动窗口/摘要)
├── 文档加载器(PDF/Markdown/HTML/...)
├── 文本分块策略
├── Embedding + 向量存储
├── 检索逻辑(向量/混合/Rerank)
├── Function Calling 循环
├── Agent 记忆系统
├── 工具定义与注册
├── 输出解析器(JSON/XML/结构化)
└── 追踪/日志/监控...

用框架:
这些大部分都已经封装好了!
你只需要:组装 → 配置 → 调试 → 上线

LangChain:生态最大,争议也最多

一句话定义

目前最流行的 AI 应用开发框架,提供从 LLM 调用到 Agent 编排的全链路抽象和工具集成。社区最活跃、集成最多,但也被批评「过度抽象」。

LangChain 核心概念

概念 说明 类比
Model LLM 的统一接口 统一了不同模型厂商的调用方式
Chain 多步骤的处理链 流水线,上一步输出是下一步输入
Agent 自主决策的智能体 带工具调用的循环决策系统
Memory 对话记忆 管理历史消息的各种策略
Retriever 检索器 从各种数据源获取相关文档
Tool/Toolkit 工具集 可被 Agent 调用的外部能力
Callback 回调钩子 日志、追踪、监控的拦截点
python 复制代码
# LangChain 快速示例:一个带 RAG 的 Chain
from langchain_openai import ChatOpenAI, OpenAIEmbeddings
from langchain_chroma import Chroma
from langchain.chains import create_retrieval_chain
from langchain_core.prompts import ChatPromptTemplate

# 1. 初始化模型和向量库
llm = ChatOpenAI(model="gpt-4o", temperature=0)
embeddings = OpenAIEmbeddings()
vectorstore = Chroma("my_docs", embeddings)
retriever = vectorstore.as_retriever(search_kwargs={"k": 5})

# 2. 定义 Prompt 和 Chain
prompt = ChatPromptTemplate.from_messages([
    ("system", "你是一个有帮助的助手。基于以下上下文回答:"),
    ("user", "{input}\n\n上下文:{context}"),
])

chain = create_retrieval_chain(retriever, prompt.combine() | llm)

# 3. 一行调用
result = chain.invoke({"input": "公司年假政策是什么?"})
print(result["answer"])

LangChain 的优点 & 争议

✅ 优点 ❌ 争议
生态最全,集成几百种工具 抽象层过多,调试困难
社区活跃,问题容易搜到答案 版本迭代快,API 经常 breaking change
LangGraph 补强了编排能力 学习曲线陡峭
LangSmith 追踪平台好用 性能开销不可忽视

LlamaIndex:RAG 的最佳拍档

一句话定义

专注于数据处理和 RAG 的框架。如果你主要做知识库问答类应用,LlamaIndex 可能比 LangChain 更顺手。

python 复制代码
# LlamaIndex RAG 示例
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader
from llama_index.embeddings.openai import OpenAIEmbedding
from llama_index.llms.openai import OpenAI

# 1. 加载文档
 documents = SimpleDirectoryReader("./data").load_data()

# 2. 构建索引(自动完成:分块→Embedding→存储)
index = VectorStoreIndex.from_documents(
    documents,
    embed_model=OpenAIEmbedding(),
    llm=OpenAI(model="gpt-4o")
)

# 3. 查询
response = index.as_query_engine().query(
    "公司的报销流程是怎样的?"
)
print(response)

LlamaIndex vs LangChain 的定位差异

LangChain LlamaIndex
定位 通用 AI 应用框架 数据连接 + RAG 专家
核心优势 Agent / 工具链 / 多步骤编排 文档处理 / 索引构建 / 检索质量
数据处理 需要配合 Unstructured 等 内置强大(100+ 数据加载器)
适合场景 复杂 Agent 应用、多工具协作 知识库、文档问答、数据分析
上手难度 中等偏高 相对平滑

Semantic Kernel:微软的答案

一句话定义

微软出品的 AI 开发 SDK,主打企业级场景和 .NET 生态集成。如果你的技术栈在 Azure/.NET 上,这是不二选择。

特点一览

  • 原生支持 C#/Python/Java
  • 深度集成 Azure OpenAI Service
  • Planner 概念类似 Agent 的规划能力
  • 插件(Plugin)体系对标 MCP/Skill
  • 企业级特性:遥测、日志、认证

三大框架对比

维度 LangChain LlamaIndex Semantic Kernel
语言 Python/JS Python/TS C#/Python/Java
定位 通用框架 RAG/数据专家 企业级/Azure
学习曲线 ⭐⭐⭐⭐ ⭐⭐⭐ ⭐⭐⭐
社区规模 最大 大 中等(微软生态)
RAG 能力 好(需组合) 最好(原生) 一般
Agent 能力 最好(LangGraph) 一般 好(Planner)
数据处理 依赖第三方 最强 一般
生产就绪度 需要 LangCloud 需要自行部署 Azure 直接用
适合谁 全栈 AI 开发者 RAG/知识库开发者 .NET/Azure 团队

怎么选?

复制代码
你的场景是什么?
│
├─ 主要做知识库/QA 系统?
│   └─→ **LlamaIndex** (RAG 天然优势)
│
├─ 做复杂 Agent / 多工具协作?
│   └─→ **LangChain + LangGraph** (编排能力强)
│
├─ 微软技术栈 / Azure 环境?
│   └─→ **Semantic Kernel** (原生集成)
│
├─ 只是简单调用 LLM API?
│   └─→ **都别用** (直接 SDK 就够了!)
│
└─ 不确定 / 想快速验证想法?
    └─→ **LangChain** (资料最多,遇到问题好搜)

❌ 常见误区

  • ❌ 必须用一个框架 --- 很多项目最终会「去框架化」,只保留需要的部分
  • ❌ 框架能解决所有问题 --- 框架帮你省的是胶水代码时间,业务逻辑还是要自己写
  • ❌ LangChain 过时了不好用了 --- 它依然是最流行的选择,只是不要过度依赖其高级抽象
相关推荐
BD_Marathon10 小时前
OpenAI库基础使用
langchain
一只游鱼12 小时前
MCP \
人工智能·microsoft
BD_Marathon15 小时前
LangChain的简介
langchain
ikun_文15 小时前
LangChain-常用场景
langchain·agent
刘 大 望19 小时前
Agent 的规划与执行范式:Plan-Execute-Replan 与 ReAct
java·python·ai·chatgpt·langchain·ai编程
昭昭日月明20 小时前
使用 Ragas 量化 RAG
python·langchain·ai编程
云水初21 小时前
【agent篇】RAG Agent避坑指南(附高级RAG Agent汇总)
开发语言·笔记·python·学习·langchain·agent·rag
小粉粉hhh21 小时前
大模型RAG和Agent智能体(一)——初了解
gpt·langchain·aigc
时空节拍AI数字人1 天前
AI 数字人技术架构拆解:从形象克隆到实时驱动的 5 层链路
人工智能·microsoft·3d·架构·语音识别
wewowilling1 天前
LangChain入门
python·ai·langchain·prompt