LlamaIndex 技术架构与核心策略分析

72 阅读4分钟

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)。

主要索引类型

  1. VectorStoreIndex:最核心索引。基于 Embedding 向量相似度(Top-k)。用于语义搜索。
  2. SummaryIndex (原 ListIndex):线性存储。用于全文总结或遍历查询。
  3. KeywordTableIndex:基于关键词提取。用于精确实体查找(如查特定订单号)。
  4. KnowledgeGraphIndex:构建实体关系三元组。用于推理复杂关系。
  5. 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 EngineText-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 独立提问,最后拼接结果。结果可能是列表形式。从多文档中提取特定事实。