你的浏览器禁用了JavaScript, 请开启后刷新浏览器获得更好的体验!
输入关键字进行搜索
搜索:
没有找到相关结果
森 - Elasticsearch,php
赞同来自: medcl 、laoyang360 、josancpp
Kalasearch
赞同来自: 森 、liutianhao
medcl - 今晚打老虎。
赞同来自: 森
core_wzw - 某AILab搜索技术负责人
要回复问题请先登录或注册
Elasticsearch,php
4 个回复
森 - Elasticsearch,php
赞同来自: medcl 、laoyang360 、josancpp
Kalasearch
赞同来自: 森 、liutianhao
Elastic用的query只能是text或某种text的变体(即使是数字之类的其它类型)
而以图用图搜的query是图片,那么如果你需要用Elastic来做的话,则需要将图片转为某种形式的text。通常以图搜图的实现是
1. 建一个足够大的图片库,将图片特征提取出来(通常结合一些CV的操作,不会仅仅是把像素提取出来)
2. 新来一张图片时,用同样的方法,把特征提取出来
3. 用某种similarity来确定2中的图片和1中的图片距离最近的topK。通常这也可以用一些机器学习的方法来做
也就是说,如果你需要用Elastic来做以图搜图,需要比较多hack把一个本来为纯文本设计的引擎(倒排索引)来套用上,这与这个工具本身设计的理念不太切合,所以用起来也会比较尴尬。
但如果LZ一定要试试的话,我能想到的办法有
1. 自己写一个Query,直接替换ES用的Lucene的标准Query
2. 这个Query需要重新定义一个similarity,比如用余弦距离。在Index时,把图片特征存到index里,存到一个field
3. 对于一个待搜索图片,用同样的方式抽出特征。把其中的特征中的一部分建一个Query,用来搜索第2步里存的field,取5*top-K。注意这里需要比topK多,来保证召回率足够高
4. 对于collect到的所有图片candidate,再将用similarity算一次与query图片的距离,取topK
可以看到,这个实在是非常尴尬,倒排引擎的唯一作用就是预过滤,不建议这样使用
medcl - 今晚打老虎。
赞同来自: 森
core_wzw - 某AILab搜索技术负责人
赞同来自: 森
百万量级以上文档库,直接用milvus,milvus支持亿级向量相似计算在毫秒级完成(lg(n)近邻搜索),支持自动增量更新索引,相对FAISS免去Docker化和接口自定义等工作。
当年没有写es-embedding插件时,我还试过把embedding转成文本去用match,各种往text变体去靠,太南了..