主题
概念
挑选合适的大语言模型(LLM),是你在自己数据上构建任何 LLM 应用时最先要考虑的事之一。
LLM 是 LlamaIndex 的核心组件。它们既可以作为独立模块使用,也可以插到其他 LlamaIndex 核心模块(索引、检索器、查询引擎)里。在响应合成这一步(也就是检索之后)一定会用到 LLM。取决于所用的索引类型,索引构建、插入和查询遍历过程中也可能用到 LLM。
LlamaIndex 为定义 LLM 模块提供了统一接口——无论来自 OpenAI、Hugging Face 还是 LangChain——这样你就不必自己编写 LLM 接口那些样板代码。这个接口包含以下内容(细节见下文):
- 同时支持文本补全与对话端点(细节见下文)
- 同时支持流式与非流式端点
- 同时支持同步与异步端点
使用方式
下面这段代码演示如何开始使用 LLM。
如果还没装,先安装你的 LLM:
pip install llama-index-llms-openai然后:
from llama_index.core import Settings
from llama_index.llms.openai import OpenAI
# changing the global default
Settings.llm = OpenAI()
# local usage
resp = OpenAI().complete("Paul Graham is ")
print(resp)
# per-query/chat engine
query_engine = index.as_query_engine(..., llm=llm)
chat_engine = index.as_chat_engine(..., llm=llm)关于分词(Tokenization)的说明
默认情况下,LlamaIndex 用一个全局分词器来做所有 token 计数。它默认是 tiktoken 的 cl100k,与默认 LLM gpt-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 等等的集成。
完整的模块清单见此处。