首页/AI/RAG 与向量库速查/LlamaIndex 快速搭建索引与查询引擎

LlamaIndex 快速搭建索引与查询引擎

LlamaIndex 用 SimpleDirectoryReader 加载文档、VectorStoreIndex 建索引,查询引擎自动完成“检索 + 合成回答”,适合文档问答原型。

RAG 与向量库速查AI更新于 2026-10-13

这是做什么的

LlamaIndex 用 SimpleDirectoryReader 加载目录下的文档、VectorStoreIndex 建立向量索引,查询引擎自动完成「检索 + 合成回答」,适合快速搭出文档问答原型。它的数据连接器与索引抽象较清晰,切片与节点关系(node)是核心概念,便于后续做父子块与增量更新。

基本信息

适用Python,文档问答原型与中小规模知识库
核心概念Document(文档)→ Node(节点)→ Index(索引)→ QueryEngine(查询引擎)
默认存储内存索引,进程退出即丢失
持久化可落盘,也可外接 Milvus、Qdrant、pgvector 等向量库

精简示例

精简示例
from llama_index.core import SimpleDirectoryReader, VectorStoreIndex

docs = SimpleDirectoryReader("data").load_data()
index = VectorStoreIndex.from_documents(docs)
engine = index.as_query_engine(similarity_top_k=3)
resp = engine.query("文档里如何配置超时?")
print(resp)
for node in resp.source_nodes:
    print(node.score, node.metadata.get("file_name"))

使用要点

  • 先看 source_nodes:返回的引用节点才是可核验的依据,答案文本只是加工结果
  • 配好持久化:落盘或外接向量库,避免每次重启重建索引
  • 控制批量:入库时设置批量大小与并发,减少 embedding 接口压力
  • 调切片:默认分词器按英文设计,中文语料建议显式配置切片长度与分隔符
  • 加元数据:把文件名、页码、章节写入节点元数据,引用与过滤都要用

常用组件

环节组件注意
加载SimpleDirectoryReader按扩展名分发解析器,扫描件需另配 OCR
切分NodeParser / SentenceSplitter中文需调整块长与分隔符
索引VectorStoreIndex默认内存,生产需外接向量库
查询as_query_enginesimilarity_top_k 决定进入上下文的节点数
默认是内存索引,进程退出即丢失;生产环境要配置持久化(落盘或外接 Milvus、Qdrant、pgvector 等向量库),否则每次重启都要重新向量化一遍。

与同类框架的差别

  • 它以索引与节点为中心,文档到查询的路径更短,适合文档问答
  • 另一类框架以组件与编排为中心,组合更自由但链路要自己串
  • 两者在向量化模型与向量库封装上可互换,选择不必与存储绑定
  • 原型阶段选哪个都可以,关键是尽早固定切片策略与评测集
  • 迁移成本主要落在自定义解析与元数据字段,建议一开始就抽象出来

易错点

  • from_documents 会逐块调用 embedding,数据多时要配置批量与并发,否则耗时与失败率都会上升
  • 忘记持久化,每次重启都重建索引,费用与时间翻倍
  • 直接使用默认切片参数处理中文,长句被硬切导致召回下降
  • 只看查询引擎返回的答案文本,忽略 source_nodes,无法核对答案是否有据

数据来源与参考

  • LlamaIndex 官方文档(docs.llamaindex.ai)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