1. 概述 (Executive Summary)
LlamaIndex(原 GPT Index)是一个专为 LLM 应用程序设计的数据框架。其核心使命是解决大模型“知识截止”与“缺乏私有上下文”的痛点。
不同于 LangChain 侧重于“计算逻辑的编排(Chains & Agents)”,LlamaIndex 专注于**“数据管道的构建”**。它提供了一套完整的 ETL(Extract, Transform, Load)流程,将私有数据转化为 LLM 可理解、可检索的格式,是构建生产级 RAG(检索增强生成) 应用的首选框架。
2. 数据摄取与分块策略 (Data Ingestion & Chunking)
分块(Chunking)是将非结构化文档转换为“节点(Nodes)”的过程,是决定 RAG 系统检索精度的第一道关卡。
核心分块策略
| 策略名称 | 技术原理 | 适用场景 |
|---|---|---|
| SentenceSplitter (默认) | 基于句子边界切分,辅以字符限制。保证语义连贯性。 | 通用文档、报告、文章。 |
| SentenceWindow (高精) | 切分为单句节点,但在元数据中保存“前后窗口”。检索时匹配单句,生成时提供完整窗口。 | 需要极高检索精度,且上下文依赖强的问答。 |
| SemanticSplitter (语义) | 利用 Embedding 计算相邻句子的相似度,在语义突变处切分。 | 话题跳跃性大、长篇叙事、播客转录。 |
| Hierarchical (层级) | 父子节点策略。检索小块(子节点),LLM 读取大块(父节点)。 | 复杂文档,需兼顾细节匹配与宏观上下文。 |
| Structured (结构化) | 针对特定格式(Markdown, JSON, Code)按语法树或层级解析。 | 技术文档、代码库、API 定义。 |
3. 索引机制与检索策略 (Indexing & Retrieval)
索引是将数据结构化以供查询的方式。LlamaIndex 支持单一索引及复杂的混合检索(Hybrid Retrieval)。
主要索引类型
- VectorStoreIndex:最核心索引。基于 Embedding 向量相似度(Top-k)。用于语义搜索。
- SummaryIndex (原 ListIndex):线性存储。用于全文总结或遍历查询。
- KeywordTableIndex:基于关键词提取。用于精确实体查找(如查特定订单号)。
- KnowledgeGraphIndex:构建实体关系三元组。用于推理复杂关系。
- PropertyGraphIndex:向量 + 知识图谱的融合。
混合检索与组合图 (Advanced Retrieval)
LlamaIndex 极力推崇混合策略以提升召回率:
- Hybrid Search (内部混合) :在 VectorStore 内部结合 Dense Retrieval (向量) 和 Sparse Retrieval (BM25/关键词) ,通过 RRF (Reciprocal Rank Fusion) 算法融合结果。
- Composable Graph (递归索引) :索引套索引。例如,顶层是一个 VectorIndex,其节点指向下层的 SummaryIndex。实现“先找文档,再找细节”的层级检索。
4. 查询引擎架构 (Query Engine Architecture)
Query Engine 是 RAG 的核心执行单元,封装了 Retriever(检索)和 Response Synthesizer(生成)的逻辑。
查询引擎类型
- Standard Query Engine:标准的 Retrieve -> Synthesize 流程。
- Router Query Engine:分类器模式。利用 LLM 判断用户意图,动态路由到不同的索引(如:问总结走 SummaryIndex,问细节走 VectorIndex)。
- Sub-Question Query Engine:分解模式。将复杂问题拆解为多个并行子问题(Decomposition),分别查询后汇总。适用于跨文档对比。
- SQL/Pandas Query Engine:Text-to-SQL。针对结构化数据,生成执行语句而非向量检索。
关键中间件:重排序 (Reranking)
在检索后、生成前,引入 Node Postprocessor 是提升效果的关键步骤:
- CohereRerank / BGE Reranker:使用 Cross-Encoder 模型对初步召回的 Top-N 节点进行精细打分和重新排序,剔除不相关内容,显著提升 Context 的质量。
5. 响应合成策略 (Response Synthesizer)
这是 RAG 的“最后一公里”,决定如何将检索到的碎片化 Context 组装成 Prompt 发送给 LLM。
| 策略模式 | 工作原理 | 优缺点 | 推荐场景 |
|---|---|---|---|
| Compact | 将多个 Chunk 塞满(Stuff)上下文窗口,一次性发送。 | 最快、最省钱。 | 默认首选,通用问答。 |
| Refine | 串行迭代。让 LLM 基于新 Chunk 不断修正上一步的答案。 | 回答详尽但速度慢、成本高。 | 需要极高细致度的分析。 |
| Tree Summarize | 递归聚合。自底向上分组总结,最后汇聚成根节点答案。 | 适合处理大量文本,支持并行。 | 总结类任务、对比类任务。 |
| Accumulate | 并行提取。对每个 Chunk 独立提问,最后拼接结果。 | 结果可能是列表形式。 | 从多文档中提取特定事实。 |