跳到主要内容

LlamaIndex 深度解析

架构概览

LlamaIndex 的核心流程:数据加载 → 索引构建 → 查询执行

数据源(文件/DB/API) → Documents → 索引(Vector/Tree/KG) → 查询引擎 → LLM → 回答

数据连接层

内置连接器

  • 文件:PDF、Word、Markdown、CSV 等
  • 数据库:SQL、MongoDB 等
  • 云服务:S3、Google Drive、Notion、Slack
  • 网页:爬虫、RSS

自定义连接器

通过 SimpleDirectoryReaderVectorStoreIndex 等扩展,可接入任意数据源。

索引类型

索引类型说明适用场景
VectorStoreIndex向量索引语义检索、RAG
TreeIndex树形结构层次化文档、摘要
KeywordTableIndex关键词索引精确匹配
KnowledgeGraphIndex知识图谱实体关系查询
ComposabilityGraphIndex组合索引多源、多策略

查询引擎

  • VectorIndexRetriever:向量检索 + 重排序
  • ResponseSynthesizer:组装上下文并生成回答
  • SubQuestionQueryEngine:子问题分解、并行检索、结果汇总
  • RouterQueryEngine:根据问题类型路由到不同索引

与 RAG 的集成

LlamaIndex 是 RAG 的天然实现框架:

  1. 加载文档并分块
  2. 使用 Embedding 生成向量
  3. 构建 VectorStoreIndex 或存入外部向量库
  4. 通过 QueryEngine 检索 + 生成
  5. 支持重排序、Hybrid Search、多文档融合

与 LangChain 的关系

  • 互补:LlamaIndex 做数据与检索,LangChain 做链与 Agent
  • 集成:可通过 LlamaIndexLangChainRetriever 等桥接两者
  • 选型:数据密集型、RAG 优先选 LlamaIndex;编排复杂、多工具选 LangChain

Agent 与工具

LlamaIndex 支持 ReAct、OpenAI Function 等 Agent 模式,可将检索、计算等封装为工具,由 LLM 调用。与 AgentMCP 结合可扩展能力。

代码示例:最小 RAG 流程

from llama_index.core import VectorStoreIndex, SimpleDirectoryReader, Settings
from llama_index.embeddings.huggingface import HuggingFaceEmbedding

# 1. 设置 Embedding 模型
Settings.embed_model = HuggingFaceEmbedding(model_name="BAAI/bge-large-zh-v1.5")

# 2. 加载文档
documents = SimpleDirectoryReader("./docs").load_data()

# 3. 构建向量索引
index = VectorStoreIndex.from_documents(documents)

# 4. 创建查询引擎
query_engine = index.as_query_engine()

# 5. 提问
response = query_engine.query("什么是 RAG?")
print(response)

工作流与 Agent

LlamaIndex 的工作流(Workflow)支持事件驱动编排,可将检索、生成、工具调用组成有向图,支持分支、循环与并行,适合复杂 Agent 流程。与 Agent 结合时,可将 QueryEngine 作为工具暴露给 LLM。

评估与迭代

  • 检索质量:Recall@K、MRR、命中率
  • 生成质量:Faithfulness(与检索内容一致性)、Relevancy
  • 端到端:人工标注或用户反馈
  • LlamaIndex 提供 ResponseEvaluatorFaithfulnessEvaluator 等,可集成到评估 pipeline

与本地推理的配合

LlamaIndex 支持 Ollama、vLLM 等本地推理后端,通过 OllamaOpenAI(base_url 指向自建)等 LLM 类对接,实现全本地 RAG 与 Agent。参见 本地推理

总结

LlamaIndex 以「数据优先」为设计理念,与 RAG、Embedding、向量数据库形成闭环,是构建知识库与数据应用的首选框架之一。掌握索引类型、查询引擎与工作流,可灵活应对从简单问答到复杂 Agent 的各类场景。