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 过时了不好用了 --- 它依然是最流行的选择,只是不要过度依赖其高级抽象
相关推荐
wuhen_n1 小时前
RAG 优化实战:检索精准度提升全方案
前端·langchain·ai编程
沪漂阿龙3 小时前
LangChain 系列之Agent:从固定流程到模型自主决策
服务器·数据库·langchain
老陈聊架构3 小时前
『AI大模型』OpenDataLoader PDF 实战:RAG 知识库 PDF 解析与LangChain 接入
ai·langchain·pdf·rag·opendataloader
Cloud_Shy6183 小时前
解读《Effective Python 3rd Edition》:从练气到老魔(第七章 Item 48 - 50)
开发语言·人工智能·笔记·python·microsoft·学习方法
喵叔哟3 小时前
Week 3 --Day 4:生产级部署
python·langchain
北风toto4 小时前
深度拆解:本体与智能体协同生成SQL的底层逻辑与工程实践
数据库·sql·microsoft
GISer_Jing4 小时前
LangChain 核心架构深度解析:从设计哲学到工程实践
架构·langchain
周杰伦fans4 小时前
记一次 Visual Studio 突然报错“未能加载 Microsoft.Internal.VisualStudio.Interop”的奇葩经历
microsoft·log4j·visual studio
满怀冰雪4 小时前
01_LangChain是什么_带你理解LLM应用框架
python·langchain