Sider.ai
  • 聊天
  • Wisebase
  • 工具
  • 浏览器插件
  • 客户端
  • 价格
立即下载
登录

通过Sider更快学习、更深入思考、更聪明成长。

产品
应用
  • 扩展程序
  • iOS
  • Android
  • Mac OS
  • Windows
Wisebase
  • Wisebase
  • Deep Research
  • Scholar Research
  • Math Solver
  • Rec NoteNew
  • Audio To Text
  • Gamified Learning
  • Interactive Reading
  • ChatPDF
工具
  • 网站生成器New
  • AI PPTNew
  • 写作大师
  • Nano Banana Pro
  • Nano Banana Infographic
  • 图片生成
  • 意大利脑洞
  • 背景移除
  • 背景替换
  • 区域抹除
  • 文字移除
  • 局部重绘
  • 画质提升
  • 创作者
  • 文本翻译
  • 图片翻译
  • PDF翻译
Sider
  • 联系我们
  • 帮助中心
  • 下载
  • 价格
  • 教育优惠
  • 新功能
  • 博客
  • 社区
  • 合作伙伴
  • 联盟
  • 邀请
©2026 版权所有
使用条款
隐私政策
  • 首页
  • 博客
  • AI 工具
  • LlamaIndex 使用指南:从零到生产的实战教程

LlamaIndex 使用指南:从零到生产的实战教程

更新于 2025年9月23日

10 分钟


如何使用 LlamaIndex:从零到生产的实用指南

如果您曾经尝试构建检索增强生成 (RAG) 应用程序,并且觉得“为什么连接嵌入、向量存储和提示词如此繁琐?”,那么您并不孤单。LlamaIndex 的存在就是为了使该流程快速、合理且可用于生产。在本实用、以解决方案为导向的指南中,我们将逐步介绍如何端到端地使用 LlamaIndex——数据摄取、索引、查询、评估和部署——以便您可以交付可靠的产品,而不会迷失在胶水代码中。
我们将使用问题引导的结构,逐步进行,提供可运行的代码片段和实际技巧。无论您是为内部文档制作聊天机器人原型,还是为客户部署知识助手,学习如何有效地使用 LlamaIndex 都将为您节省大量时间。
:LlamaIndex 是一个框架,可帮助您通过索引、检索和编排工具将数据连接到大型语言模型——非常适合 RAG、代理和结构化输出。

什么是 LlamaIndex 以及为什么要使用它?

  • LlamaIndex 是 LLM 应用程序的数据框架。它为以下方面提供构建块:
  • 摄取:加载文件、网页、数据库和 API。
  • 分块和索引:将原始内容转换为可查询的结构(向量、关键字、图索引)。
  • 检索:使用灵活的策略(BM25、混合、重新排序)检索上下文。
  • 查询引擎和代理:将检索、工具和提示词组合成连贯的 QA 体验。
  • 评估和监控:判断检索质量和答案相关性。
  • 何时使用 LlamaIndex:
  • 您想要一个强大的 RAG 堆栈,而无需重新发明分块、嵌入和检索。
  • 您需要组合多个数据源(PDF + Notion + SQL)。
  • 您想尝试混合检索、重新排序或结构化输出。
  • 学习如何使用 LlamaIndex 时的核心心智模型:
  • 数据 → 节点 → 索引 → 检索器 → 查询引擎 → 应用程序

快速入门:最小 RAG 循环

这是获得工作原型最快的方法。我们将加载文档,构建向量索引,并提出问题。
# 1) 安装
# pip install llama-index llama-index-embeddings-openai llama-index-llms-openai
import os
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader
from llama_index.embeddings.openai import OpenAIEmbedding
from llama_index.llms.openai import OpenAI
# 2) 配置您的模型 + 嵌入
os.environ["OPENAI_API_KEY"] = "YOUR_KEY" # or use any supported LLM/embedding provider
llm = OpenAI(model="gpt-4o-mini")
embed_model = OpenAIEmbedding(model="text-embedding-3-small")
# 3) 加载文档 (例如,./data/*.pdf, .md, .txt)
docs = SimpleDirectoryReader("./data").load_data
# 4) 构建索引
index = VectorStoreIndex.from_documents(docs, embed_model=embed_model)
# 5) 创建查询引擎并提出问题
query_engine = index.as_query_engine(llm=llm)
response = query_engine.query("What are the key security practices mentioned in the docs?")
print(response)
这就是本质。从这里开始,真正的应用程序会添加更好的分块、重新排序、结构化提示和可观察性。

摄取:以正确的方式自带数据 (BYOD)

