关于 Elasticsearch 架构和查询的问题

我正在建立一个 Elasticsearch 集群来搜索与一个 id 关联的向量。


例如,


鉴于此数据:


Parent id / Object id / vectors

P1 / BD / 123, 125, 235 ... 10304, 50305 

P1 / DF / 125, 235, 240 ... 10305, 10306

P1 / ED / 123, 235, 350 ... 10010, 10344

... 

P2 / AB / 125, 535, 740 ... 9315, 10306

P2 / VC / 133, 435, 350 ... 3010, 20344

P2 / RF / 113, 353, 390 ... 10110, 30344

...

There are millions of parents

hundreds of objects in a parent

1000 vectors in an object

所以基本上我想

  1. 索引所有向量

  2. 给定输入 P999,通过找到最多的相似对象来从集群中搜索相似的父对象。(相似对象:至少 50 个向量匹配)

这是我期望的示例结果

Input:

P999 / HH / xxx, xxx ...

P999 / YH / xxx, xxx ...

P999 / GJ / xxx, xxx ...

...

Output:

[result sorted desc] 

P20 has 60 similar objects

P4 has 45 similar objects

P501 has 41 similar objects

...


similar objects: at least 50 vector matches

为了实现这一点,我需要

  1. 好的架构

  2. 存储向量的查询

  3. 按降序搜索相似对象列表的查询

我需要这三个方面的帮助。


哆啦的时光机
浏览 90回答 1
1回答

饮歌长啸

我怀疑您是否可以使用纯弹性搜索查询获得所需的输出。我要做的是有一个 python 脚本,它能够以编程方式更改正在搜索的向量。然后根据响应的大小,您可能需要使用 Scan API 来返回所有匹配项,您的最终查询看起来像这样"query" : {    "bool" : {        "should" : [            //THIS IS THE PART THAT YOU PROGRAMATICALLY FILL USING THE VECTORS FROM THE PARENT YOU SPECIFIED            {"match" : {"vector" : "111"}},            {"match" : {"vector" : "222"}},            {"match" : {"vector" : "333"}},            ...            {"match" : {"vector" : "444"}},        ],      "minimum_should_match": "50"    }}那么您将使用 python 确定 P999 和所有匹配项之间的匹配向量数您是否有理由不使用图形数据库?使用图形数据库可以更轻松、更快速地找到这些关系。如果您必须使用功能分数,我会将其添加到上面的查询中。它应该做的是为每个匹配的文档添加一个权重,但是我相当肯定它会添加查询本身将在对文档进行评分方面做得很好        "function_score": {          "query": { "match_all": {} },          "boost": "5",           "functions": [              {                  "filter": { "match": { "vector": "111" } },                   "weight": 1              },              {                  "filter": { "match": { "vector": "222" } },                  "weight": 1              }              ...          ],          "max_boost": 1,          "score_mode": "max",          "boost_mode": "replace",          "min_score" : 0        }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go