搜索和比较文本

编辑

Elastic Stack 的机器学习功能可以生成嵌入,您可以使用它来搜索非结构化文本或比较不同的文本片段。

文本嵌入

编辑

文本嵌入是一项生成文本数学表示(称为嵌入)的任务。机器学习模型将文本转换为数值数组(也称为向量)。含义相似的文本内容具有相似的表示。这意味着可以通过使用数学相似度函数来确定不同的文本片段在语义上是相似、不同还是相反。

此任务仅负责生成嵌入。创建嵌入后,可以将其存储在dense_vector 字段中,并在搜索时使用。例如,您可以在k 近邻 (kNN) 搜索 中使用这些向量来实现语义搜索功能。

以下是生成文本嵌入的示例

{
    docs: [{"text_field": "The quick brown fox jumps over the lazy dog."}]
}
...

该任务返回以下结果

...
{
    "predicted_value": [0.293478, -0.23845, ..., 1.34589e2, 0.119376]
    ...
}
...

文本相似度

编辑

文本相似度任务估计两段文本彼此之间的相似程度,并以数值表示相似度。这通常称为交叉编码。此任务在将文档文本与另一个提供的文本输入进行比较时对对文档文本进行排序很有用。

您可以提供多条文本字符串以与另一个文本输入序列进行比较。在推理时,每个字符串都会与给定的文本序列进行比较,并为每个文本字符串计算相似度预测。

{
  "docs":[{ "text_field": "Berlin has a population of 3,520,031 registered inhabitants in an area of 891.82 square kilometers."}, {"text_field": "New York City is famous for the Metropolitan Museum of Art."}],
  "inference_config": {
    "text_similarity": {
      "text": "How many people live in Berlin?"
    }
  }
}

在上面的示例中,docs 数组中的每个字符串都会单独与text_similarity.text 字段中提供的文本进行比较,并为两者计算预测的相似度,如 API 响应所示

...
{
    "predicted_value": 7.235751628875732
},
{
    "predicted_value": -11.562295913696289
}
...