跳到主要内容

如何按 tokens 拆分文本

先决条件

本指南假定您熟悉以下概念

语言模型具有 token 限制。您不应超过 token 限制。当您将文本拆分为块时,计算 token 数量是一个好主意。 有许多 tokenizer。当您计算文本中的 token 时,您应该使用与语言模型中使用的相同的 tokenizer。

js-tiktoken

注意

js-tiktoken 是 OpenAI 创建的 BPE tokenizer 的 JavaScript 版本。

我们可以使用 js-tiktoken 来估计使用的 tokens 数量。它针对 OpenAI 模型进行了调整。

  1. 文本如何拆分:通过传入的字符。
  2. chunk 大小如何衡量:通过 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 个或更多 tokens。直接使用 TokenTextSplitter 可能会将一个字符的 tokens 拆分到两个 chunk 之间,从而导致 Unicode 字符格式错误。

下一步

您现在已经学习了一种基于 token 计数拆分文本的方法。

接下来,查看关于检索增强生成的完整教程。


此页面对您有帮助吗?


您也可以留下详细的反馈 在 GitHub 上.