请教个 es 向量查询的问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
wueryi
V2EX    Elasticsearch

请教个 s 向量查询的问题

  •  1
     
  •   wueryi 2024-06-19 10:19:40 +08:00 4796 次点击
    这是一个创建于 529 天前的主题,其中的信息可能已经有所发展或是发生改变。

    背景:

    • 根据一段文案(假设为商品标题)的向量值在 es 中查询出相似的文案(商品) knn_search
    • 向量维度是 1024 维度 余弦函数计算距离
    • 目前已有数据是 600w 左右 整体 es 数据量在 250g 左右
    • es 节点 8c32g *3

    问题

    目前想前台使用这种向量查询的结果 但是问题是目前单次查询的效率很低基本上得 60s 左右才能返回。

    • 有大佬有经验这种量级的查询大概需要升配到什么配置吗?
    • 或者有什么其他的查询优化方案吗?

    其他

    • 为啥非得用 es 不用其他向量库 例如 milvus ?:因为存量数据在这儿,所以暂时没有迁移。
    • 另外我看到的有限的返回结果中,很多文案相近但是不是同一个商品的也会被查询出来,准确率其实有待考证。
    22 条回复    2024-06-24 09:43:32 +08:00
    somebody1
        1
    somebody1  
       2024-06-19 10:30:54 +08:00
    不懂。
    建议你去 es 的社区发问题!
    wueryi
        2
    wueryi  
    OP
       2024-06-19 11:22:37 +08:00
    fffflyfish
        3
    fffflyfish  
       2024-06-19 11:23:22 +08:00
    向量做下降维呗,1024 太长了,商品标题一般也就 60~128 维差不多够用了
    wanghello
        4
    wanghello  
       2024-06-19 11:26:04 +08:00
    redis search 咋样
    jetyang
        5
    jetyang  
       2024-06-19 12:01:56 +08:00
    1.ES 做向量检索就是慢,了解一下 ANN ,近似查询才能加速
    2.向量检索就是考虑到意思相近但不是同样的文字,如果要同一个干嘛启用向量查询
    my3157
        6
    my3157  
       2024-06-19 12:18:06 +08:00 via Android
    试下 meilisearch
    wueryi
        7
    wueryi  
    OP
       2024-06-19 13:08:43 +08:00
    @fffflyfish #3 主要是存量数量里已经有 1024 维度的了,刷数据的话时间比较长。另外就是没有具体试过降维会不会准确率降低,余弦函数的距离我理解应该不会降低准确率。
    wueryi
        8
    wueryi  
    OP
       2024-06-19 13:10:23 +08:00
    @jetyang #5 我试了 ANN 这个配置对应这个量级 快不了多少 ,都是几十 s 上下,2.应用的场景其实就是针对不同平台同一个商品,进行搜索,并不是一样的文案,大概率都是相似文案。
    fffflyfish
        9
    fffflyfish  
       2024-06-19 13:46:20 +08:00
    @wueryi 降维对效果的影响你在 STS dataset 上实际测下就知道了,看上面 ANN 都加速不了的话你只能在准确率和计算耗时之间权衡了,或者你调研下有没有基于 GPU 的向量检索方案
    picone
        10
    picone  
       2024-06-19 13:55:27 +08:00
    @wueryi #8 ANN 不可能这么慢,百万级规模也不算特别大,不需要上到 GPU 。降维试试不影响准确召回即可。有个问题是这个数据集存在更新吗,更新频繁吗?除了 ES 外也有其它专门做向量检索的项目可以都调研下对比下
    wueryi
        11
    wueryi  
    OP
       2024-06-19 14:59:48 +08:00
    @picone #10 存在更新 但是不频繁,在试 milvus 但是目前没有这么大的量供测试
    wueryi
        12
    wueryi  
    OP
       2024-06-19 15:00:30 +08:00
    @fffflyfish #9 GET 感谢老哥
    monkeyk
        13
    monkeyk  
       2024-06-19 15:04:19 +08:00
    这类问题要先找到根源在哪,像 milvus 之类的向量库都推荐使用 GPU 来部署;
    一般能想到的就是 CPU 的并发支持 没有 GPU 高。
    尝试找一些官方提供的 debug 工具试试
    OPLUS
        14
    OPLUS  
       2024-06-19 16:11:38 +08:00
    之前做过 128 维的测试,默认索引下 es 就是比 milvus 慢很多。
    Chris2023
        15
    Chris2023  
       2024-06-19 17:07:21 +08:00
    如果是优化方案:1.纬度太大 2.数据更新是否频繁 3.磁盘最好是 SSD 4.内存利用率可以看一下。 向量查询还是要用向量数据库来承载,ES 一般不这么用。
    picone
        16
    picone  
       2024-06-19 17:21:12 +08:00
    @wueryi #11 PQ 量化,分库这些都可以搞上去试试,百万级数据单机理论上是可以处理的,牺牲少量召回准确率。

    如果使用 ANN 的话,更新的量看大不大,大的话可以单独作为一个子库做倒排并行检索,然后日/月粒度全量重新建库就好了。
    OblivionStaff
        17
    OblivionStaff  
       2024-06-19 17:37:51 +08:00
    可以试着问问 llm 。Kimi 智能助手的对话 https://kimi.moonshot.cn/share/cppadj8nsmmif30hv83g
    wxf666
        18
    wxf666  
       2024-06-19 20:06:27 +08:00
    请教一下,这是一种更高级的全文搜索吗?

    比如,要是用到 V2EX 的搜索里,就能以自然语言形式,搜出更匹配的帖子/回复来,而不是关键词/近义词匹配而已?

    某个字符串的 1024 纬度数据,是咋来的呢?每个纬度,是代表某个方向上的相关程度吗?(如动物/人类/编程/工地/……)
    qieqie
        19
    qieqie  
       2024-06-19 23:05:08 +08:00 via iPhone
    ES knn 性能就是低的匪夷所思,甚至比 ssd ondisk 索引方案还低一个数量级。
    wueryi
        20
    wueryi  
    OP
       2024-06-24 09:35:19 +08:00
    @Chris2023 #15 是的本来打算是用 milvus 只是当前数据存在 es 里 es 刚好支持 所以测试一下性能 然后发现确实别我想想的要更差一点儿。然后分析原因的时候不确定是不是配置的问题导致的。
    wueryi
        21
    wueryi  
    OP
       2024-06-24 09:42:25 +08:00
    @picone #16 好的 我们业务量级可能得 1kw 左右,当前存的大概是 600w ,更新的频率不频繁 目前我升配到 8c32g 3 个节点 无论还是 ann 还是 knn 性能都是比较差劲的 不知道是不是我哪个环境设置的不对
    wueryi
        22
    wueryi  
    OP
       2024-06-24 09:43:32 +08:00
    @qieqie #19 确实优点出乎意料 我查阅其他资料来看 es 的向量搜索还可以 不知道是不是我哪个环境操作的有问题
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     844 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 19:27 PVG 03:27 LAX 11:27 JFK 14:27
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86