当您决定如何将 LlamaIndex 用于真实数据时,请选择与您的来源匹配并保留结构的加载器。
  • 常用加载器:
  • 文件:SimpleDirectoryReader,PDF/HTML/Markdown 读取器
  • Web:BeautifulSoupWebReader,站点地图读取器
  • SaaS:Notion、Confluence、Slack、Google Drive(通过连接器)
  • 数据库:SQL 和向量数据库(Pinecone、Weaviate、Chroma、Elasticsearch)
  • 提示:规范化元数据(标题、作者、URL、created_at)。良好的元数据可以增强后续的重新排序和过滤。
from llama_index.core import SimpleDirectoryReader
from llama_index.readers.web import SimpleWebPageReader
file_docs = SimpleDirectoryReader("./policies").load_data
web_docs = SimpleWebPageReader(html_to_text=True).load_data
all_docs = file_docs + web_docs

分块和节点解析器:垃圾进,垃圾出

正确进行分块是学习如何有效使用 LlamaIndex 的最重要步骤之一。
  • 为什么分块很重要:太大 → token 膨胀和不相关的检索。太小 → 上下文碎片化。
  • 默认值:对于许多情况是合理的,但请根据您的内容类型进行调整。
  • 启发法:
  • 技术文档:512–1024 个 token 块,重叠 10–20%。
  • 常见问题解答:较小的块 (256–512) 以保持问答对完整。
  • 法律/政策:较大的块 (1024–1536) 以保留定义 + 条款。
from llama_index.core.node_parser import SentenceSplitter
from llama_index.core import Document
parser = SentenceSplitter(chunk_size=800, chunk_overlap=100)
nodes = []
for d in all_docs:
nodes.extend(parser.get_nodes_from_documents([Document(text=d.text, metadata=d.metadata)]))

索引策略:向量、关键字或混合?

选择正确的索引至关重要。好消息是:LlamaIndex 允许您将它们组合起来。
  • 向量索引:非常适合语义搜索。最适合“解释 X”或模糊查询。
  • 关键字 (BM25):对于精确术语、ID、错误代码、日志非常强大。
  • 混合:将两者结合起来;使用 LLM 或交叉编码器对排名靠前的候选者进行重新排序。
from llama_index.core import VectorStoreIndex, SummaryIndex
from llama_index.core.retrievers import BM25Retriever
from llama_index.core.query_engine import RetrieverQueryEngine
# Vector index from pre-parsed nodes
v_index = VectorStoreIndex(nodes)
# BM25 keyword retriever
bm25_retriever = BM25Retriever.from_defaults(nodes=nodes, similarity_top_k=6)
# Hybrid: merge candidates, then rerank
from llama_index.core.retrievers import RouterRetriever
from llama_index.retrievers.merge import MergerRetriever
v_retriever = v_index.as_retriever(similarity_top_k=6)
hybrid = MergerRetriever(retrievers=[v_retriever, bm25_retriever], top_k=8)
query_engine = RetrieverQueryEngine.from_args(retriever=hybrid)

重新排序和过滤器:提高精度而不过度付费

重新排序通过根据相关性重新排列检索到的块来提高答案质量。
  • 何时重新排序:如果用户报告了离题的引用或冗长的填充上下文。
  • 方法:
  • 交叉编码器(双编码器嵌入搜索 → 交叉编码器重新排序)
  • 基于 LLM 的重新排序(成本更高,有时在细微的文本上更智能)
  • 元数据过滤器(例如,source == 'handbook',created_at > 2024-01-01)
from llama_index.postprocessor.flag_embedding_reranker import FlagEmbeddingReranker
from llama_index.core.query_engine import RetrieverQueryEngine
reranker = FlagEmbeddingReranker(top_n=5, model="BAAI/bge-reranker-base")
query_engine = v_index.as_query_engine(
similarity_top_k=12,
node_postprocessors=[reranker]
)

提示和查询引擎:从搜索到答案

查询引擎是检索与生成相遇的地方。要掌握如何在生产中使用 LlamaIndex,请仔细设计提示词和响应合成。
  • 答案合成策略:
  • 简单的“stuff”(连接)用于小型上下文
  • 树或 map-reduce 用于较长的上下文
  • 引用模式以显示来源
from llama_index.core.response_synthesizers import get_response_synthesizer
from llama_index.core import ServiceContext
synth = get_response_synthesizer(response_mode="tree_summarize")
query_engine = v_index.as_query_engine(response_synthesizer=synth)
ans = query_engine.query("Summarize the onboarding steps and cite sources.")
print(ans)
  • 自定义提示词:定制语气、结构化输出或护栏。
