Go back to the English version of the documentation嵌入
嵌入
Last updated: 2024年12月11日
使用嵌入模型创建文本嵌入,捕捉句子或段落的含义。 您可以将这些模型与支持向量机等分类器一起使用。 嵌入模型还可以帮助您完成检索增强生成任务。
下图说明了支持嵌入的检索增强生成模式。
支持嵌入的检索增强生成模式包括以下步骤:
- 将内容转换为文本嵌入,并将其存储在矢量数据存储区中。
- 使用相同的嵌入模型将用户输入转换为文本嵌入。
- 在知识库中进行相似性或语义搜索,查找与用户问题相关的内容。
- 将最相关的搜索结果作为上下文输入提示,并添加指令,如 "仅使用以下段落中的信息回答以下问题"
- 将综合提示文本(指令 + 搜索结果 + 问题)发送到基础模型。
- 基础模式利用提示中的上下文信息生成事实性答案。
有关更多信息,请参阅:
USE 嵌入
USE 嵌入是 TFHub 中可用的 Google 通用句子编码器嵌入的包装器。 这些嵌入将用于文档分类 SVM 算法。 有关预训练的 USE 嵌入及其支持语言的列表,请参阅 "包含的预训练 USE 嵌入"
在使用 USE 嵌入时,请考虑以下几点:
如果您的任务涉及英文文本,请选择
embedding_use_en_stock
。如果您的任务涉及非英语文本,或者您想训练多语言模型,请选择多语言 USE 嵌入之一。
USE 嵌入在训练模型的质量和推理时的吞吐量之间表现出不同的权衡,如下所述。 尝试不同的嵌入方式,在结果质量和推理吞吐量之间权衡出适合您使用情况的方案。
embedding_use_multi_small
质量合理,但推理速度快embedding_use_en_stock
是embedding_embedding_use_multi_small
的纯英文版本,因此体积更小,推理吞吐量更高embedding_use_multi_large
基于 Transformer 架构,因此可提供更高质量的结果,但推理时的吞吐量较低
代码样本
import watson_nlp
syntax_model = watson_nlp.load("syntax_izumo_en_stock")
embeddings_model = watson_nlp.load("embedding_use_en_stock")
text = "python"
syntax_doc = syntax_model.run(text)
embedding = embeddings_model.run(syntax_doc)
print(embedding)
代码示例的输出:
{
"data": {
"data": [
-0.01909315399825573,
-0.009827353060245514,
...
0.008978910744190216,
-0.0702751949429512
],
"rows": 1,
"cols": 512,
"dtype": "float32"
},
"offsets": null,
"producer_id": null
}
包括预训练的 USE 嵌入
下表列出了可用的 USE 嵌入预训练块和支持的语言。 有关语言代码和相应语言的列表,请参阅 语言代码。
块名 | 模型名称 | 支持的语言 |
---|---|---|
use |
embedding_use_en_stock |
仅限英语 |
use |
embedding_use_multi_small |
AR, DE, EL, EN, ES, FR, IT, JA, KO, NB, NL, PL, PT, RU, TH, TR, ZH_TW, ZH |
use |
embedding_use_multi_large |
AR, DE, EL, EN, ES, FR, IT, JA, KO, NB, NL, PL, PT, RU, TH, TR, ZH_TW, ZH |
GloVe嵌入内容
GloVe 嵌入被 CNN 分类器使用。
块名称:embedding_glove__stock
支持的语言: ar, de, en, es, fr, it, ja, ko, nl, pt, zh-cn
代码样本
import watson_nlp
syntax_model = watson_nlp.load("syntax_izumo_en_stock")
embeddings_model = watson_nlp.load("embedding_glove_en_stock")
text = "python"
syntax_doc = syntax_model.run(text)
embedding = embeddings_model.run(syntax_doc)
print(embedding)
代码示例的输出:
{
"data": {
"data": [
-0.01909315399825573,
-0.009827353060245514,
...
0.008978910744190216,
-0.0702751949429512
],
"rows": 1,
"cols": 512,
"dtype": "float32"
},
"offsets": null,
"producer_id": null
}
Transformer 嵌入
块名称
embedding_transformer_en_slate.125m
embedding_transformer_en_slate.30m
受支持的语言
仅限英语
代码样本
import watson_nlp
# embeddings_model = watson_nlp.load("embedding_transformer_en_slate.125m")
embeddings_model = watson_nlp.load("embedding_transformer_en_slate.30m")
text = "python"
embedding = embeddings_model.run(text)
print(embedding)
代码示例的输出
{
"data": {
"data": [
-0.055536773055791855,
0.008286023512482643,
...
-0.3202415108680725,
5.000295277568512e-05
],
"rows": 1,
"cols": 384,
"dtype": "float32"
},
"offsets": null,
"producer_id": {
"name": "Transformer Embeddings",
"version": "0.0.1"
}
}