微信扫码
添加专属顾问
两大RAG框架LangChain与LlamaIndex深度对比,助你选择最适合项目的工具。 核心内容: 1. LangChain的核心组件与优势场景分析 2. LlamaIndex的工作流程与关键技术特点 3. 两种框架在RAG四大组件上的详细对比与代码示例
引言
检索增强生成(RAG)把信息检索与生成式模型结合,在问答、摘要及其他 NLP 任务中极具威力。实现 RAG 最常用的两大框架是 LangChain 与 LlamaIndex。二者都可处理文档摄取、切分、索引,并把各步骤串联成流畅的 RAG 工作流。但哪一个更契合你的项目?本文将围绕 RAG 的四大核心组件——加载器(Loaders)、切分器(Splitters)、索引(Indexing)与链(Chains)——逐层比较 LangChain 与 LlamaIndex,并在每一步给出代码示例。
LangChain 围绕以下模块构建:
提示(Prompts)
提示是给予语言模型的指令,用以引导回答。LangChain 提供标准化接口来创建与管理提示,便于跨模型、跨场景复用与定制。
模型(Models)
LangChain 为多家大模型(如 OpenAI GPT-4o、Anthropic Claude、Cohere 等)提供统一接口,抽象掉不同模型的差异,实现无缝切换。
记忆(Memory)
LangChain 的亮点之一是其记忆管理能力。与普通 LLM 独立处理每条查询不同,LangChain 可保存先前交互信息,实现上下文连贯的对话。它提供多种记忆实现,可保存完整对话历史,也可通过摘要旧信息、保留近期信息的方式工作。
链(Chains)
链是一系列操作,每一步的输出作为下一步的输入。LangChain 提供健壮接口来构建与管理链,并附带大量可复用组件。这种模块化方法可创建集成多种工具与多次 LLM 调用的复杂工作流。
智能体(Agents)
智能体根据输入判断并执行动作。它们利用 LLM 决定动作顺序,并调用各种工具完成任务。LangChain 提供多种预制智能体,可按需定制。
LangChain 的强项
• 需要保留对话上下文的聊天机器人、自动客服等场景
• 通过提示让 LLM 执行文本生成、翻译、问答等任务
• 提供访问多源多格式文档的加载器,丰富 LLM 知识库
• 使用文本嵌入模型生成语义嵌入,支持 50 余种向量存储方案实现内容发现与检索
• 智能体与工具包:智能体依据自然语言指令行动,可动态调用链。
LlamaIndex 为 LLM 增添 RAG 能力,让外部知识源、数据库、索引充当记忆。
LlamaIndex 典型工作流
索引阶段
将私有数据高效转为可搜索的向量索引。可处理无结构文本、结构化数据库记录、知识图谱等。数据被转换为捕捉语义含义的数值嵌入,以便后续快速相似度搜索。
存储
默认情况下,索引数据仅存于内存;如需持久化,可用 .persist() 方法写入磁盘,后续通过重建存储上下文并加载索引,节省重索引时间与算力。
向量存储
用于保存索引阶段产生的嵌入。
嵌入
默认使用 OpenAI 的 text-embedding-ada-002,也可按所用 LLM 替换其他嵌入方案。VectorStoreIndex 将文本转为嵌入,查询时亦将问题转为嵌入并返回最相似的前 k 个文本块(top-k 语义检索)。若嵌入已存在,可直接从向量库加载,免去重新索引。
查询阶段
系统根据语义相似度从向量索引中检索最相关片段,连同原始问题交给大模型生成最终回答。
检索
从存储索引中检索最相关信息并送给 LLM,返回最新且上下文相关的回答。
后处理
对检索到的节点(文档片段)进行重排、变换或过滤,通过元数据或关键词提高数据的相关性与准确性。
回答合成
将查询、最相关数据及初始提示组合后送 LLM 生成回答。
LlamaHub
包含多种数据加载器,可将多源数据接入应用。例如 Google Docs Reader、SimpleDirectoryReader 等,支持 md、PDF、图片、Word、音视频等格式。
• LlamaIndex 长于搜索与检索,适合需高级搜索的项目。能快速、精准地从大数据集中检索信息。
• LangChain 是一套模块化、灵活的工具集,可构建各类 NLP 应用,提供标准链式接口、丰富集成及端到端场景链。
加载器负责从本地文件、API、数据库等多源加载文档。二者均提供常用格式的内置加载器。
LangChain 中的加载器
LangChain 拥有多种加载器,可加载文本、PDF 甚至网页。
from langchain.document_loaders import TextLoader
# Load a text document
loader=TextLoader("sample.txt")
documents=loader.load()
print(documents[0].page_content)LangChain 加载器返回一个 Document 对象列表,可继续处理。
LlamaIndex 中的加载器
LlamaIndex(原 GPT Index)采用类似方式加载文档,并支持 Pandas DataFrame 等额外格式。
from llama_index import SimpleDirectoryReader
# Load a text document from a directory
loader=SimpleDirectoryReader('path/to/docs')
documents=loader.load_data()
print(documents[0].text)
LlamaIndex 的加载器同样返回 Document 对象列表,但结构可能因加载器而异。
切分器将大文档拆分成小块,以适配 GPT、BERT 等模型的 token 限制。
LangChain 中的切分器
LangChain 的切分器称为 TextSplitters,可按字符、单词或句子自定义切分。
from langchain.text_splitter import CharacterTextSplitter
# Define a character splitter
splitter=CharacterTextSplitter(chunk_size=1000,chunk_overlap=200)
chunks=splitter.split_documents(documents)
print(chunks[0].page_content)LlamaIndex 中的切分器
LlamaIndex 使用 TokenTextSplitter,按 token 数量切分文档,确保块大小符合模型限制。
from llama_index import TokenTextSplitter
# Define a token splitter
splitter=TokenTextSplitter(chunk_size=1000)
chunks=splitter.split(documents)
print(chunks[0].text)索引是 RAG 核心,支持基于用户查询快速检索相关片段。
LangChain 中的索引
LangChain 使用 VectorStoreIndex,通过文档嵌入创建索引,支持相似度检索。
from langchain.vectorstores import FAISS
from langchain.embeddings.openai import OpenAIEmbeddings
# Create embeddings
embedding_model=OpenAIEmbeddings()
# Create FAISS index
index=FAISS.from_documents(chunks,embedding_model)
LlamaIndex 中的索引
LlamaIndex 通过 GPTTreeIndex 简化索引,使用树形结构实现高效检索。
from llama_index import GPTTreeIndex
# Create an index
index=GPTTreeIndex(documents)
query_engine=index.as_query_engine()
链指将检索与生成串接的操作序列。二者均可把检索结果送入生成模型。
LangChain 中的链
LangChain 支持灵活链式,可将 LLMChain 等多个组件组合成复杂工作流。
from langchain.chains import RetrievalQA
from langchain.llms import OpenAI
# Combine FAISS index and OpenAI for RAG
llm=OpenAI()
qa_chain=RetrievalQA(llm=llm,retriever=index.as_retriever())
result=qa_chain.run("What is the content of the document?")
print(result)
LlamaIndex 中的链
LlamaIndex 通过 query engine 将检索与生成合并,简化实现。
response=query_engine.query("What is the content of the document?")
print(response)选择取决于项目复杂度、所需灵活性及框架特性。
LangChain:提供对 RAG 管道各组件的细粒度控制,可构建高度灵活的工作流,适合多源异构数据与多种检索策略。
示例场景:构建多模态 RAG,需同时处理 PDF、网页、API。
from langchain.chains import SequentialChain
from langchain.llms import OpenAI
from langchain.document_loaders importWebPageLoader,TextLoader
from langchain.vectorstores import FAISS
# Step 1: Load data from multiple sources
pdf_loader=TextLoader("docs/sample.pdf")
web_loader=WebPageLoader(url="[https://example.com")](https://example.com")/)
documents=pdf_loader.load()+web_loader.load()
# Step 2: Create embeddings and index
embedding_model=OpenAIEmbeddings()
index=FAISS.from_documents(documents,embedding_model)
# Step 3: Build a chain that retrieves and generates responses
llm=OpenAI()
qa_chain=RetrievalQA(llm=llm,retriever=index.as_retriever())
# Run the chain
response=qa_chain.run("What are the key points in the PDF and website?")
print(response)LlamaIndex:适合较小范围、结构简单的文本任务,配置极简,迅速落地。
from llama_index import SimpleDirectoryReader,GPTTreeIndex
# Load documents from a directory
loader=SimpleDirectoryReader('docs/')
documents=loader.load_data()
# Build a tree index and query
index=GPTTreeIndex(documents)
query_engine=index.as_query_engine()
# Query the system
response=query_engine.query("Summarize the legal document.")
print(response)LangChain:连接器丰富(FAISS、Pinecone、Chroma 等向量库;OpenAI、Claude、Hugging Face 等模型),切换模型、存储轻松自如。
fromlangchain.chainsimportSimpleSequentialChain
fromlangchain.llmsimportOpenAI,HuggingFaceHub
# Use GPT-4 and Hugging Face BERT sequentially
gpt_chain=LLMChain(llm=OpenAI(model="gpt-4"),prompt="What is AI?")
bert_chain=LLMChain(llm=HuggingFaceHub(model="bert-large-uncased"),prompt="Translate the response.")
# Chain them together
chain=SimpleSequentialChain(chains=[gpt_chain,bert_chain])
result=chain.run("What is the future of AI?")
print(result)LlamaIndex:集成能力相对有限,但在快速文档摄取与查询场景表现可靠。
LangChain:支持路由查询、混合检索(关键词+向量)、后检索重排等高级策略。
示例:法律文档用关键词检索,科研论文用向量检索,LangChain 可路由至对应检索器。
from langchain.retrievers.multi_retriever import MultiRetriever
from langchain.retriever simport FAISSRetriever,KeywordRetriever
# Define keyword and embedding-based retrieval systems
keyword_retriever=KeywordRetriever(documents=legal_documents)
embedding_retriever=FAISSRetriever(index=scientific_index)
# Combine them in a MultiRetriever
retriever=MultiRetriever(retrievers={
'legal':keyword_retriever,
'science':embedding_retriever
})
# Query the retriever with a legal question
response=retriever.retrieve("What are the recent changes in contract law?")
print(response)LlamaIndex:适合简单任务,如文档内定位或摘要,其树状索引对层次分明的文档(合同、法规)尤佳。
from llama_index import GPTTreeIndex
# Load and index legal contracts
documents=SimpleDirectoryReader('contracts/').load_data()
index=GPTTreeIndex(documents)
# Query specific clauses within a contract
response=index.query("What are the termination clauses?")
print(response)LangChain:社区活跃,更新迅速,云部署、扩展更成熟。
LlamaIndex:相对年轻,却在简单工作流或层次数据场景快速流行。
二者均为优秀 RAG 框架,但适用场景不同。
选 LangChain 若你需要:
• 对每个环节进行深度定制
• 处理多模态、多源数据
• 采用高级检索策略(混合搜索、后检索重排)
• 与多种模型、存储系统无缝集成
LangChain 功能更强、更灵活,适合需要复杂管道与深度定制的场景。
选 LlamaIndex 若你需要:
• 简单轻量的快速 RAG 实现,聚焦文档检索与摘要
• 适配层次化文档的树状索引
• 最小配置即可运行的系统
LlamaIndex 更简洁高效,适合文档型任务且无需深度定制。
最终,项目复杂度决定选择:
• 复杂多源、高定制需求 → LangChain
• 文档型、层次结构、快速落地 → LlamaIndex
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业
2026-07-19
正本清源:企业 AI 不是建在 Harness 上,而是用 Harness 承载业务流程
2026-07-17
OpenWiki Brains 与 wiki memory 模式:智能体记忆从反应式推到主动式
2026-07-05
AI Agent 慢在哪?Node.js 探针把模型、工具和服务链路一次串起来
2026-07-05
拆解LangChain刚开源的OpenWiki:如何落地个人Wiki知识库
2026-07-01
LangGraph Runtime 是什么?一文讲清Runtime与Context的作用与用法!
2026-06-26
拆解Agent Harness的11大核心组件与工程实践(附下载)
2026-06-05
让 Agent 快速上生产:基于 OceanBase 和 LangChain 打造的智能体系统解决方案发布
2026-05-19
90% 的 Agent 失败,不是框架不行,而是卡在 5 个工程问题
2026-07-05
2026-06-05
2026-07-17
2026-07-01
2026-06-26
2026-07-05
2026-07-19
2026-03-26
2025-11-03
2025-10-29
2025-07-14
2025-07-13
2025-07-05
2025-06-26
2025-06-13
欢迎您使用【53AI 官方网站】(以下简称“本网站”或“我们”)。本《会员服务协议》(以下简称“本协议”)是您(以下简称“会员”或“用户”)与【深圳市博思协创网络科技有限公司】之间关于注册、登录及使用本网站会员服务所订立的法律协议。
在您注册或登录前,请务必审慎阅读、充分理解各条款内容,特别是免除或限制责任的条款、知识产权条款、争议解决条款等。此类条款将以加粗形式提示您注意。 当您通过微信公众号授权、手机验证码验证或其他方式成功登录本网站时,即视为您已完全理解并同意接受本协议的全部内容。
一、 定义
本网站:指由【深圳市博思协创网络科技有限公司】运营的,域名为【53ai.com】的网站及相关移动端页面。
会员服务:指本网站向注册会员提供的知识库文章查阅、内容检索及其他相关增值服务。
知识库内容:指本网站发布的包括但不限于文字、图表、数据、研究报告、行业分析等数字化内容资源。
二、 账号注册与登录
登录方式:本网站支持以下登录方式,您可根据实际情况选择:
微信公众号授权登录:您同意将您的微信OpenID信息授权给本网站,用于创建或关联会员账号。
手机验证码登录:您需提供真实有效的手机号码,并通过短信验证码完成身份验证与登录/注册。
账号安全:您的账号仅限您本人使用,禁止赠与、借用、租用、转让或售卖。因您保管不善导致的账号被盗、密码泄露等损失,由您自行承担。
实名认证:根据相关法律法规要求,我们可能要求您在特定功能下完成实名认证。如您拒绝提供,可能无法使用部分或全部服务。
未成年人保护:若您未满18周岁,请在法定监护人的陪同下阅读本协议,并在征得监护人同意后使用本服务。
三、 服务内容与规范
知识库查阅权限:会员登录后,有权按照其会员等级对应的权限范围,在线浏览、检索本网站知识库中的相关文章及内容。
服务变更:我们有权根据业务发展需要,调整、变更或终止部分服务内容,并将以网站公告、公众号消息等方式提前通知。
禁止行为:您在使用服务时不得实施以下行为:
利用技术手段批量爬取、下载、转存知识库内容;
将知识库内容用于商业目的或未经授权地向第三方传播;
干扰本网站正常运行或侵犯其他用户合法权益;
发布违法违规信息或从事违反公序良俗的活动。
四、 知识产权声明
权利归属:本网站知识库中的排版设计、软件代码等内容的知识产权均归【公司全称】或原权利人所有,受《中华人民共和国著作权法》等法律保护。
有限许可:本网站授予会员一项非独占、不可转让、不可转授权的普通许可,仅限于个人学习、研究之目的在线查阅知识库内容。
侵权追责:未经书面许可,任何单位或个人不得以任何形式复制、转载、摘编、镜像、汇编或以其他方式使用上述内容。一经发现,我们保留追究其法律责任的权利。
五、 个人信息保护
我们重视对您个人信息的保护。关于我们如何收集、使用、存储和保护您的个人信息,请单独阅读 《隐私政策》。
您通过微信公众号授权或手机号验证所提供的信息,我们将严格按照《个人信息保护法》的规定处理,仅用于身份识别、服务提供及安全验证等必要用途。
您可以随时通过网站设置或联系客服行使查阅、更正、删除个人信息及撤回授权同意的权利。
六、 免责声明
内容准确性:知识库内容仅供参考,不构成专业建议。我们不对其完整性、准确性、时效性作任何明示或暗示的保证,您应自行判断并承担使用风险。
不可抗力:因自然灾害、政策法规变化、网络故障、第三方平台接口异常(如微信接口维护、运营商短信通道故障)等不可抗力导致的服务中断或延迟,我们不承担违约责任。
第三方链接:本网站可能包含指向第三方网站的链接,该等网站的内容和服务不受我们控制,请您自行甄别风险。
七、 违约责任
如您违反本协议约定,我们有权视情节采取警告、限制功能、暂停服务、注销账号等措施,并保留要求赔偿损失的权利。
如因您的违约行为导致我们遭受行政处罚、第三方索赔或商誉损失,您应承担全部赔偿责任(包括但不限于罚款、赔偿金、律师费、公证费等)。
八、 法律适用与争议解决
本协议的订立、执行和解释均适用中华人民共和国大陆地区法律。
因本协议产生的或与本协议有关的任何争议,双方应友好协商解决;协商不成的,任何一方均可向【公司所在地】有管辖权的人民法院提起诉讼。
九、 其他
本协议构成双方就本服务达成的完整协议,取代此前任何口头或书面约定。
本协议任一条款被认定为无效或不可执行的,不影响其他条款的效力。
我们对本协议享有最终解释权,并在法律允许的范围内保留随时修改的权利。修改后的协议一经公布即生效,继续使用服务即视为同意修订内容。