AI 应用框架 · 02

LlamaIndex 详细解析· 数据连接与 RAG 引擎(喂知识给 AI)

让 LLM 拥有外部知识,问答更准确。

LlamaIndex 详细解析全景图
一句话总结

LlamaIndex 就像一个超级图书管理员,帮你把各种各样的数据整理好,在你需要时快速找出最相关的内容,再交给 LLM 生成准确的答案。

1. LlamaIndex 是什么?

LlamaIndex(原名 GPT Index)是一个用于构建数据驱动型 LLM 应用的框架。 核心目标:连接各种数据源,构建索引,并提供强大的检索与生成能力。

数据源
从各种来源加载数据
索引构建
组织、切块、向量化
检索增强
快速检索相关信息
生成回答
结合上下文生成答案

2. 核心流程(RAG 流程)

Step 1
数据加载
Load
Step 2
文本切块
Chunk
Step 3
向量化
Embed
Step 4
索引构建
Index
Step 5
检索
Retrieve
Step 6
生成回答
Generate

3. 核心模块(Code Map)

Readers 数据加载器

支持多种数据源(文件、网页、数据库等)

Nodes 节点(文本块)

将文档切分为语义相似的节点

Indexes 索引结构

多种索引结构组织和存储节点

Retrievers 检索器

根据查询从索引中检索相关文本

Query Engine 查询引擎

整合检索与 LLM 生成最终答案

Embeddings 嵌入模型

将文本转换为向量表示

Storage 存储层

存储索引、文档、向量等数据

Callbacks 回调机制

日志、调试、事件处理等

4. 数据加载(Readers 支持的数据源)

文件
PDFTXTDOCXPPTXCSVJSON
网页
网站API 接口RSSNotionGitHubYouTube
数据库
SQLMongoDBPostgreSQLMySQLElasticsearch
其他
Slack云存储(S3, GCS)自定义数据源

5. 索引结构(Indexes)

Vector Index
向量索引

基于向量相似度检索(最常用)

适合:一般问答、语义搜索
Tree Index
树形索引

构建层次结构,适合摘要类查询

适合:需要层次化摘要
List Index
列表索引

顺序列表,结构简单直观

适合:简单顺序访问
Keyword Index
关键词索引

基于关键词匹配检索

适合:精确匹配关键词
Graph Index
图谱索引

关系图谱,复杂知识检索

适合:需要图谱关系

6. 检索与查询(Retrieval)

Top K 检索

返回最相关的 K 个节点

相似度阈值检索

返回相似度高于阈值的节点

混合检索(Hybrid)

向量检索 + 关键词检索

重排序(Rerank)

使用重排模型优化结果

上下文压缩(Compression)

压缩上下文,保留关键信息

7. 查询引擎(Query Engine)

RetrieverQA

基础问答生成

SubQuestion

子问题分解

Router

路由器多策略

Chat

对话模式,支持多轮对话

Custom

自定义引擎,灵活扩展

8. 核心特性

  • 统一接口:支持多种数据源和 LLM
  • 模块化设计:可组合的组件,易于扩展
  • 高效索引:多种索引结构,优化检索效果
  • RAG 优化:检索增强生成,减少幻觉
  • 生产就绪:支持并发、批处理、缓存等
  • 生态丰富:集成主流向量数据库和工具

9. 代码示例(快速上手)

from llama_index.core import SimpleDirectoryReader, VectorStoreIndex
from llama_index.core.query_engine import RetrieverQueryEngine

# 1. 加载数据
reader = SimpleDirectoryReader("./data")
documents = reader.load_data()

# 2. 构建索引
index = VectorStoreIndex.from_documents(documents)

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

# 4. 查询
response = query_engine.query("LlamaIndex 是什么?")
print(response)

10. 真实案例 & 开源项目