Skip to content

配置设置#

Settings 是 LlamaIndex 管道/应用程序中在索引和查询阶段常用的资源集合。

您可以使用它来设置全局配置。本地配置(转换、LLM、嵌入模型)可以直接传递到使用它们的接口中。

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

转换#

转换应用于摄取期间的 Document。默认情况下,使用 node_parser/text_splitter,但可以进行覆盖并进一步自定义。

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

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

分词器#

分词器用于计算标记。应设置为与您使用的 LLM 匹配的内容。

from llama_index.core import Settings

# openai
import tiktoken

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

# open-source
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])

提示助手参数#

在查询期间使用了一些特定的参数/值,以确保输入的提示到 LLM 具有足够的空间生成一定数量的标记。

通常情况下,这些是使用 LLM 的属性自动配置的,但在特殊情况下可以进行覆盖。

from llama_index.core import Settings

# 输入到 LLM 的最大输入大小
Settings.context_window = 4096

# 用于文本生成的标记数量
Settings.num_output = 256

提示

学习如何配置特定模块:- LLM - 嵌入模型 - 节点解析器/文本分割器 - 回调

设置本地配置#

使用特定部分设置的接口也可以接受本地覆盖。

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

query_engine = index.as_query_engine(llm=llm)