在向量数据库领域,Elasticsearch 和 Milvus 都是备受瞩目的明星产品,它们各自有着独特的优势和适用场景。随着数据量的爆炸式增长以及应用场景对数据处理需求的不断复杂化,如何选择合适的向量数据库成为了众多开发者和企业面临的关键问题。同时,多路召回这一在搜索和推荐系统中至关重要的技术,也与向量数据库的应用紧密相连。今天,我们就来深入探讨一下 Elasticsearch 和 Milvus 的区别,并详细介绍多路召回技术,以及 JBoltAI 在这方面的强大支持。

一、Elasticsearch 和 Milvus 的区别

1. 设计理念与定位

Elasticsearch 最初是作为一个全文搜索引擎而设计的,旨在高效地处理大规模的文本数据,通过倒排索引等技术实现快速的关键词搜索。随着向量搜索需求的兴起,它通过插件等方式增加了对向量搜索的支持,但本质上还是更偏向于传统的文本搜索领域,在混合搜索场景(即同时包含关键词搜索和向量搜索需求)中有一定的应用。

Milvus 则是专门为向量搜索打造的数据库,从底层架构设计上就充分考虑了向量数据的存储和检索特点,致力于为向量相似度搜索提供极致的性能和可扩展性,在人工智能相关的应用场景,如语义搜索、图像检索、推荐系统等方面表现出色。

2. 存储架构

Elasticsearch 以倒排索引为主,向量存储依赖插件。这种存储方式对于传统文本数据的存储和检索十分高效,但在处理大规模向量数据时,由于其并非原生支持向量存储,可能会面临性能瓶颈。例如,在存储海量向量时,可能需要额外的配置和优化才能保证存储效率和检索速度。

Milvus 采用计算存储分离的架构,支持多种存储后端,如 MinIO、S3、RocksDB 等。这种架构使得 Milvus 在存储和处理大规模向量数据时具有更高的灵活性和可扩展性。例如,在处理 PB 级别的向量数据时,通过合理配置存储后端,Milvus 能够保持稳定的性能表现。

3. 索引类型与性能

Elasticsearch 仅支持 HNSW 等少数向量索引类型,且在向量索引方面相对较弱。当面对大规模向量数据的查询时,其性能会受到较大影响。例如,在处理百万级以上向量数据的查询时,响应时间可能会达到秒级甚至更长,这在一些对实时性要求较高的应用场景中是难以接受的。

Milvus 支持多种先进的索引类型,如 IVF、HNSW、SCANN 等,并且可以根据不同的应用场景选择最合适的索引类型以实现近似搜索。在查询性能方面,Milvus 表现卓越。例如,在相同规模的向量数据检索任务中,Milvus 的响应速度可能是 Elasticsearch 的数倍甚至数百倍,能够在毫秒级内返回查询结果,这使得它在对实时性要求极高的场景中具有明显优势。

4. 可扩展性

Elasticsearch 在分布式架构方面有一定的基础,但其向量扩展性相对较差。在集群规模扩大时,对于向量数据的处理能力提升有限,且在数据分片、负载均衡等方面,针对向量数据的优化不足,可能导致在大规模向量数据场景下性能不稳定。

Milvus 采用分布式架构,天生具备良好的可扩展性。通过增加节点,可以轻松应对不断增长的数据量和查询请求。例如,在电商推荐系统中,随着商品数量和用户行为数据的不断增加,Milvus 能够通过扩展集群节点来保持高效的向量检索性能,确保推荐服务的稳定性和实时性。

5. 适用场景

Elasticsearch 适合混合搜索场景,例如电商搜索中,用户既可能输入关键词进行精确查找,也可能通过向量搜索获取相似商品推荐。但在单纯的大规模向量数据处理场景中,如大规模图像检索、高维向量的深度语义匹配等,Elasticsearch 由于性能和向量处理能力的限制,并不是最佳选择。

Milvus 则在人工智能驱动的应用场景中大放异彩。如在智能安防领域,通过对海量监控视频中的图像进行向量编码并存储在 Milvus 中,可以快速检索出与目标图像相似的历史图像,实现高效的安防监控和事件追溯;在智能推荐系统中,Milvus 能够快速计算用户与商品之间的向量相似度,为用户提供精准的个性化推荐,提升用户体验和业务转化率。

二、深入理解多路召回

1. 多路召回的概念

多路召回,简单来说,就是采用不同的策略、特征或者简单模型,分别召回一部分候选集,然后再把这些候选集混合在一起,供后续排序模型使用的策略。它的核心思想是利用多种不同角度的筛选方式,尽可能全面地召回可能符合用户需求的候选数据,为后续的精准排序提供丰富的素材。

2. 多路召回的作用

