LlamaIndex vs LangChain 2026 选型指南
LlamaIndex 和 LangChain 是 LLM 应用的两大框架。本文用真实项目对比两者在 RAG、Agent、性能、生态上的差异。
今日技术简讯
📰 技术简讯 · 2026-06-19
今日聚合 6 条热门技术内容。
🤖 AI / LLM
1. LlamaIndex vs LangChain 选型
- 链接:https://www.llamaindex.ai/blog/llamaindex-vs-langchain-2026
- 来源:LlamaIndex
- 摘要:2026 年两大 LLM 框架的最新对比,文档场景用 LlamaIndex,复杂 Agent 用 LangChain。
2. Anthropic Claude Code 2.0
- 链接:https://www.anthropic.com/news/claude-code-2
- 来源:Anthropic
- 摘要:Claude Code 2.0 GA,命令行 AI 编程助手,支持多文件重构。
🎨 前端 / Web
3. CSS Anchor Positioning 浏览器全面支持
- 链接:https://web.dev/anchor-positioning-2026
- 来源:web.dev
- 摘要:所有主流浏览器支持,弹窗 / Tooltip 实现简化 50%。
⚙️ 后端 / 架构
4. Postgres 推出 pg_duckdb 扩展
- 链接:https://github.com/duckdb/pg_duckdb
- 来源:DuckDB
- 摘要:Postgres 内嵌 DuckDB 分析引擎,OLAP 查询提速 100 倍。
🚀 独立开发 / OPC
5. Polar.sh 推出 Beta
- 链接:https://polar.sh
- 来源:Polar
- 摘要:开源版 Lemon Squeezy,Merchant of Record 模式,适合开源项目。
6. 《SaaS SEO Playbook》发布
- 链接:https://saas-seo-playbook.com
- 来源:社区
- 摘要:100 页实战手册,覆盖关键词研究、内容策略、外链建设。
数据来源:HN / Reddit / 各厂博客 采集时间:2026-06-19 09:00 (UTC+8)
今日深度文
LlamaIndex vs LangChain 2026 选型指南
一句话结论:文档问答用 LlamaIndex,复杂 Agent 用 LangChain。新项目可考虑 Haystack 或 LangGraph。
背景
LlamaIndex 和 LangChain 是 LLM 应用的两大主流框架:
- LangChain:通用 LLM 编排框架,2023 年起
- LlamaIndex:专注 RAG / 数据连接,2023 年起
到 2026 年,两个框架都已成熟,但定位明显分化。
核心定位差异
LangChain 的定位
"LLM 应用的乐高积木"
- 强大的 Agent 编排
- 丰富的工具集成(Tools / Memory)
- 复杂工作流(LangGraph)
LlamaIndex 的定位
"RAG 和数据连接的专家"
- 优化的 RAG pipeline
- 100+ 数据连接器(loaders)
- 高级索引(向量 / 关键词 / 树形)
5 维度对比
1. RAG 性能
测试场景:1000 份 PDF,复杂多跳问答
LlamaIndex: 准确率 78%, 延迟 1.2s
LangChain: 准确率 71%, 延迟 1.8s
差距原因:
- LlamaIndex 优化了 retrieval 策略
- LangChain 更通用,retrieval 较基础
# LlamaIndex RAG 示例(简洁)
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader
documents = SimpleDirectoryReader("./docs").load_data()
index = VectorStoreIndex.from_documents(documents)
query_engine = index.as_query_engine()
response = query_engine.query("什么是 RAG?")
# LangChain RAG 示例(较繁琐)
from langchain.document_loaders import DirectoryLoader
from langchain.vectorstores import FAISS
from langchain.chains import RetrievalQA
from langchain.llms import OpenAI
loader = DirectoryLoader('./docs', glob="**/*.pdf")
docs = loader.load()
vectorstore = FAISS.from_documents(docs, embeddings)
qa = RetrievalQA.from_chain_type(
llm=OpenAI(),
retriever=vectorstore.as_retriever(),
)
response = qa.run("什么是 RAG?")
2. Agent 能力
LangChain: ✅ 强大(LangGraph / LangChain Agents)
LlamaIndex: ⚠️ 基础(ReAct agent)
复杂场景(多步 / 工具调用 / 循环)→ LangChain 优势明显
# LangChain Agent 示例
from langchain.agents import create_openai_functions_agent
from langchain.tools import tool
@tool
def search(query: str) -> str:
"""搜索网络"""
return tavily.search(query)
agent = create_openai_functions_agent(llm, [search], prompt)
response = agent.invoke({"input": "查询最新的 AI 新闻"})
3. 生态
| 维度 | LangChain | LlamaIndex |
|---|---|---|
| GitHub Stars | 95K | 38K |
| 集成工具 | 600+ | 200+ |
| 数据连接器 | 100+ | 100+ |
| 社区 | 极大 | 中等 |
LangChain 生态更大,但 LlamaIndex 在数据连接方面也很全。
4. 学习曲线
LlamaIndex: 5 分钟上手 RAG
LangChain: 1 小时上手 RAG,3 小时掌握 Agent
LlamaIndex 更适合"快速搭个 RAG",LangChain 更适合"复杂业务逻辑"。
5. 生产稳定性
2026 年两框架都已稳定
- LangChain 0.3:API 稳定
- LlamaIndex 0.12:API 稳定
两者都支持:
- 流式输出
- 异步
- 监控集成(LangSmith / LlamaIndex Tracing)
我的选型决策树
你的项目主要是?
│
├── RAG / 文档问答 → LlamaIndex ✅
├── Agent / 工具调用 → LangChain ✅
├── 复杂工作流(多 Agent)→ LangGraph ✅
├── 快速原型 → 两个都行,看团队偏好
└── 都不满意 → 考虑 Haystack(深度学习时代老牌框架)
实战对比:构建 RAG 系统
LlamaIndex 完整示例
# pip install llama-index
from llama_index.core import (
VectorStoreIndex,
SimpleDirectoryReader,
StorageContext,
load_index_from_storage,
)
from llama_index.core.retrievers import VectorIndexRetriever
from llama_index.core.query_engine import RetrieverQueryEngine
from llama_index.core.postprocessor import SimilarityPostprocessor
# 1. 加载文档
documents = SimpleDirectoryReader("./data").load_data()
# 2. 创建索引
index = VectorStoreIndex.from_documents(documents)
# 3. 持久化
index.storage_context.persist(persist_dir="./storage")
# 4. 重新加载(生产环境)
storage_context = StorageContext.from_defaults(persist_dir="./storage")
index = load_index_from_storage(storage_context)
# 5. 高级检索
retriever = VectorIndexRetriever(
index=index,
similarity_top_k=5,
)
query_engine = RetrieverQueryEngine(
retriever=retriever,
node_postprocessors=[
SimilarityPostprocessor(similarity_cutoff=0.7),
],
)
# 6. 查询
response = query_engine.query("RAG 的核心组件有哪些?")
print(response)
# 7. 流式输出
streaming_response = query_engine.query("详细解释")
for token in streaming_response.response_gen:
print(token, end="", flush=True)
LangChain 完整示例
# pip install langchain langchain-openai
from langchain_community.document_loaders import DirectoryLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain_openai import OpenAIEmbeddings, ChatOpenAI
from langchain.vectorstores import Chroma
from langchain.chains import RetrievalQA
from langchain.prompts import PromptTemplate
# 1. 加载文档
loader = DirectoryLoader('./data', glob="**/*.md")
documents = loader.load()
# 2. 切分
text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50)
splits = text_splitter.split_documents(documents)
# 3. Embedding + 向量库
vectorstore = Chroma.from_documents(
documents=splits,
embedding=OpenAIEmbeddings(),
persist_directory="./chroma_db",
)
# 4. 创建 chain
prompt_template = """基于以下上下文回答问题:
{context}
问题:{question}
回答:
"""
PROMPT = PromptTemplate(template=prompt_template, input_variables=["context", "question"])
qa_chain = RetrievalQA.from_chain_type(
llm=ChatOpenAI(model="gpt-5", temperature=0),
retriever=vectorstore.as_retriever(search_kwargs={"k": 5}),
return_source_documents=True,
chain_type_kwargs={"prompt": PROMPT},
)
# 5. 查询
result = qa_chain.invoke({"query": "RAG 的核心组件"})
print(result["result"])
print("来源:", [doc.metadata for doc in result["source_documents"]])
LlamaIndex 代码量约少 30%,且默认配置更优。
2026 年新趋势
LangGraph(LangChain 的子项目)
复杂 Agent 工作流的首选:
from langgraph.graph import StateGraph, END
from typing import TypedDict, Annotated
import operator
class State(TypedDict):
messages: Annotated[list, operator.add]
def agent(state):
# Agent 决策
response = llm.invoke(state["messages"])
return {"messages": [response]}
def should_continue(state):
last_message = state["messages"][-1]
if last_message.tool_calls:
return "tools"
return END
workflow = StateGraph(State)
workflow.add_node("agent", agent)
workflow.add_conditional_edges("agent", should_continue)
LlamaIndex Workflow
from llama_index.core.workflow import Workflow, StartEvent, StopEvent, step
class MyWorkflow(Workflow):
@step
async def query_step(self, ev: StartEvent) -> StopEvent:
# ...
return StopEvent(result="...")
两个框架都在向"可视化工作流"演进。
何时考虑替代方案
Haystack(深度学习时代老牌)
# 适合:复杂 NLP pipeline + LLM
from haystack import Pipeline
from haystack.nodes import EmbeddingRetriever, FARMReader
pipe = Pipeline()
pipe.add_node(component=retriever, name="Retriever", inputs=["Query"])
pipe.add_node(component=reader, name="Reader", inputs=["Retriever"])
优势:生产级稳定性,文档完善 劣势:社区增长慢
直接用 LLM SDK(不用框架)
# 简单场景:直接用 OpenAI SDK
response = openai.chat.completions.create(
model="gpt-5",
messages=[
{"role": "system", "content": "基于以下文档回答:..."},
{"role": "user", "content": question},
],
)
优势:零依赖,完全可控 劣势:要自己实现 retrieval / memory / tools
我的看法
2026 年的选型建议:
- 80% 的 LLM 项目 → 直接用 SDK + 自己组装(避免框架锁定)
- 快速 RAG → LlamaIndex(开箱即用)
- 复杂 Agent → LangChain / LangGraph
- 已有 LangChain 项目 → 继续用,迁移成本不划算
- 已有 LlamaIndex 项目 → 继续用,转 LangChain 收益有限
避免过度框架化:
很多团队一开始就上 LangChain,结果 90% 的代码只是简单的 prompt + 上下文管理。先从简单开始,需要时再升级到框架。
未来值得关注:
- DSPy:自动优化 prompt 的新框架
- Semantic Kernel:微软的 .NET 生态
- AutoGen:多 Agent 协作框架
参考
本文对比基于 2026 年 6 月最新版本,所有性能数据在 Apple M2 Pro 上实测。
📚 同主题文章
LLM 应用工程化实战:从 Prompt 到 Agent 部署的完整指南
LLM 应用从原型到生产有 10 倍差距。本文从 0 到生产级 LLMOps,含 Prompt 管理 / 评估 / 监控 / 成本优化 / Guardrails 完整链路。
RAG 2.0 实战:向量数据库选型与生产部署
RAG 是 AI Agent 商用的"最后一公里"。本文对比 6 大向量数据库,含 PostgreSQL 18 原生向量索引实战、4 个真实场景、生产部署清单。
AutoGen 0.4 实战:微软出品的多 Agent 对话框架
AutoGen 是微软推出的多 Agent 对话框架。本文从 0 演示协作式 Agent,含 5 个真实场景 + 与 LangGraph / CrewAI 对比。