LangChain 与 LlamaIndex 对比
LLM 应用开发领域的两大先驱框架:通用型 LangChain 与专注数据连接的 LlamaIndex。在 RAG 和 AI 智能体开发中该如何选择?
刷新的是数据而非模型:一种在每次查询时将相关片段添加到上下文中的架构
无需 retrieval,直接把全部数据嵌入 prompt + prompt caching
视情况而定——但临界点比想象中低。按有据可查的价格计算,收支平衡点约为 200K token(以 5K chunk 计):低于这个值时,带 prompt caching 的长上下文既更简单又更便宜;高于这个值时,单次查询成本就转而有利于 RAG。在数据频繁更新、体量巨大或需要按用户授权的场景中,RAG 的访问控制和数据新鲜度优势是无法替代的。在成熟的架构中,常见做法是让两者在不同的数据切片上协同使用。
| 分类 | RAG (Retrieval-Augmented Generation) | Uzun bağlam (1M+ token) |
|---|---|---|
| 性能 | 7/10 | 7/10 |
| 学习难易度 | 5/10 | 9/10 |
| 生态系统 | 9/10 | 7/10 |
| 社区 | 9/10 | 7/10 |
| 就业市场 | 8/10 | 6/10 |
| 面向未来 | 8/10 | 9/10 |
# OpenAI Responses API — File Search(托管式 RAG 工具)
# 截至 2026 年 9 月的官方文档:platform.openai.com/docs/guides/tools-file-search
from openai import OpenAI
client = OpenAI()
response = client.responses.create(
model="gpt-6-astra",
input="Q3 finansal raporunda net kâr marjı neydi?",
tools=[{
"type": "file_search",
"vector_store_ids": ["vs_abc123"],
}],
)
print(response.output_text)
# 这个托管工具由 OpenAI 一方负责管理 embedding + 索引 + retrieval
# (无需编写相关代码)。成本:每 1000 次工具调用 $2.50
# + 存储费 $0.10/GB/天(首 1GB 免费)。来源:platform.openai.com/docs/pricing# Claude API — 用 prompt caching 降低 1M token 上下文的成本
# 来源:platform.claude.com/docs/en/build-with-claude/prompt-caching
import anthropic
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-sonnet-5",
max_tokens=1024,
system=[
{
"type": "text",
"text": full_knowledge_base_text, # 例如:80万 token 的内部文档
"cache_control": {"type": "ephemeral"},
}
],
messages=[{"role": "user", "content": "Onboarding sürecinde hangi adımlar zorunlu?"}],
)
# 首次调用:按完整 input 价格计费(cache write)。
# 后续调用(短时间内,例如 5 分钟):适用 cache-read 价格
# ——为 base input 价格的一小部分(详见官方定价页面)。视情况而定——但临界点比想象中低。按有据可查的价格计算,收支平衡点约为 200K token(以 5K chunk 计):低于这个值时,带 prompt caching 的长上下文既更简单又更便宜;高于这个值时,单次查询成本就转而有利于 RAG。在数据频繁更新、体量巨大或需要按用户授权的场景中,RAG 的访问控制和数据新鲜度优势是无法替代的。在成熟的架构中,常见做法是让两者在不同的数据切片上协同使用。
获取免费咨询是的,但已经不是在所有场景下都需要了。1M+ 的上下文窗口大大减少了在静态、单次会话查询场景中对 RAG 的需求。以下三种情况下 retrieval 仍然是必需的:数据频繁更新(每次更新都会使 cache 失效)、需要按用户/按行级访问控制的多租户数据,以及语料库超出单次请求的上下文上限(1M token)。