Skip to content
LlamaIndex 文档版本 跟随上游 源快照 31e71496 更新于 2026-10-15

v0.10.0 引入了新的高层 Settings 对象,用来取代旧的 ServiceContext 配置。

新的 Settings 对象是一份全局设置,其参数采用惰性实例化。像 LLM 或嵌入模型这样的属性,只有在底层模块真正需要时才会被加载。

而此前的 service context,许多模块常常并不使用它,同时它还会强制在运行时把每个组件都载入内存(哪怕根本用不到)。

配置全局 settings 意味着你在改动 LlamaIndex 中每一个模块的默认值。也就是说,如果你不用 OpenAI,一个示例配置可以这样写:

from llama_index.llms.ollama import Ollama
from llama_index.embeddings.huggingface import HuggingFaceEmbedding
from llama_index.core import Settings

Settings.llm = Ollama(model="llama2", request_timeout=120.0)
Settings.embed_model = HuggingFaceEmbedding(
    model_name="BAAI/bge-small-en-v1.5"
)

有了这份设置,你就能确保框架里永远不会用到 OpenAI。

Settings 对象支持旧 ServiceConext 几乎全部相同的属性。完整清单见文档页。

完整迁移

下面是从 ServiceContext 完整迁移到 Settings 的例子:

迁移前

from llama_index.embeddings.openai import OpenAIEmbedding
from llama_index.core.node_parser import SentenceSplitter
from llama_index.llms.openai import OpenAI
from llama_index.core import ServiceContext, set_global_service_context

service_context = ServiceContext.from_defaults(
    llm=OpenAI(model="gpt-3.5-turbo"),
    embed_model=OpenAIEmbedding(model="text-embedding-3-small"),
    node_parser=SentenceSplitter(chunk_size=512, chunk_overlap=20),
    num_output=512,
    context_window=3900,
)
set_global_service_context(service_context)

迁移后

from llama_index.embeddings.openai import OpenAIEmbedding
from llama_index.core.node_parser import SentenceSplitter
from llama_index.llms.openai import OpenAI
from llama_index.core import Settings

Settings.llm = OpenAI(model="gpt-3.5-turbo")
Settings.embed_model = OpenAIEmbedding(model="text-embedding-3-small")
Settings.node_parser = SentenceSplitter(chunk_size=512, chunk_overlap=20)
Settings.num_output = 512
Settings.context_window = 3900

局部配置

上面讲的是全局配置。要按模块配置设置,所有模块接口都应更新为接受其所用对象的 kwargs。

如果你在用 IDE,kwargs 会通过智能提示自动补全;下面也给出几个例子:

# a vector store index only needs an embed model
index = VectorStoreIndex.from_documents(
    documents, embed_model=embed_model, transformations=transformations
)

# ... until you create a query engine
query_engine = index.as_query_engine(llm=llm)
# a document summary index needs both an llm and embed model
# for the constructor
index = DocumentSummaryIndex.from_documents(
    documents, embed_model=embed_model, llm=llm
)

BytesRouter 是社区翻译站点,所有译文仅供参考,一切以官方英文原文为准。