使用大语言模型#
概念#
在构建基于数据的LLM应用时,选择合适的大语言模型(LLM)是需要优先考虑的步骤之一。
LLM是LlamaIndex的核心组件,既可作为独立模块使用,也可集成到其他核心模块(如索引、检索器、查询引擎)中。它们始终参与响应合成阶段(例如检索后处理)。根据索引类型的不同,LLM还可能参与索引构建、数据插入和查询遍历等环节。
LlamaIndex为各类LLM模块(无论是OpenAI、Hugging Face还是LangChain)提供了统一接口,免去了自行定义LLM接口的样板代码工作。该接口包含以下特性(详见下文说明): - 支持文本补全和聊天两种终端模式 - 支持流式与非流式传输 - 支持同步与异步调用
使用模式#
以下代码片段展示基础使用方法:
若未安装LLM依赖,请先执行:
pip install llama-index-llms-openai
随后:
from llama_index.core import Settings
from llama_index.llms.openai import OpenAI
# 修改全局默认配置
Settings.llm = OpenAI()
# 本地调用示例
resp = OpenAI().complete("Paul Graham是 ")
print(resp)
# 按查询/聊天引擎配置
query_engine = index.as_query_engine(..., llm=llm)
chat_engine = index.as_chat_engine(..., llm=llm)
关于分词器的说明#
默认情况下,LlamaIndex使用全局分词器进行所有token计数。该分词器默认为tiktoken的cl100k,与默认LLMgpt-3.5-turbo的分词器保持一致。
更换LLM时,可能需要同步更新分词器以确保token计数、文本分块和提示工程的准确性。
分词器唯一要求是必须为可调用函数,接收字符串输入并返回列表。
设置全局分词器示例:
from llama_index.core import Settings
# tiktoken方案
import tiktoken
Settings.tokenizer = tiktoken.encoding_for_model("gpt-3.5-turbo").encode
# huggingface方案
from transformers import AutoTokenizer
Settings.tokenizer = AutoTokenizer.from_pretrained(
"HuggingFaceH4/zephyr-7b-beta"
)
模块支持#
我们提供与OpenAI、HuggingFace、Anthropic等平台的集成方案。
完整模块列表详见模块目录。