配置设置
Settings 是在 LlamaIndex 工作流/应用程序的索引和查询阶段使用的一组常用资源包。
您可以使用它来设置全局配置。局部配置(转换、LLMs、嵌入模型)可以直接传递给使用它们的接口。
Settings 是一个简单的单例对象,它存在于整个应用程序的生命周期中。当未提供特定组件时,将使用 Settings 对象作为全局默认值来提供该组件。
以下属性可在 Settings 对象上进行配置:
大语言模型
Section titled “LLM”LLM用于响应提示和查询,并负责撰写自然语言回复。
from llama_index.llms.openai import OpenAIfrom llama_index.core import Settings
Settings.llm = OpenAI(model="gpt-3.5-turbo", temperature=0.1)嵌入模型用于将文本转换为数值表示,用于计算相似度和 top-k 检索。
from llama_index.embeddings.openai import OpenAIEmbeddingfrom llama_index.core import Settings
Settings.embed_model = OpenAIEmbedding( model="text-embedding-3-small", embed_batch_size=100)节点解析器 / 文本分割器
Section titled “Node Parser / Text Splitter”节点解析器/文本分割器用于将文档解析成更小的块,称为节点。
from llama_index.core.node_parser import SentenceSplitterfrom llama_index.core import Settings
Settings.text_splitter = SentenceSplitter(chunk_size=1024)如果您只想更改块大小或块重叠而不更改默认分割器,这也是可行的:
Settings.chunk_size = 512Settings.chunk_overlap = 20在数据摄取过程中,转换会被应用于 Document。默认情况下会使用 node_parser/text_splitter,但这一设置可以被覆盖并进行进一步自定义。
from llama_index.core.node_parser import SentenceSplitterfrom llama_index.core import Settings
Settings.transformations = [SentenceSplitter(chunk_size=1024)]分词器用于统计词元数量。这应当设置为与你所使用的LLM相匹配的内容。
from llama_index.core import Settings
# openaiimport tiktoken
Settings.tokenizer = tiktoken.encoding_for_model("gpt-3.5-turbo").encode
# open-sourcefrom transformers import AutoTokenizer
Settings.tokenzier = AutoTokenizer.from_pretrained( "mistralai/Mixtral-8x7B-Instruct-v0.1")您可以设置一个全局回调管理器,用于观察和处理整个llama-index代码生成的事件
from llama_index.core.callbacks import TokenCountingHandler, CallbackManagerfrom llama_index.core import Settings
token_counter = TokenCountingHandler()Settings.callback_manager = CallbackManager([token_counter])在查询过程中会使用一些特定的参数/值,以确保输入给LLM的提示有足够的空间来生成一定数量的令牌。
通常情况下,这些会使用来自LLM的属性自动配置,但在特殊情况下可以被覆盖。
from llama_index.core import Settings
# maximum input size to the LLMSettings.context_window = 4096
# number of tokens reserved for text generation.Settings.num_output = 256使用设置中特定部分的接口也可以接受本地覆盖。
index = VectorStoreIndex.from_documents( documents, embed_model=embed_model, transformations=transformations)
query_engine = index.as_query_engine(llm=llm)