适用于 Web 的文本嵌入指南

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

如需详细了解功能、模型和配置选项 部分,请参阅概览

代码示例

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

设置

本部分介绍了设置开发环境和 专门用于文本嵌入器的代码项目。有关 设置开发环境以使用 MediaPipe 任务,包括 平台版本要求,请参阅 适用于网站的设置指南

JavaScript 软件包

文本嵌入器代码可通过 @mediapipe/tasks-text 软件包。您可以从 平台 设置指南

<ph type="x-smartling-placeholder">

您可以使用以下代码安装本地暂存所需的软件包 创建 Deployment

npm install @mediapipe/tasks-text

如果您想部署到服务器,可以使用内容传送工具 网络 (CDN) 服务(如 jsDelivr) 将代码直接添加到您的 HTML 网页,如下所示:

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

型号

MediaPipe 文本嵌入器任务需要一个与此任务兼容的经过训练的模型 任务。如需详细了解可供文本嵌入器使用的经过训练的模型,请参阅 任务概览的“模型”部分

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

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

创建任务

使用其中一个文本嵌入器 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 操作大多数情况下已经如此 因此,L2 归一化通过 TFLite 推理实现,无需 。 Boolean False
quantize 是否应通过 标量量化。嵌套被隐式假定为单位范数, 因此任何维度的值都必须在 [-1.0, 1.0] 范围内。使用 则使用 l2Normalize 选项。 Boolean False

准备数据

文本嵌入器处理文本 (string) 数据。任务会处理 数据输入预处理,包括标记化和张量预处理。全部 预处理在 embed 函数中进行处理。不需要 以预先对输入文本进行额外的预处理。

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

运行任务

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

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

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

处理和显示结果

文本嵌入器会输出 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]);

文本嵌入器示例代码演示了如何显示嵌入器 结果,请参阅 代码示例 了解详情。