如何根据 Token 拆分文本
先决条件
本指南假定您熟悉以下概念
语言模型有 Token 限制。您不应超过 Token 限制。因此,当您将文本分成块时,最好统计 Token 的数量。有很多种 Tokenizer。当您统计文本中的 Token 时,您应该使用与语言模型中使用的相同的 Tokenizer。
js-tiktoken
注意
js-tiktoken 是 OpenAI 创建的 BPE
Tokenizer 的 JavaScript 版本。
我们可以使用 js-tiktoken
来估计使用的 Token。它已针对 OpenAI 模型进行了调整。
- 文本如何拆分:按传入的字符拆分。
- 块大小如何衡量:由
js-tiktoken
Tokenizer 衡量。
您可以按如下方式使用 TokenTextSplitter
import { TokenTextSplitter } from "@langchain/textsplitters";
import * as fs from "node:fs";
// Load an example document
const rawData = await fs.readFileSync(
"../../../../examples/state_of_the_union.txt"
);
const stateOfTheUnion = rawData.toString();
const textSplitter = new TokenTextSplitter({
chunkSize: 10,
chunkOverlap: 0,
});
const texts = await textSplitter.splitText(stateOfTheUnion);
console.log(texts[0]);
Madam Speaker, Madam Vice President, our
注意:某些书面语言(例如,中文和日语)的字符编码为 2 个或多个 Token。直接使用 TokenTextSplitter
会将字符的 Token 拆分到两个块之间,从而导致 Unicode 字符格式错误。
下一步
您现在已经学习了根据 Token 计数拆分文本的方法。
接下来,查看 检索增强生成完整教程。