搜索和比较文本

编辑

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
}
...