EN

LlamaIndex 教程 2026:构建生产级 RAG 应用

通过 LlamaIndex 摄取管道和查询引擎将 LLM 连接到您的文档

返回教程列表🌐 Read in English
高级45 分钟

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 QdrantClient

client = 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, ToolMetadata

tools = [ 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 最全面的框架。其摄取管道、多种查询模式和元数据过滤使其成为企业文档问答应用的理想选择。

相关工具

llamaindexopenaiqdrant