借助 MediaPipe Text Embedder 任务,您可以创建文本数据的数值表示法,以捕获其语义含义。此功能通常用于使用余弦相似度等数学比较技术比较两段文本的语义相似度。此任务使用机器学习 (ML) 模型处理文本数据,并以浮点或量化形式将文本数据的数字表示输出为一系列高维特征向量(也称为嵌入向量)。
开始使用
如需开始使用此任务,请按照适用于目标平台的以下任一实现指南操作。以下平台专用指南将引导您完成此任务的基本实现,包括推荐的模型,以及包含推荐配置选项的代码示例:
任务详情
本部分介绍了此任务的功能、输入、输出和配置选项。
功能
- 输入文本处理 - 支持为不进行图内词解析的模型进行图外词解析。
- 嵌入相似度计算 - 内置实用函数,用于计算两个特征向量之间的余弦相似度。
- 量化 - 支持对特征向量进行标量量化。
任务输入 | 任务输出 |
---|---|
文本嵌入器接受以下输入数据类型:
|
文本嵌入器会输出一个嵌入列表,其中包含:
|
配置选项
此任务具有以下配置选项:
选项名称 | 说明 | 值范围 | 默认值 |
---|---|---|---|
l2_normalize |
是否使用 L2 范数对返回的特征向量进行归一化。 仅当模型尚不包含原生 L2_NORMALIZATION TFLite 运算时,才应使用此选项。在大多数情况下,已经是这种情况,因此 L2 归一化是通过 TFLite 推理实现的,而无需此选项。 | Boolean |
False |
quantize |
是否应通过标量量化将返回的嵌入量化为字节。系统会隐式假定嵌入的范数为 1,因此任何维度的值都保证在 [-1.0, 1.0] 之间。如果不是这种情况,请使用 l2_normalize 选项。 | Boolean |
False |
模型
当您开始使用此任务进行开发时,我们会提供一个默认的推荐模型。
Universal Sentence Encoder 模型(推荐)
此模型采用双编码器架构,并基于各种问答数据集进行训练。
请考虑以下句子对:
- ("it's a charming and often affecting journey", "what a great and fantastic trip")
- ("I like my phone", "I hate my phone")
- ("This restaurant has a great gimmick", "We need to double-check the details of our plan")
前两对句子中的文本嵌入与第三对句子中的文本嵌入相比,余弦相似度更高,因为前两对句子分别具有“行程情感”和“手机评价”这两个共同主题,而第三对句子没有共同主题。
请注意,虽然第二对句子的感情色彩相反,但由于它们具有共同的主题,因此相似度得分较高。
模型名称 | 输入形状 | 量化类型 | 版本 |
---|---|---|---|
Universal Sentence Encoder | 字符串、字符串、字符串 | 无(float32) | 最新 |
任务基准
下面是基于上述预训练模型的整个流水线的任务基准。延迟时间结果是使用 CPU / GPU 在 Pixel 6 上的平均延迟时间。
模型名称 | CPU 延迟时间 | GPU 延迟时间 |
---|---|---|
Universal Sentence Encoder | 18.21 毫秒 | - |