使用大型语言模型
选择合适的大型语言模型(LLM)是构建任何基于数据的LLM应用时需要考虑的首要步骤之一。
LLMs是LlamaIndex的核心组件。它们可以作为独立模块使用,也可以插入到其他核心LlamaIndex模块(索引、检索器、查询引擎)中。它们总是在响应合成步骤(例如检索之后)中使用。根据所使用的索引类型,LLMs也可能在索引构建、插入和查询遍历期间使用。
LlamaIndex 提供了一个统一的接口来定义LLM模块,无论它来自OpenAI、Hugging Face还是LangChain,这样您就不必自己编写定义LLM接口的样板代码。该接口包含以下内容(更多细节如下):
- 支持 文本补全 和 聊天 端点(详情见下文)
- 支持流式和非流式端点
- 支持同步和异步端点
以下代码片段展示了如何开始使用大型语言模型。
如果您尚未安装,请安装您的LLM:
pip install llama-index-llms-openai然后:
from llama_index.core import Settingsfrom llama_index.llms.openai import OpenAI
# changing the global defaultSettings.llm = OpenAI()
# local usageresp = OpenAI().complete("Paul Graham is ")print(resp)
# per-query/chat enginequery_engine = index.as_query_engine(..., llm=llm)chat_engine = index.as_chat_engine(..., llm=llm)默认情况下,LlamaIndex对所有令牌计数使用全局令牌化器。这默认为tiktoken中的cl100k,该令牌化器与默认LLM gpt-3.5-turbo相匹配。
如果您更换了LLM,可能需要更新此分词器以确保准确的令牌计数、分块和提示。
分词器的唯一要求是它是一个可调用函数,接收字符串并返回列表。
您可以像这样设置一个全局分词器:
from llama_index.core import Settings
# tiktokenimport tiktoken
Settings.tokenizer = tiktoken.encoding_for_model("gpt-3.5-turbo").encode
# huggingfacefrom transformers import AutoTokenizer
Settings.tokenizer = AutoTokenizer.from_pretrained( "HuggingFaceH4/zephyr-7b-beta")我们支持与 OpenAI、HuggingFace、Anthropic 等平台的集成。
查看完整的模块列表。