Skip to content

配置设置项#

Settings 是 LlamaIndex 工作流/应用中用于索引和查询阶段的常用资源集合。

您可以通过它进行全局配置。局部配置(如转换器、大语言模型、嵌入模型等)可直接传入使用它们的接口中。

Settings 是一个简单的单例对象,会贯穿整个应用生命周期。当未提供特定组件时,系统将使用 Settings 对象作为全局默认值。

以下是可在 Settings 对象上配置的属性:

大语言模型(LLM)#

LLM 用于响应提示和查询,负责生成自然语言回复。

from llama_index.llms.openai import OpenAI
from llama_index.core import Settings

Settings.llm = OpenAI(model="gpt-3.5-turbo", temperature=0.1)

嵌入模型#

嵌入模型用于将文本转换为数值表示,用于计算相似度和 top-k 检索。

from llama_index.embeddings.openai import OpenAIEmbedding
from llama_index.core import Settings

Settings.embed_model = OpenAIEmbedding(
    model="text-embedding-3-small", embed_batch_size=100
)

节点解析器/文本分割器#

节点解析器/文本分割器用于将文档解析为更小的块(称为节点)。

from llama_index.core.node_parser import SentenceSplitter
from llama_index.core import Settings

Settings.text_splitter = SentenceSplitter(chunk_size=1024)

若只需修改分块大小或重叠量而不更换默认分割器,也可直接设置:

Settings.chunk_size = 512
Settings.chunk_overlap = 20

转换器#

转换器在文档摄取阶段应用。默认使用 node_parser/text_splitter,但可被覆盖和自定义。

from llama_index.core.node_parser import SentenceSplitter
from llama_index.core import Settings

Settings.transformations = [SentenceSplitter(chunk_size=1024)]

分词器#

分词器用于统计 token 数量。其设置应与所用 LLM 相匹配。

from llama_index.core import Settings

# openai
import tiktoken

Settings.tokenizer = tiktoken.encoding_for_model("gpt-3.5-turbo").encode

# 开源模型
from transformers import AutoTokenizer

Settings.tokenzier = AutoTokenizer.from_pretrained(
    "mistralai/Mixtral-8x7B-Instruct-v0.1"
)

回调函数#

可设置全局回调管理器,用于观察和处理 llama-index 代码生成的事件:

from llama_index.core.callbacks import TokenCountingHandler, CallbackManager
from llama_index.core import Settings

token_counter = TokenCountingHandler()
Settings.callback_manager = CallbackManager([token_counter])

提示辅助参数#

以下特定参数/值用于查询阶段,确保输入提示保留足够的 token 生成空间。

通常这些参数会根据 LLM 属性自动配置,但在特殊情况下可手动覆盖:

from llama_index.core import Settings

# LLM 的最大输入尺寸
Settings.context_window = 4096

# 为文本生成保留的 token 数量
Settings.num_output = 256

Tip

了解如何配置特定模块: - 大语言模型 - 嵌入模型 - 节点解析器/文本分割器 - 回调函数

设置局部配置#

使用特定设置的接口也支持局部覆盖:

index = VectorStoreIndex.from_documents(
    documents, embed_model=embed_model, transformations=transformations
)

query_engine = index.as_query_engine(llm=llm)