搜索和比较文本
Elastic Stack Serverless
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
}
...