LlamaIndex 是一个用于连接 LLM 与自有数据的数据框架,主要面向 RAG(检索增强生成)应用。
【用途】 适合以下场景:构建 RAG 应用;对私有数据进行文档问答;从多个来源摄取数据(300+ 连接器);为 LLM 创建知识库;用企业数据构建聊天机器人;从文档中提取结构化数据。
【主要能力】
- 数据连接器:可从目录文件、网页、GitHub 仓库、数据库、API 端点等来源加载文档,也可手动创建 Document 并附带元数据。
- 索引:支持向量索引(语义搜索,最常用)、列表索引(顺序扫描)、树索引(分层摘要),索引可持久化保存与重新加载。
- 查询引擎:支持基础查询、流式响应,以及 similarity_top_k、response_mode(compact、tree_summarize、simple_summarize 等)等配置。
- 检索器:支持向量检索、按元数据过滤,以及自定义检索器。
- 智能体与工具、高级 RAG 模式:资料中指向 references/agents-with-tools.md 与 references/advanced-rag-patterns.md 获取细节。
- 向量存储集成:支持 Chroma(本地)、Pinecone(云端)、FAISS(快速)等。
- 定制化:可自定义 LLM(如 Anthropic)、嵌入模型(如 HuggingFace)、提示模板。
- 多模态 RAG:可加载图片与文档,配合多模态 LLM 查询。
- 评估:提供 RelevancyEvaluator、FaithfulnessEvaluator 评估相关性与忠实度。
【使用方式】 安装:pip install llama-index(推荐起始包),或安装最小核心加特定集成:pip install llama-index-core、pip install llama-index-llms-openai、pip install llama-index-embeddings-openai。 5 行 RAG 示例: 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("What did the author do growing up?") print(response)
【适用场景与最佳实践】 多数情况使用向量索引;将索引保存到磁盘避免重复索引;合理分块(512-1024 tokens 较优);添加元数据以支持过滤与追踪;使用流式响应改善体验;开发时开启 verbose 观察检索过程;评估响应相关性与忠实度;对话场景使用聊天引擎(内置记忆);持久化存储;监控成本。
【性能参考】 索引 100 个文档约 10-30 秒(一次性,可持久化);向量查询约 0.5-2 秒;流式查询首 token 约 0.5 秒;带工具的智能体约 3-8 秒。
【与 LangChain 对比】 LlamaIndex 更适合 RAG 与文档问答,数据连接器 300+,RAG 为核心功能,RAG 学习曲线更平缓;LangChain 更适合智能体与通用 LLM 应用,连接器 100+,灵活性更高。
【限制与注意事项】 资料未提供收费、价格与平台支持等具体信息。版本相关细节可能过时,应以所安装版本的官方文档为准。不要向外部 API 发送隐私或敏感数据(除非用户同意);涉及费用、共享 GPU/云配额、个人或患者数据以及不可撤销的操作前应先询问。
【资源】 GitHub:https://github.com/run-llama/llama_index 文档:https://developers.llamaindex.ai/python/framework/ LlamaHub:https://llamahub.ai LlamaCloud:https://cloud.llamaindex.ai Discord:https://discord.gg/dGcwcsnxhU 版本:0.14.7+;许可证:MIT。