0 / 0
Go back to the English version of the documentation
嵌入
Last updated: 2024年12月11日
嵌入

使用嵌入模型创建文本嵌入,捕捉句子或段落的含义。 您可以将这些模型与支持向量机等分类器一起使用。 嵌入模型还可以帮助您完成检索增强生成任务。

下图说明了支持嵌入的检索增强生成模式。

图中显示了将向量存储中的搜索结果添加到检索增强生成的输入中的情况

支持嵌入的检索增强生成模式包括以下步骤:

  1. 将内容转换为文本嵌入,并将其存储在矢量数据存储区中。
  2. 使用相同的嵌入模型将用户输入转换为文本嵌入。
  3. 在知识库中进行相似性或语义搜索,查找与用户问题相关的内容。
  4. 将最相关的搜索结果作为上下文输入提示,并添加指令,如 "仅使用以下段落中的信息回答以下问题"
  5. 将综合提示文本(指令 + 搜索结果 + 问题)发送到基础模型。
  6. 基础模式利用提示中的上下文信息生成事实性答案。

有关更多信息,请参阅:

USE 嵌入

USE 嵌入是 TFHub 中可用的 Google 通用句子编码器嵌入的包装器。 这些嵌入将用于文档分类 SVM 算法。 有关预训练的 USE 嵌入及其支持语言的列表,请参阅 "包含的预训练 USE 嵌入"

在使用 USE 嵌入时,请考虑以下几点:

  • 如果您的任务涉及英文文本,请选择 embedding_use_en_stock

  • 如果您的任务涉及非英语文本,或者您想训练多语言模型,请选择多语言 USE 嵌入之一。

  • USE 嵌入在训练模型的质量和推理时的吞吐量之间表现出不同的权衡,如下所述。 尝试不同的嵌入方式,在结果质量和推理吞吐量之间权衡出适合您使用情况的方案。

    • embedding_use_multi_small 质量合理,但推理速度快
    • embedding_use_en_stockembedding_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 嵌入及其支持的语言列表
块名 模型名称 支持的语言
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"
  }
}

母题: Watson 自然语言处理任务目录

Generative AI search and answer
These answers are generated by a large language model in watsonx.ai based on content from the product documentation. Learn more