在实际的搜索和推荐系统中,数据量往往极为庞大。例如,在一个拥有数百万商品的电商平台,或者包含海量文章的资讯平台中,如果直接对全量数据进行复杂的排序计算,计算量将非常巨大,难以满足实时性要求。多路召回通过快速的、相对简单的策略,从不同维度对数据进行初步筛选,能够在短时间内大幅缩小候选集的规模,同时保证召回的全面性,不至于遗漏潜在的相关数据。例如,在电商搜索中,通过一路基于商品热门程度的召回,可以快速获取当前畅销的商品;再通过一路基于用户历史行为相似性的召回,能够找到与用户过去行为模式相似的其他用户喜欢的商品。这样,通过多路召回,既提高了检索效率,又保证了召回结果的多样性和全面性,为后续排序提供了更优质的候选数据。

3. 常见的多路召回策略

1. 基于内容的召回,根据物品的属性、特征等内容信息进行召回。比如在新闻推荐中,根据新闻的关键词、类别、主题等特征,将与用户历史浏览新闻内容相似的新闻召回。例如,如果用户经常浏览科技类新闻,那么基于内容的召回会将其他科技类新闻作为候选集召回。

2. 协同过滤召回,分为基于用户的协同过滤和基于物品的协同过滤。基于用户的协同过滤是找到与目标用户兴趣相似的其他用户,然后将这些相似用户喜欢的物品召回给目标用户;基于物品的协同过滤则是计算物品之间的相似度,当用户对某个物品感兴趣时,召回与该物品相似的其他物品。比如在电影推荐中,如果用户 A 和用户 B 都喜欢电影《泰坦尼克号》,基于用户的协同过滤可能会将用户 B 喜欢的其他电影推荐给用户 A;而基于物品的协同过滤会根据电影之间的相似度,如类型、演员、导演等因素,召回与《泰坦尼克号》相似的电影,如《罗马假日》等爱情经典电影。

3. 热门物品召回,将一段时间内热度较高的物品作为候选集召回。在电商平台中,热门商品往往具有较高的关注度和购买量,将这些热门商品召回可以满足大部分用户的普遍需求,同时也能保证一定的流量和转化率。例如,在购物狂欢节期间,一些爆款商品会被通过热门物品召回策略推荐给大量用户。

​​​​​​​4. 模型召回,利用一些简单的机器学习模型或深度学习模型进行召回。比如使用双塔模型计算用户和物品的向量表示,然后通过向量相似度召回与用户向量相近的物品向量对应的物品。在实际应用中,模型召回可以利用用户的多种特征,如年龄、性别、地理位置、行为历史等,更精准地预测用户的兴趣,从而召回符合用户潜在需求的物品。

4. 多路召回结果的融合与处理

多路召回得到的多个候选集需要进行融合和进一步处理。常见的融合方式有固定配额融合,即对不同的召回支路设置不同的截断数,从每个支路中选取固定数量的候选数据;按优先级融合,设定各支路的优先级,按照优先级顺序选取候选数据;score 加权融合,对各个通道的得分进行归一化处理,然后根据通道权重做分数加权,综合考虑各支路的召回结果。融合后的候选集还可能需要进行去重、过滤等操作,以确保最终提交给排序模型的数据质量和有效性。例如,在电商推荐中,融合后的候选集中可能存在重复的商品,需要进行去重处理;对于一些不符合特定条件的商品,如库存为零的商品,需要进行过滤,以保证推荐结果的准确性和可用性。

三、JBoltAI 的强大支持

JBoltAI 作为一款先进的智能应用平台,充分支持多路召回技术以及多种向量数据库,包括 Elasticsearch 和 Milvus 等。在实际应用中,用户可以通过 JBoltAI 便捷地配置和使用多路召回策略。例如,在构建一个智能搜索系统时,用户可以在 JBoltAI 平台上轻松选择基于 Elasticsearch 进行关键词搜索召回,同时结合 Milvus 进行向量语义搜索召回,利用两者的优势,全面提升搜索的准确性和效率。

对于向量数据库的支持,JBoltAI 提供了统一的接口和管理界面,无论是使用 Elasticsearch 还是 Milvus,用户都可以在 JBoltAI 上进行高效的数据导入、索引创建、查询优化等操作。这大大降低了开发者在使用不同向量数据库时的技术门槛和开发成本。同时,JBoltAI 还具备强大的扩展性,能够根据用户的业务增长和数据量的变化,灵活地调整向量数据库的配置和多路召回策略,确保系统始终保持高性能运行。例如,当企业的业务规模扩大,数据量大幅增加时,JBoltAI 可以自动优化向量数据库的存储和检索配置,同时调整多路召回的参数,以适应新的业务需求,为企业的智能化发展提供坚实的技术保障。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