介绍
LlamaIndex(原 GPT Index)是开源的大语言模型(LLM)数据层框架,核心解决 LLM 知识截止、无法直接使用私有数据的痛点,主打 RAG(检索增强生成)与数据驱动的智能体(Agent)应用,让私有数据成为 LLM 的“外部记忆”。它的核心定位是连接私有数据与 LLM 的桥梁,提供完整的数据接入、索引、检索与问答能力,兼顾易用性与高度可定制性。
定位
- 数据框架而非编排框架:专注数据管道构建(数据加载→分块→索引→检索),区别于 LangChain 侧重“计算逻辑编排(Chains/Agents)”。
- LLM 的外部知识库:将 PDF、数据库、API 等私有数据转为 LLM 可理解、检索的格式,支持私有数据问答、文档摘要、智能体等场景。
- 低门槛+高扩展:5 行代码可实现基础 RAG,也支持自定义数据加载、切分、索引、检索、重排全链路。
解决痛点
- 知识截止:LLM 仅懂训练数据,无法获取最新/私有信息。
- 上下文窗口限制:超长文档无法直接输入 LLM,需高效检索相关片段。
- 私有数据安全:避免直接微调 LLM(成本高、数据泄露风险),通过检索注入上下文更安全。
架构
LlamaIndex 采用数据连接层→索引层→引擎层的分层架构,全链路模块化,可灵活组合。
1. 数据连接层(Data Connectors)
- 功能:统一接入多源数据,转为标准 Document/Node 对象。
- 支持数据源:100+ 种,包括:
- 文档:PDF、Word、Markdown、HTML、TXT
- 结构化数据:SQL(MySQL/PostgreSQL)、CSV、Excel
- 云端/协作:Notion、Slack、Google Drive、Confluence
- 其他:API、网页爬虫、JSON、XML
- 核心组件:
Document:完整文档单元,含文本+元数据(来源、日期、标签)。Node:Document 切分后的文本块(如 512 token),是索引/检索的基本单位,含文本、元数据、节点关系。
2. 索引层(Indices,核心)
- 功能:将 Node 组织为高效检索结构,支持语义、关键词、层级等多模式检索。
- 主流索引类型:
| 索引类型 | 核心原理 | 适用场景 |
|---|---|---|
| VectorStoreIndex(最常用) | 文本→Embedding 向量→向量库(Chroma/Milvus/FAISS),语义相似度检索 | 通用 RAG、语义问答、长文档检索 |
| SummaryIndex | 文档先摘要,检索摘要后关联原文 | 超长文档全局摘要、遍历式问答 |
| KeywordTableIndex | 关键词倒排索引,精确实体匹配 | 订单号、ID、专有名词等精准查询 |
| TreeIndex | 树形层级索引,自上而下分层检索 | 深度问答、多文档关联推理 |
| KnowledgeGraphIndex | 实体-关系-实体三元组,知识图谱推理 | 复杂关系问答(如“A 与 B 的合作项目”) |
| ComposableGraph | 多索引组合(向量+关键词+图谱) | 复杂问题多路径检索,提升准确率 |
- 向量库支持:内置 Chroma(默认轻量)、FAISS、Milvus、Pinecone、Weaviate 等,支持本地/云端部署。
3. 引擎层(Engines)
- 功能:基于索引提供自然语言交互能力,支持问答、对话、智能体。
- 核心引擎:
- Query Engine(查询引擎):RAG 核心,流程:用户问题→检索相关 Node→拼接上下文→LLM 生成答案;支持单轮问答、多文档融合、引用溯源。
- Chat Engine(对话引擎):多轮对话,支持历史记忆、上下文关联、对话风格定制(如客服/专家)。
- Agent(智能体):LLM 驱动的工具调用代理,可调用检索、API、代码解释器等工具,完成复杂任务(如“查文档+算数据+生成报告”)。
- Workflow(工作流):事件驱动的流程编排,比传统 Chains 更灵活,支持多步骤、条件分支、并行执行。
概念
1. Document & Node
- Document:原始文档的抽象,如一篇 PDF、一个网页,含
text(全文)和metadata(来源、作者、日期)。 - Node:Document 经
SentenceSplitter等切分器拆分后的片段,默认 512 token,含text(片段内容)、metadata(继承+新增)、relationships(关联节点,如前/后片段)。
2. Embedding(嵌入)
- 作用:将文本转为高维向量(如 1536 维),语义相近的文本向量距离更近,实现语义检索。
- 支持模型:OpenAI Embedding、BGE、Sentence-BERT、本地模型(如 all-MiniLM)。
3. Retriever(检索器)
- 功能:根据用户问题,从索引中返回 Top-K 相关 Node,支持:
- 语义检索:向量相似度(如 Cosine)。
- 关键词检索:BM25、TF-IDF。
- 混合检索:向量+关键词融合,兼顾语义与精准。
4. RAG 流程(核心链路)
- 数据加载:用
SimpleDirectoryReader加载 PDF/Markdown 等。 - 文本切分:
SentenceSplitter按 token 切分为 Node。 - 向量生成:Node 文本→Embedding 向量。
- 索引构建:向量+Node 存入 VectorStoreIndex。
- 查询检索:用户问题→向量→检索 Top-K 相关 Node。
- 答案生成:Node 文本+问题→Prompt→LLM→答案。
优势
- 全链路一体化:从数据加载到答案生成,开箱即用,无需拼接多个工具。
- 多索引灵活组合:支持向量、关键词、图谱等索引混合,适配复杂场景。
- 高度可定制:数据切分、Embedding、检索、重排、LLM 全环节可自定义,适配企业级需求。
- 丰富的生态集成:支持主流 LLM(OpenAI/Anthropic/本地模型)、向量库、数据源,无缝对接现有技术栈。
- 生产级能力:支持流式输出、异步处理、可观测性(LangSmith/Weights & Biases)、评估工具,适合部署上线。
典型应用场景
- 企业知识库问答:内部文档、手册、FAQ 私有问答。
- 文档摘要与分析:超长 PDF/报告自动摘要、关键信息提取。
- 智能客服:基于产品文档的多轮对话客服。
- 研究助手:学术论文、行业报告检索与分析。
- 数据驱动智能体:自动执行“查数据→算结果→生成报告”等复杂任务。
与 LangChain 的区别
| 维度 | LlamaIndex | LangChain |
|---|---|---|
| 核心定位 | 数据层框架(索引+检索) | 编排框架(Chains/Agents) |
| 优势场景 | RAG、私有数据问答、文档检索 | 多工具编排、复杂智能体、流程自动化 |
| 数据处理 | 内置完善的数据加载/切分/索引 | 依赖第三方组件,需手动拼接 |
| 上手难度 | 低(5 行代码实现 RAG) | 中高(需理解 Chain 逻辑) |
| 生态侧重 | 向量库、数据源、LLM 集成 | 工具集成(API/数据库/代码)、流程编排 |
总结
LlamaIndex 是构建 RAG 与私有数据 LLM 应用的首选框架,以“数据为核心”,提供从数据接入到智能问答的全链路解决方案,兼顾易用性与企业级可定制性。无论快速搭建原型,还是开发生产级应用,LlamaIndex 都是高效、灵活的选择。