LlamaIndex:设置Settings开发入门示例

云的事情不好说 2024-06-09 08:35:16

在 LlamaIndex 流水线/应用程序的索引和查询阶段,设置(Settings)是一个包含常用资源的集合。我们可以使用它来设置全局配置。局部配置(transformations、大语言模型、嵌入模型)可以直接传递到使用它们的接口中。

设置(Settings)是一个简单的单例对象,贯穿于整个应用程序。每当没有提供特定的组件时,设置对象(Settings)就会被用来提供全局默认值。

下面介绍如何在设置对象上配置相关属性。

一、大语言模型LLM

大语言模型用于响应提示和查询,并负责编写自然语言响应。

from llama_index.llms.openai import OpenAIfrom llama_index.core import SettingsSettings.llm = OpenAI(model="gpt-3.5-turbo", temperature=0.1)

二、嵌入模型(Embed Model)

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

from llama_index.embeddings.openai import OpenAIEmbeddingfrom llama_index.core import SettingsSettings.embed_model = OpenAIEmbedding(model="text-embedding-3-small", embed_batch_size=100)

三、节点解析器(Node Parser)/文本分割器(Text Splitter)

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

from llama_index.core.node_parser import SentenceSplitterfrom llama_index.core import SettingsSettings.text_splitter = SentenceSplitter(chunk_size=1024)

四、Transformations

Transformations在文档摄取期间应用于文档。默认情况下,使用节点解析器/文本分割器,但这可以被覆盖并进一步定制。

from llama_index.core.node_parser import SentenceSplitterfrom llama_index.core import SettingsSettings.transformations = SentenceSplitter(chunk_size=1024)

五、分词器(Tokenizer)

分词器用于计算 Token。这应该设置为正在使用的大语言模型相匹配的内容。

from llama_index.core import Settings# openaiimport tiktokenSettings.tokenizer = tiktoken.encoding_for_model("gpt-3.5-turbo").encode# open-sourcefrom transformers import AutoTokenizerSettings.tokenzier = AutoTokenizer.from_pretrained( "mistralai/Mixtral-8x7B-Instruct-v0.1")

六、回调(Callbacks)

可以设置一个全局的回调管理器,它可以用于观察和消费在整个 llama-index 代码中生成的事件。

from llama_index.core.callbacks import TokenCountingHandler, CallbackManagerfrom llama_index.core import Settingstoken_counter = TokenCountingHandler()Settings.callback_manager = CallbackManager([token_counter])

七、提示助手参数(Prompt Helper Arguments)

在查询期间,使用特定的参数/值以确保输入提示到大语言模型有足够的空间生成一定数量的 Token。

通常这些是使用大语言模型的属性自动配置的,但在特殊情况下可以被覆盖。

from llama_index.core import Settings# 输入到大语言模型的最大大小Settings.context_window = 4096# 为文本生成保留的 Token 数量。Settings.num_output = 256

八、设置局部配置

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

index = VectorStoreIndex.from_documents(documents, embed_model=embed_model, transformations=transformations)query_engine = index.as_query_engine(llm=llm)



0 阅读:9

云的事情不好说

简介:感谢大家的关注