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