from llama_index.core.prompts import PromptTemplate
qa_tmpl = PromptTemplate(
"""
You are a terse, evidence-first assistant. Use only the provided context.
If unsure, say you don't know. Return JSON with keys: answer, sources.
Question: {query_str}
Context: {context_str}
"""
)
query_engine = v_index.as_query_engine(text_qa_template=qa_tmpl)

代理和工具:当检索不足时

有时,答案需要操作:运行 SQL、调用 API 或浏览。LlamaIndex 代理将工具和推理与您的检索管道协调起来。
  • 用例:KPI 仪表板(SQL 工具)、支持机器人(工单查找 API)、研究代理(Web + RAG)。
from llama_index.core.agent import ReActAgent
from llama_index.tools.sql import SQLQueryEngineTool
from sqlalchemy import create_engine
engine = create_engine("sqlite:///analytics.db")
sql_tool = SQLQueryEngineTool.from_engine(engine)
agent = ReActAgent.from_tools([sql_tool], llm=llm, verbose=True)
agent.chat("What was monthly churn in Q2 2025? If needed, query the DB.")

评估:不要盲目发布

负责任地学习如何使用 LlamaIndex 意味着在发布之前验证检索和答案。
  • 离线评估:判断标记集上的检索召回率/精度。
  • 在线评估:记录用户提示,衡量满意度、转移率和幻觉。
  • 内置:LlamaIndex 提供了用于忠实度和答案相关性的评估助手。
from llama_index.core.evaluation import FaithfulnessEvaluator, RelevancyEvaluator
faith = FaithfulnessEvaluator(llm=llm)
rel = RelevancyEvaluator(llm=llm)
pred = query_engine.query("List SOC 2 control families in our policy.")
print("faithful?", faith.evaluate_response(pred))
print("relevant?", rel.evaluate_response(pred))
  • 实际标准:对于内部助手,在广泛发布之前,将热门查询的“有用”评级定为 >80%。

持久性和向量存储:使其可扩展

在内存中构建的索引不适用于实际工作负载。持久化到向量数据库并启用增量更新。
  • 流行的后端:Pinecone、Weaviate、Chroma、Elasticsearch/OpenSearch、Qdrant。
  • 提示:每个租户或部门使用命名空间;保持元数据丰富。
# 示例:Chroma
# pip install chromadb llama-index-vector-stores-chroma
from llama_index.vector_stores.chroma import ChromaVectorStore
from llama_index.core import StorageContext
import chromadb
chroma_client = chromadb.PersistentClient(path="./chroma_store")
collection = chroma_client.get_or_create_collection("company_knowledge")
vector_store = ChromaVectorStore(chroma_collection=collection)
storage_context = StorageContext.from_defaults(vector_store=vector_store)
index = VectorStoreIndex.from_documents(all_docs, storage_context=storage_context)

安全和治理:每个人都忘记的部分

  • PII 处理:在摄取期间编辑或哈希敏感字段。
  • 访问控制:使用元数据约束按用户角色进行过滤。
  • 内容新鲜度:安排重新摄取;标记版本。
  • 安全:在提示中添加拒绝策略和仅来源约束。
# 示例:查询时基于元数据的过滤
retriever = index.as_retriever(similarity_top_k=8)
retriever.metadata_filters = {"department": ["legal", "security"], "published": [True]}

从原型到生产:部署模式

  • 服务器模式:公开一个 /query 端点;使索引在内存中保持温暖。
  • 无服务器陷阱:冷启动 + 大型模型会损害延迟;考虑托管推理。
  • 缓存:缓存嵌入和频繁的查询结果;启用部分更新。
  • 可观察性:记录检索到的节点、token 使用情况、答案长度和用户反馈。
# 最小 FastAPI 包装器
# pip install fastapi uvicorn
from fastapi import FastAPI
app = FastAPI
qe = index.as_query_engine(llm=llm)
@app.post("/query")
async def query(payload: dict):
q = payload.get("q", "")
resp = qe.query(q)
return {"answer": str(resp), "sources": [s.node.metadata for s in resp.source_nodes]}

