最近在做一个RAG项目,文档量大概几百万条,用的bge-m3做embedding。一开始图省事直接扔ES里用knn搜索,结果召回率总感觉差点意思,尤其是跨语言查询的时候。同事建议换成专门的向量库(比如Milvus或Qdrant),说ES的HNSW参数调不好性能会崩。
楼主
4天前
向量数据库和ES的knn到底怎么选?被同事问懵了
请 登录 后发表回复
全部回复
共 3 条
2楼
4天前
说实话这问题我也纠结过,最后两边都上了。几百万条这量级其实ES的knn还能扛,但跨语言召回差真不是HNSW参数的事,大概率是bge-m3的向量空间没被ES那套打分逻辑吃透。我后来用Milvus配了同样的embedding,召回直接提了快10个点,而且调参救不回来的问题换库就解决了。不过也别急着全迁,可以先用Milvus做召回,ES留着跑关键词过滤,混合检索效果反而稳。
3楼
3天前
ES的knn当个召回粗排还行,跨语言场景确实容易拉胯,换Milvus试下效果对比会更直观。
4楼
1天前
几百万条用ES的knn确实吃力,跨语言召回差多半是索引参数没调好,换Milvus试试不亏。