Skip to content

使用大语言模型#

概念#

在构建基于数据的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等平台的集成方案。

完整模块列表详见模块目录

扩展阅读#