LlamaIndex如何使用 示例说明
时间: 2025-07-11 12:17:19 浏览: 12
<think>我们正在处理用户的问题:"请问LlamaIndex 使用方法及示例教程"。根据之前的对话历史,用户已经询问过LlamaIndex支持的数据库类型,现在转向询问使用方法和示例教程。
根据提供的引用,我们可以总结出以下关键点:
引用[1]:使用LLM进行高效查询,包括环境配置、创建查询引擎,结合向量存储、总结索引和工具检索器。
引用[2]:构建聊天引擎,包括加载数据、创建索引、配置聊天引擎,以及通过中专API调用大模型。
引用[3]:构建私有知识库的保姆级教程,包括数据注入、结构化(索引构建)、访问(检索)的完整RAG实现。
引用[4]:从基础智能体到RAG文档检索的分步指南,包括前期准备(配置OpenAI API环境)和代码实现。
引用[5]:结合本地模型(如通过Ollama)的入门教程,包括安装依赖项。
因此,我们可以将回答组织为以下几个部分:
1. 环境配置(安装和设置)
2. 加载数据与创建索引
3. 构建查询引擎(基本查询)
4. 构建聊天引擎(对话式交互)
5. 构建RAG应用(文档检索)
6. 结合本地模型(如Ollama)
每个部分提供简要说明和代码示例。
注意:由于用户之前的问题是关于数据库的,我们可以在示例中适当结合之前提到的数据库(如使用PostgreSQL作为向量存储),但重点在于LlamaIndex的基本使用流程。
另外,根据系统指令,我们需要在适当的地方添加引用标识,并且代码块要正确。
最后,生成相关问题。
开始构建回答:</think>### LlamaIndex 使用方法及示例教程
LlamaIndex 是一个强大的 LLM 数据框架,专为私有知识库构建、RAG 应用和智能代理开发设计。以下是核心使用流程及代码示例,涵盖数据加载、索引构建、查询引擎和聊天引擎实现[^3][^4]:
---
#### 一、环境配置与安装
```bash
# 基础安装
pip install llama-index python-dotenv
# 扩展支持(向量库/本地模型)
pip install llama-index-vector-stores-chroma # Chroma向量库
pip install llama-index-llms-ollama # Ollama本地模型支持[^5]
```
#### 二、核心使用流程
##### 1. 数据加载与索引构建
```python
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader
from llama_index.vector_stores.chroma import ChromaVectorStore
import chromadb
# 加载本地文档(支持PDF/TXT/HTML等)
documents = SimpleDirectoryReader("data").load_data()
# 创建Chroma向量库
chroma_client = chromadb.PersistentClient(path="./chroma_db")
vector_store = ChromaVectorStore(chroma_collection=chroma_client.create_collection("knowledge"))
index = VectorStoreIndex.from_documents(documents, vector_store=vector_store) # 自动生成嵌入向量[^3]
```
##### 2. 基础查询引擎
```python
query_engine = index.as_query_engine()
response = query_engine.query("LlamaIndex如何优化检索效率?")
print(response) # 输出:LlamaIndex通过向量索引和分层筛选... [^1]
```
##### 3. 聊天引擎实现(对话式交互)
```python
from llama_index.core.memory import ChatMemoryBuffer
memory = ChatMemoryBuffer.from_defaults(token_limit=1500)
chat_engine = index.as_chat_engine(
chat_mode="context", # 上下文感知模式
memory=memory,
system_prompt="你是一个技术文档助手,用简洁语言回答"
)
# 多轮对话
print(chat_engine.chat("RAG是什么?")) # 解释RAG概念
print(chat_engine.chat("用Python示例说明")) # 自动关联上文生成代码[^2]
```
##### 4. 自定义检索器(混合搜索)
```python
from llama_index.core.retrievers import VectorIndexRetriever
from llama_index.core.query_engine import RetrieverQueryEngine
# 同时使用向量+关键词检索
vector_retriever = VectorIndexRetriever(index=index, similarity_top_k=3)
keyword_retriever = index.as_retriever(retriever_mode="keyword")
hybrid_retriever = HybridRetriever([vector_retriever, keyword_retriever])
query_engine = RetrieverQueryEngine.from_args(hybrid_retriever)
```
---
#### 三、进阶应用示例
##### 1. RAG 文档检索系统
```python
# 结合工具调用的智能体
from llama_index.core.tools import QueryEngineTool
from llama_index.agent.openai import OpenAIAgent
tool = QueryEngineTool.from_defaults(query_engine=query_engine)
agent = OpenAIAgent.from_tools([tool], verbose=True)
# 执行复杂任务
agent.chat("总结data/目录下所有PDF中关于向量数据库的内容,并对比Chroma和Milvus")
```
##### 2. 本地模型集成(Ollama)
```python
from llama_index.llms.ollama import Ollama
from llama_index.embeddings.huggingface import HuggingFaceEmbedding
# 使用本地LLM和嵌入模型
llm = Ollama(model="llama3", request_timeout=60.0)
embed_model = HuggingFaceEmbedding(model_name="BAAI/bge-small-zh")
index = VectorStoreIndex.from_documents(documents, embed_model=embed_model, llm=llm) # [^5]
```
---
### 四、最佳实践
1. **索引优化**
- 大型数据集使用 `SentenceSplitter` 分块(建议 512 tokens)
- 添加元数据过滤:`index.storage_context.persist(persist_dir="./storage")`
2. **性能调优**
```python
# 加速检索
index.as_query_engine(
similarity_top_k=5, # 减少召回数量
response_mode="tree_summarize" # 分层总结结果
)
```
3. **错误处理**
```python
try:
response = query_engine.query("非法指令@@")
except Exception as e:
print(f"查询失败: {str(e)}") # 捕获LLM格式错误
```
> ⚙️ **部署提示**:生产环境建议使用 `FastAPI` 封装引擎,搭配 `PGVector` 实现高并发访问[^3][^4]。
---
阅读全文
相关推荐

