真实世界的蓝图:选择您的路径

  1. 内部政策助手
  • 索引:混合 (BM25 + 向量) 带有重新排序
  • 护栏:仅来源模式;“我不知道”回退
  • KPI:政策问题的解决率
  1. 客户支持副驾驶
  • 索引:产品文档 + 发行说明 + 工单
  • 代理:API 工具,用于检查订单/工单状态
  • KPI:首次联系解决、转移、CSAT
  1. 研究分析师
  • 索引:Web + PDF + 笔记;强大的重复数据删除
  • 重新排序:交叉编码器;合成:map-reduce
  • KPI:获得洞察的时间;引用准确性
  1. BI 的数据 QA
  • 工具:SQL 引擎 + RAG,用于指标定义
  • 治理:行级策略;查询审计
  • KPI:正确性与真实情况

成本和延迟:保持快速(且便宜)

  • 嵌入:尽可能批量处理;使用较小的模型进行召回,有选择地进行重新排序。
  • 上下文大小:以 1–2k 个 token 的最相关块为目标。
  • 缓存:缓存热门查询的前 K 个检索;使用哈希提示记忆 LLM 调用。
  • 并行性:扇出检索 → 扇入重新排序以减少尾部延迟。

学习如何使用 LlamaIndex 时的常见陷阱

  • 过度分块,导致浅薄、嘈杂的检索
  • 没有元数据过滤器,导致不相关的来源混入
  • 依赖于单一索引类型来处理所有内容
  • 跳过评估;在没有质量标准的情况下发布
  • 让索引变得陈旧;没有安排刷新

顺便说一句:加快编辑器中的工作流程

当您迭代提示词、分块器和检索设置时,值得注意的是,像 Sider.ai 这样的 AI 编码和研究侧边栏可以加速循环。您可以随时掌握代码片段、提示词和评估笔记,生成提示词更改的差异,并快速测试变体,而无需离开浏览器。当您调整如何在不同的检索策略中使用 LlamaIndex 时,这尤其方便。

分步检查表:从零到生产

  • 摄取来源并规范化元数据
  • 按内容类型调整块大小
  • 构建向量 + BM25 索引;启用混合检索
  • 添加重新排序和元数据过滤器
  • 自定义提示词;启用引用和拒绝策略
  • 在测试集上评估忠实度和相关性
  • 持久化到向量存储;启用增量更新
  • 添加可观察性、缓存和 RBAC 过滤器
  • 包装在 API 中并设置 SLA;记录故障模式

主要收获

  • 如果您想要一个强大的 RAG 应用程序,学习如何使用 LlamaIndex 将节省数周的胶水工程。
  • 从简单开始,然后分层混合检索、重新排序和结构化提示。
  • 在扩展之前进行评估;持久化索引并监控生产中的质量。
  • 从第一天起就为治理而设计——安全不是附加的。

下一步

  • 在小型文档集上制作快速入门原型。
  • 尝试混合检索和重新排序器。
  • 添加评估和引用;跟踪质量指标。
  • 移动到持久向量存储并部署 API。

常见问题解答

Q1:What is LlamaIndex used for in RAG applications? LlamaIndex helps you connect your data to LLMs with ingestion, indexing, and retrieval components. It streamlines building RAG systems by handling chunking, vector/keyword indexes, and query orchestration.
Q2:How do I choose the right index type in LlamaIndex? Use a vector index for semantic queries, BM25 for exact matches like IDs or codes, and a hybrid approach for best overall recall and precision. Many teams combine both and add reranking for top‑K results.
问题3:如何提高使用LlamaIndex时的准确性? 调整分块大小,包含丰富的元数据,启用混合检索,并添加重排序器。同时,实施针对忠实度和相关性的评估,并使用引用模式来显示来源。
问题4:LlamaIndex可以与我现有的向量数据库一起使用吗? 是的。LlamaIndex与流行的向量存储集成,如Pinecone、Weaviate、Chroma、Qdrant和Elasticsearch。持久化索引以实现可扩展性和增量更新。
问题5:如何将LlamaIndex应用程序部署到生产环境? 将您的查询引擎包装在API中(例如,FastAPI),将数据持久化到向量存储中,添加缓存和可观察性,并持续评估质量。实施元数据过滤器和访问控制以确保安全。

最近文章
如何掌握 ChatPDF:快速洞察密集文档

如何掌握 ChatPDF:快速洞察密集文档

快速、精准文档的最佳X自动翻译替代方案

快速、精准文档的最佳X自动翻译替代方案

三星AI翻译在伊朗无法使用?实用解决方法

三星AI翻译在伊朗无法使用?实用解决方法

波斯语翻译工具:实现更快更准确工作的实用指南

波斯语翻译工具:实现更快更准确工作的实用指南

深度、有引用研究的最佳Grok替代方案

深度、有引用研究的最佳Grok替代方案

你真正会用的AI图像生成器15大功能

你真正会用的AI图像生成器15大功能