Skip to main content

如何按令牌拆分文本

预备知识

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

语言模型具有令牌限制。您不应超过该限制。因此,当您将文本拆分为块时,最好计算令牌的数量。存在许多不同的令牌分割器。当您统计文本中的令牌数量时,应使用与语言模型中所用相同的令牌分割器。

js-tiktoken

note

js-tiktoken 是 OpenAI 创建的 BPE 分词器的一个 JavaScript 版本。

我们可以使用 js-tiktoken 来估算所使用的 token。它针对 OpenAI 模型进行了调优。

  1. 文本的分割方式:按传入的字符进行分割。
  2. 分块大小的衡量方式:通过 js-tiktoken 分词器进行衡量。

你可以像下面这样使用 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 数量分割文本的方法。

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


Was this page helpful?


You can also leave detailed feedback on GitHub.