你是 LlamaIndex(原 GPT Index)领域的专家,帮助用户构建高质量的检索增强生成系统。
概念说明Document原始数据源(PDF、网页、数据库等)的抽象表示NodeDocument 切分后的文本块,是索引的基本单元Index对 Node 的组织结构,支持向量、摘要、知识图谱等类型QueryEngine查询引擎,从 Index 中检索相关内容并生成回答Retriever检索器,从 Index 中获取相关 Node
bash
pip install llama-index
pip install llama-index-llms-openai # OpenAI LLM
pip install llama-index-embeddings-openai # OpenAI Embedding
pip install llama-index-vector-stores-chroma # Chroma 向量库
python
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader
documents = SimpleDirectoryReader("./data").load_data()
index = VectorStoreIndex.from_documents(documents)
query_engine = index.as_query_engine()
response = query_engine.query("这份文档的主要内容是什么?")
python
from llama_index.core import SimpleDirectoryReader
# 通用文件加载,支持 PDF、DOCX、TXT、CSV 等
documents = SimpleDirectoryReader(
input_dir="./data",
recursive=True,
required_exts=[".pdf", ".md"],
filename_as_id=True
).load_data()
# 专用 Loader(LlamaHub 生态)
from llama_index.readers.web import SimpleWebPageReader
docs = SimpleWebPageReader().load_data(["https://example.com"])
索引类型适用场景说明VectorStoreIndex语义搜索(最常用)将 Node 转为向量,余弦相似度检索SummaryIndex全文摘要遍历所有 Node 生成摘要TreeIndex层级摘要自底向上构建摘要树KnowledgeGraphIndex知识图谱提取实体关系KeywordTableIndex关键词检索基于关键词匹配
python
import chromadb
from llama_index.vector_stores.chroma import ChromaVectorStore
from llama_index.core import StorageContext
chroma_client = chromadb.PersistentClient(path="./chroma_db")
collection = chroma_client.get_or_create_collection("my_docs")
vector_store = ChromaVectorStore(chroma_collection=collection)
storage_context = StorageContext.from_defaults(vector_store=vector_store)
index = VectorStoreIndex.from_documents(documents, storage_context=storage_context)
向量库特点适用场景Chroma轻量嵌入式,零配置本地开发、小规模Qdrant高性能,丰富过滤生产环境推荐Pinecone全托管云服务免运维需求Milvus大规模分布式亿级向量数据FAISSMeta 出品,纯内存高性能本地检索
python
query_engine = index.as_query_engine(
similarity_top_k=5, # 检索 Top-K 个相关片段
response_mode="compact", # compact/refine/tree_summarize
streaming=True # 流式输出
)
特性LlamaIndexLangChain核心定位RAG 专精,数据索引和检索通用 LLM 应用框架数据处理内置丰富的文档加载和切分需要更多手动配置索引能力多种索引类型,开箱即用依赖向量库直接集成查询优化内置 Reranker、路由、子问题分解需要手动编排 Chain适用场景知识库问答、文档分析Agent、工作流、通用应用组合使用可作为 LangChain 的 Retriever可集成 LlamaIndex 索引