文本嵌入指南

借助 MediaPipe Text Embedder 任务,您可以创建文本数据的数字表示形式,以捕获其语义含义。此功能经常用于使用余弦相似度等数学比较技术来比较两段文本的语义相似度。此任务使用机器学习 (ML) 模型处理文本数据,并以浮点或量化形式以高维特征向量(也称为嵌入向量)列表的形式输出文本数据的数字表示。

试试吧!

开始使用

如需开始使用此任务,请按照适用于您的目标平台的其中一个实现指南进行操作。这些平台专用指南将引导您完成此任务的基本实现,包括推荐的模型和包含推荐配置选项的代码示例:

任务详情

本部分介绍此任务的功能、输入、输出和配置选项。

特性

  • 输入文本处理 - 对于没有图内令牌化的模型,支持图外令牌化。
  • 嵌入相似度计算 - 用于计算两个特征向量之间的余弦相似度的内置实用函数。
  • 量化 - 支持特征向量的标量量化。
任务输入 任务输出
文本嵌入器接受以下输入数据类型:
  • 字符串
文本嵌入器会输出包含以下内容的嵌入列表:
  • 嵌入:特征向量本身,采用浮点形式或标量量化形式。
  • 头部索引:产生此嵌入的头部的索引。
  • 头部名称(可选):生成此嵌入的头部名称。

配置选项

此任务具有以下配置选项:

选项名称 说明 值范围 默认值
l2_normalize 是否以 L2 范数归一化返回的特征向量。 仅当模型尚未包含原生 L2_NORMALIZATION TFLite 运算时,才可使用此选项。在大多数情况下,情况都是如此,L2 归一化是通过 TFLite 推断实现的,因此无需使用此选项。 Boolean False
quantize 是否应通过标量量化将返回的嵌入量化为字节。嵌入被隐式假定为单位范数,因此任何维度的值都必须在 [-1.0, 1.0] 之间。如果不属于这种情况,请使用 l2_normalize 选项。 Boolean False

模型

当您开始使用此任务进行开发时,我们会提供一个默认的推荐模型。

该模型使用双编码器架构,并且基于各种问答数据集进行了训练。

请考虑以下几对句子:

  • (“这是一次充满魅力且经常影响的旅程”“这是一次美好而美好的行程”)
  • (“我喜欢我的手机”“我讨厌我的手机”)
  • (“这家餐厅有个很棒的花絮”“我们需要再确认一下计划的详细信息”)

前两对中的文本嵌入的余弦相似度比第三对中的嵌入具有更高的余弦相似度,这是因为前两对句子共用“旅行情感”和“电话观点”共同主题,而第三对句子不具有共同主题。

请注意,虽然第二对中的两个句子具有相反的情感,但由于它们有着共同的主题,因此它们的相似度分数很高。

模型名称 输入形状 量化类型 Versions
Universal Sentence Encoder 字符串 无 (float32) 最新动态

任务基准

以下是基于上述预训练模型的整个流水线的任务基准。延迟时间结果是 Pixel 6 使用 CPU / GPU 时的平均延迟时间。

模型名称 CPU 延迟时间 GPU 延迟时间
Universal Sentence Encoder 18.21 毫秒 -