教程

LlamaIndex构建RAG应用指南

| 2025-11-27 18:44 | 2128 浏览
# LlamaIndex构建RAG应用 ## 什么是LlamaIndex? LlamaIndex是一个专门为LLM应用设计的数据框架,专注于检索和生成(RAG)场景。它提供了从数据加载到查询响应的完整解决方案。 ## 安装 ```bash pip install llama-index ``` ## 快速开始 ```python from llama_index.core import VectorStoreIndex, SimpleDirectoryReader # 1. 加载文档 documents = SimpleDirectoryReader("data").load_data() # 2. 创建索引 index = VectorStoreIndex.from_documents(documents) # 3. 查询 query_engine = index.as_query_engine() response = query_engine.query("什么是LlamaIndex?") print(response) ``` ## 核心概念 ### 1. Document(文档) 原始数据的容器,包含文本和元数据。 ### 2. Node(节点) 文档分割后的小块,是索引的基本单元。 ### 3. Index(索引) 组织数据的结构,支持向量索引、关键词索引等。 ### 4. Retriever(检索器) 从索引中获取相关节点。 ### 5. Query Engine(查询引擎) 结合检索和LLM生成最终答案。 ## 数据加载器 ```python from llama_index.readers.file import PDFReader from llama_index.readers.web import SimpleWebPageReader # PDF加载 pdf_reader = PDFReader() docs = pdf_reader.load_data(file="document.pdf") # 网页加载 web_reader = SimpleWebPageReader() docs = web_reader.load_data(["https://example.com"]) # 数据库加载 from llama_index.readers.database import DatabaseReader db_reader = DatabaseReader(uri="sqlite:///data.db") docs = db_reader.load_data(query="SELECT * FROM documents") ``` ## 索引类型 ### 向量索引(最常用) ```python from llama_index.core import VectorStoreIndex index = VectorStoreIndex.from_documents(documents) ``` ### 关键词索引 ```python from llama_index.core import KeywordTableIndex index = KeywordTableIndex.from_documents(documents) ``` ### 树索引 ```python from llama_index.core import TreeIndex index = TreeIndex.from_documents(documents) ``` ## 自定义LLM ```python from llama_index.llms.openai import OpenAI from llama_index.core import Settings # 全局设置 Settings.llm = OpenAI(model="gpt-4", temperature=0) # 局部设置 query_engine = index.as_query_engine( llm=OpenAI(model="gpt-3.5-turbo") ) ``` ## 使用本地模型 ```python from llama_index.llms.ollama import Ollama from llama_index.embeddings.ollama import OllamaEmbedding Settings.llm = Ollama(model="llama3") Settings.embed_model = OllamaEmbedding(model_name="nomic-embed-text") ``` ## 高级用法 ### 检索后重排序 ```python from llama_index.core.postprocessor import SentenceTransformerRerank reranker = SentenceTransformerRerank( model="cross-encoder/ms-marco-MiniLM-L-6-v2", top_n=3 ) query_engine = index.as_query_engine( node_postprocessors=[reranker] ) ``` ### 多文档Agent ```python from llama_index.core.tools import QueryEngineTool from llama_index.core.agent import ReActAgent # 创建多个索引工具 tools = [ QueryEngineTool.from_defaults(query_engine=engine1, name="工具1"), QueryEngineTool.from_defaults(query_engine=engine2, name="工具2") ] agent = ReActAgent.from_tools(tools) response = agent.chat("问题") ``` ## 持久化存储 ```python # 保存 index.storage_context.persist(persist_dir="./storage") # 加载 from llama_index.core import StorageContext, load_index_from_storage storage_context = StorageContext.from_defaults(persist_dir="./storage") index = load_index_from_storage(storage_context) ``` ## 总结 LlamaIndex是构建RAG应用的专业框架,提供了丰富的数据连接器和查询工具。
LlamaIndexRAG检索增强生成知识库Python
156 点赞 27 评论

评论 (0)

登录后发表评论。

暂无评论。成为第一个评论的人吧!