最适合RAG开发的框架 - 80行代码搭建生产级系统
LlamaIndex 是专门为RAG设计的数据索引框架,API简洁直观,代码量比LangChain少30%, 内置10+向量数据库和20+Embedding模型。
它的设计哲学是"让RAG开发变得简单",自动处理文档分块、向量化、索引构建等复杂流程。
为RAG而生,API更简洁,学习曲线平缓
10+向量库,20+模型,Rerank一行集成
多种索引类型,Query优化,Chat模式
# ============ 步骤1:安装依赖(3分钟) ============
pip install llama-index llama-index-llms-openai llama-index-embeddings-openai
pip install chromadb # 向量数据库
# ============ 步骤2:导入并配置(2分钟) ============
import os
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader, Settings
from llama_index.core.node_parser import SentenceSplitter
from llama_index.embeddings.openai import OpenAIEmbedding
from llama_index.llms.openai import OpenAI
from llama_index.core.postprocessor import SentenceTransformerRerank
from llama_index.vector_stores.chroma import ChromaVectorStore
import chromadb
# 配置API密钥
os.environ["OPENAI_API_KEY"] = "sk-your-api-key-here"
# 配置全局设置
Settings.llm = OpenAI(model="gpt-4o-mini", temperature=0.3)
Settings.embed_model = OpenAIEmbedding(model="text-embedding-3-small")
Settings.node_parser = SentenceSplitter(chunk_size=512, chunk_overlap=50)
print("✅ 配置完成")
# ============ 步骤3:加载文档(5分钟) ============
# 方式1:从目录加载
documents = SimpleDirectoryReader("./docs").load_data()
# 方式2:从文本创建
from llama_index.core import Document
documents = [
Document(text="RAG是检索增强生成系统,结合信息检索和LLM。"),
Document(text="向量数据库用于存储文档向量,实现快速检索。"),
Document(text="Embedding模型将文本转为向量表示。")
]
print(f"📄 加载了 {len(documents)} 个文档")
# ============ 步骤4:配置向量数据库(3分钟) ============
chroma_client = chromadb.PersistentClient(path="./chroma_db")
chroma_collection = chroma_client.get_or_create_collection("my_rag")
vector_store = ChromaVectorStore(chroma_collection=chroma_collection)
print("✅ 向量数据库初始化完成")
# ============ 步骤5:构建索引(10分钟) ============
index = VectorStoreIndex.from_documents(
documents,
vector_store=vector_store,
show_progress=True
)
print("✅ 索引构建完成")
# ============ 步骤6:添加Rerank(可选但推荐,3分钟) ============
reranker = SentenceTransformerRerank(
model="BAAI/bge-reranker-base",
top_n=3
)
print("✅ Rerank模型加载完成")
# ============ 步骤7:创建查询引擎(2分钟) ============
query_engine = index.as_query_engine(
similarity_top_k=10, # 先检索10个候选
node_postprocessors=[reranker], # Rerank精排到3个
response_mode="compact"
)
print("✅ 查询引擎创建完成")
# ============ 步骤8:查询函数(2分钟) ============
def query_rag(question):
"""查询RAG系统"""
response = query_engine.query(question)
print(f"\n❓ 问题:{question}")
print(f"💡 回答:{response}")
print(f"\n📚 来源文档:")
for i, node in enumerate(response.source_nodes, 1):
print(f" {i}. {node.text[:100]}... (分数: {node.score:.3f})")
return response
# ============ 步骤9:使用示例 ============
if __name__ == "__main__":
# 单次查询
query_rag("什么是RAG系统?")
# 持续对话模式
chat_engine = index.as_chat_engine()
response = chat_engine.chat("RAG有什么优势?")
print(f"\n对话模式:{response}")
print("\n🎉 LlamaIndex RAG系统开发完成!")
掌握了LlamaIndex基础,接下来可以学习LangChain的高级功能或深入Agent开发