适用于 Web 的文本嵌入指南

借助 MediaPipe Text Embedder 任务,您可以创建文本数据的数值表示形式,以捕获其语义含义。以下说明介绍了如何将 Text Embedder 用于 Web 和 JavaScript 应用。

如需详细了解此任务的功能、模型和配置选项 ,请参阅概览

代码示例

Text Embedder 的示例代码提供了此任务在 JavaScript 中的完整实现,供您参考。此代码可帮助您测试此任务并 开始构建自己的文本嵌入应用。您只需使用 Web 浏览器,即可查看、运行 和修改 Text Embedder 示例

设置

本部分介绍了设置开发环境和代码项目以专门使用 Text Embedder 的关键步骤。如需了解有关 设置开发环境以使用 MediaPipe 任务的一般信息(包括 平台版本要求),请参阅 Web 设置指南

JavaScript 软件包

Text Embedder 代码可通过 @mediapipe/tasks-text 软件包获取。您可以从 平台 设置指南中提供的链接查找和下载这些库。

您可以使用以下代码安装所需的软件包,以便使用以下命令进行本地暂存:

npm install @mediapipe/tasks-text

jsDelivr

<head>
  <script src="https://cdn.jsdelivr.net/npm/@mediapipe/tasks-text@latest/index.js"
    crossorigin="anonymous"></script>
</head>

模型

MediaPipe Text Embedder 任务需要与此任务兼容的训练模型。如需详细了解可用于 Text Embedder 的可用训练模型,请参阅 任务概览的 模型部分

选择并下载模型,然后将其存储在项目目录中:

<dev-project-root>/app/shared/models

创建任务

使用其中一个 Text Embedder createFrom...() 函数来准备运行推断的任务。您可以使用 createFromModelPath() 函数以及训练模型文件的相对路径或绝对路径。以下代码示例演示了如何使用 createFromOptions() 函数。如需详细了解可用的配置选项,请参阅 配置选项

以下代码演示了如何构建和配置此任务:

async function createEmbedder() {
  const textFiles = await FilesetResolver.forTextTasks("https://cdn.jsdelivr.net/npm/@mediapipe/tasks-text@latest/wasm/");
  textEmbedder = await TextEmbedder.createFromOptions(
    textFiles,
    {
      baseOptions: {
        modelAssetPath: `https://storage.googleapis.com/mediapipe-tasks/text_embedder/universal_sentence_encoder.tflite`
      },
      quantize: true
    }
  );
}
createEmbedder();

配置选项

此任务具有以下适用于 Web 和 JavaScript 应用的配置选项:

选项名称 说明 值范围 默认值
l2Normalize 是否使用 L2 范数对返回的特征向量进行归一化。 仅当模型尚未包含原生 L2_NORMALIZATION TFLite Op 时,才使用此选项。在大多数情况下,情况都是如此,因此通过 TFLite 推断实现 L2 归一化,而无需此选项。 Boolean False
quantize 是否应通过 标量量化将返回的嵌入量化为字节。嵌入量隐式假定为单位范数,因此任何维度都保证具有 [-1.0, 1.0] 中的值。如果不是这种情况,请使用 l2Normalize 选项。 Boolean False

准备数据

Text Embedder 可处理文本 (string) 数据。该任务会处理数据输入预处理,包括分词和张量预处理。所有预处理都在 embed 函数中处理。无需事先对输入文本进行额外的预处理。

const inputText = "The input text to be embedded.";

运行任务

Text Embedder 使用 embed 函数来触发推断。对于文本嵌入,这意味着返回输入文本的嵌入向量。

以下代码演示了如何使用任务模型执行处理。

// Wait to run the function until inner text is set
const embeddingResult = textEmbedder.embed(
  inputText
);

处理和显示结果

Text Embedder 输出一个 TextEmbedderResult,其中包含输入文本的嵌入列表(浮点型或标量量化型)。

以下示例展示了此任务的输出数据:

TextEmbedderResult:
  Embedding #0 (sole embedding head):
    float_embedding: {0.2345f, 0.1234f, ..., 0.6789f}
    head_index: 0

您可以使用 TextEmbedder.cosineSimilarity 函数比较两个嵌入的语义相似度。如需查看示例,请参阅以下代码。

// Compute cosine similarity.
const similarity = TextEmbedder.cosineSimilarity(
  embeddingResult.embeddings[0],
  otherEmbeddingResult.embeddings[0]);

Text Embedder 示例代码演示了如何显示从任务返回的嵌入器 结果,如需了解详情,请参阅该 示例