借助 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
<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 示例代码演示了如何显示从任务返回的嵌入器 结果,如需了解详情,请参阅该 示例 。