LlamaIndex 教程 2026:构建生产级 RAG 应用
通过 LlamaIndex 摄取管道和查询引擎将 LLM 连接到您的文档
LlamaIndex 教程 2026:构建生产级 RAG 应用
通过 LlamaIndex 摄取管道和查询引擎将 LLM 连接到您的文档
完整的 LlamaIndex 2026 教程。涵盖 VectorStoreIndex、持久化 Qdrant 存储、聊天引擎、子问题分解、语义分块、元数据过滤和流式传输。
LlamaIndex 教程 2026:构建生产级 RAG 应用
LlamaIndex 是通过 RAG 管道将 LLM 连接到数据的主要框架。
安装
bash
pip install llama-index llama-index-vector-stores-qdrant
pip install llama-index-embeddings-openai
基本 RAG 管道
python
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader, Settings
from llama_index.embeddings.openai import OpenAIEmbedding
from llama_index.llms.openai import OpenAI配置模型
Settings.llm = OpenAI(model='gpt-4o-mini', temperature=0.1)
Settings.embed_model = OpenAIEmbedding(model='text-embedding-3-small')加载文档
documents = SimpleDirectoryReader('./docs').load_data()构建索引(自动嵌入和存储)
index = VectorStoreIndex.from_documents(documents)查询
query_engine = index.as_query_engine(similarity_top_k=5)
response = query_engine.query('退款政策是什么?')
print(response.response)访问源文档
for node in response.source_nodes:
print(f'得分: {node.score:.3f} | {node.text[:100]}')
使用 Qdrant 持久化存储
python
from llama_index.vector_stores.qdrant import QdrantVectorStore
from llama_index.core import StorageContext
from qdrant_client import QdrantClientclient = QdrantClient(url='http://localhost:6333')
vector_store = QdrantVectorStore(client=client, collection_name='docs')
storage_context = StorageContext.from_defaults(vector_store=vector_store)
构建并持久化
index = VectorStoreIndex.from_documents(
documents,
storage_context=storage_context
)加载已有索引(无需重新嵌入)
index = VectorStoreIndex.from_vector_store(vector_store)
query_engine = index.as_query_engine()
高级查询模式
python
聊天引擎(保持对话)
chat_engine = index.as_chat_engine(chat_mode='condense_plus_context')response = chat_engine.chat('退款政策是什么?')
print(response.response)
response = chat_engine.chat('处理需要多长时间?') # 记住上下文
print(response.response)
子问题引擎(分解复杂查询)
from llama_index.core.query_engine import SubQuestionQueryEngine
from llama_index.core.tools import QueryEngineTool, ToolMetadatatools = [
QueryEngineTool(
query_engine=query_engine,
metadata=ToolMetadata(
name='docs',
description='公司文档和政策'
)
)
]
sub_question_engine = SubQuestionQueryEngine.from_defaults(query_engine_tools=tools)
response = sub_question_engine.query(
'比较我们的退款政策和退货政策,告诉我哪个对客户更友好'
)
print(response.response)
文档摄取管道
python
from llama_index.core.ingestion import IngestionPipeline
from llama_index.core.node_parser import SentenceSplitter, SemanticSplitterNodeParser
from llama_index.core.extractors import TitleExtractor, SummaryExtractor构建带有转换的摄取管道
pipeline = IngestionPipeline(
transformations=[
# 分割为语义块
SemanticSplitterNodeParser(buffer_size=1, embed_model=Settings.embed_model),
# 提取元数据
TitleExtractor(nodes=5),
SummaryExtractor(summaries=['prev', 'self']),
# 嵌入并存储
Settings.embed_model
],
vector_store=vector_store # 自动存储嵌入
)nodes = pipeline.run(documents=documents)
print(f'创建了 {len(nodes)} 个节点并带有嵌入')
元数据过滤
python
from llama_index.core.vector_stores import MetadataFilter, MetadataFilters按文档元数据过滤
filters = MetadataFilters(filters=[
MetadataFilter(key='department', value='legal'),
MetadataFilter(key='year', value='2026')
])query_engine = index.as_query_engine(
similarity_top_k=5,
filters=filters
)
response = query_engine.query('我们的合规要求是什么?')
流式响应
python
streaming_engine = index.as_query_engine(streaming=True)
streaming_response = streaming_engine.query('解释我们的数据保留政策')
streaming_response.print_response_stream() # 流式输出到标准输出或者手动迭代
for token in streaming_response.response_gen:
print(token, end='', flush=True)
结论
LlamaIndex 是 2026 年生产级 RAG 最全面的框架。其摄取管道、多种查询模式和元数据过滤使其成为企业文档问答应用的理想选择。
相关工具
相关教程
LangChain与LlamaIndex构建检索增强生成应用的诚实技术对比,含基准测试、用例及迁移指南
为生产级LLM应用选择合适的RAG框架
两大领先LLM框架深度对比
使用现代 Python AI 栈构建生产级 AI 应用
从零构建结合向量与关键词搜索、实现最大召回率的RAG系统
从零构建用于多跳推理的知识图谱遍历RAG系统