LlamaIndex开发注意事项:Settings 全局默认 / 快速开发模式、Low‑level 自定义 / 组合式 模式 作者:马育民 • 2026-05-21 08:53 • 阅读:10000 # Settings 全局默认 / 快速开发模式 **一句话:统一全局配置,少传参数、少写代码、快速跑通 Demo。** ### 1. 核心入口 ```python from llama_index.core import Settings ``` `Settings` 是**全局单例**,一旦设置,后面所有索引/查询默认都用它。 ### 2. 能全局设置什么 ```python # 模型类 Settings.llm = 你的LLM实例 Settings.embed_model = 你的Embedding实例 # 分块参数 Settings.chunk_size = 512 Settings.chunk_overlap = 20 # 节点解析器、回调、日志等 Settings.transformations = [SentenceSplitter(chunk_size=512)] ``` ### 3. 用法(极简,几乎不用传参数) ```python documents = SimpleDirectoryReader("./docs").load_data() index = VectorStoreIndex.from_documents(documents) # 自动用 Settings 的 LLM/Embedding query_engine = index.as_query_engine() ``` ### 4. 特点 - ✅ **写得少、跑得快、原型最快** - ✅ 所有组件共享一套默认配置 - ❌ **耦合重、升级易崩、不好混用外部原生模型** - ❌ 不适合长期维护的桌面应用(API一变全挂) --- # Low‑level 自定义 / 组合式 模式 **一句话:不用全局 Settings,每个组件手动实例化、手动传入,完全自己控制。** ### 1. 核心思想:不依赖 Settings,所有组件「显式组装」 ```python # 1. 自己建 LLM、Embedding(可以是原生库,不一定用 LlamaIndex 的) from langchain.llms import OpenAI from sentence_transformers import SentenceTransformer llm = OpenAI(...) embed_model = SentenceTransformer("all-MiniLM-L6-v2") # 2. 自己建节点解析器、向量库、存储上下文 from llama_index.core.node_parser import SentenceSplitter from llama_index.vector_stores.chroma import ChromaVectorStore import chromadb node_parser = SentenceSplitter(chunk_size=512) vector_store = ChromaVectorStore(chroma_collection=...) storage_context = StorageContext.from_defaults(vector_store=vector_store) # 3. 手动传参,不依赖 Settings index = VectorStoreIndex( nodes=nodes, llm=llm, embed_model=embed_model, storage_context=storage_context, transformations=[node_parser] ) # 4. 检索器、查询引擎也手动组装 retriever = VectorIndexRetriever(index=index, similarity_top_k=3) query_engine = RetrieverQueryEngine(retriever=retriever) ``` ### 2. 特点 - ✅ **完全解耦、可控、兼容最强** - ✅ 可以混用:**LlamaIndex 只做文档加载/索引,LLM/Embedding/向量库用原生** - ✅ **升级不怕崩**:LlamaIndex 改 API,你只改「组装那一小段」 - ✅ **桌面应用长期维护首选** - ❌ 代码稍多,需要自己管理组件依赖 --- # 选择建议 1. **有 Settings 模式**:全局配置、快速开发、适合 Demo; 2. **有自己组装模式**:显式传参、完全可控、适合生产/桌面应用; 3. **想最大化兼容**:**坚决不用 Settings,全部自己组装**; 4. **向量模型/LLM/向量库**:**优先用原生库,只把实例传给 LlamaIndex**。 原文出处:http://malaoshi.top/show_1GW3LlDL8Tg2.html