🚀 免费试用 Zilliz Cloud,完全托管的 Milvus,体验 10 倍的性能提升!立即试用>

milvus-logo
LFAI

HomeBlogsElasticsearch 已死,词法搜索万岁

Elasticsearch 已死,词法搜索万岁

  • Engineering
December 17, 2024
James Luan

现在,每个人都知道混合搜索提高了RAG(检索增强生成)搜索的质量。虽然密集 Embeddings搜索在捕捉查询和文档之间的深层语义关系方面表现出了令人印象深刻的能力,但它仍有明显的局限性。这些限制包括缺乏可解释性,以及在处理长尾查询和稀有术语时性能不佳。

许多 RAG 应用之所以举步维艰,是因为预先训练的模型往往缺乏特定领域的知识。在某些情况下,简单的 BM25 关键字匹配就能胜过这些复杂的模型。这就是混合搜索的优势所在,它将密集向量检索的语义理解与关键词匹配的精确性结合在一起。

为什么混合搜索在生产中很复杂

虽然像LangChainLlamaIndex这样的框架可以轻松构建概念验证型混合检索器,但将其扩展到大规模数据集的生产却具有挑战性。传统的架构需要单独的向量数据库和搜索引擎,这导致了几个关键的挑战:

  • 高昂的基础设施维护成本和操作复杂性

  • 跨多个系统的数据冗余

  • 数据一致性管理困难

  • 跨系统的安全和访问控制复杂

市场需要一种统一的解决方案,既能支持词法和语义搜索,又能降低系统复杂性和成本。

Elasticsearch 的痛点

Elasticsearch 是过去十年中最具影响力的开源搜索项目之一。它基于 Apache Lucene 构建,凭借其高性能、可扩展性和分布式架构而广受欢迎。虽然它在 8.0 版中增加了向量 ANN 搜索,但生产部署仍面临几个关键挑战:

高更新和索引成本:Elasticsearch 的架构不能完全解耦写入操作、索引构建和查询。这导致在写操作过程中,尤其是批量更新时,CPU 和 I/O 开销巨大。索引和查询之间的资源争用会影响性能,成为高频更新场景的主要瓶颈。

实时性差:作为一种 "接近实时 "的搜索引擎,Elasticsearch 在数据可见性方面引入了明显的延迟。对于 Agents 系统等人工智能应用来说,这种延迟尤其成问题,因为在这些应用中,高频率的交互和动态决策需要即时的数据访问。

分片管理困难:虽然 Elasticsearch 使用分片来实现分布式架构,但分片管理带来了巨大挑战。缺乏动态分片支持造成了两难境地:小数据集中的分片过多会导致性能低下,而大数据集中的分片过少则会限制可扩展性并造成数据分布不均。

非云原生架构:Elasticsearch 是在云原生架构流行之前开发的,其设计将存储和计算紧密结合在一起,限制了它与公共云和 Kubernetes 等现代基础架构的集成。资源扩展需要同时增加存储和计算资源,从而降低了灵活性。在多副本场景中,每个分片都必须独立建立索引,从而增加了计算成本,降低了资源效率。

向量搜索性能差:虽然 Elasticsearch 8.0 引入了向量 ANN 搜索,但其性能明显落后于 Milvus 等专用向量引擎。基于 Lucene 内核,其索引结构在处理高维数据时效率低下,难以满足大规模向量搜索的要求。在涉及标量过滤和多租户的复杂情况下,其性能尤其不稳定,这使其难以支持高负荷或多样化的业务需求。

资源消耗过大:Elasticsearch 对内存和 CPU 的要求极高,尤其是在处理大规模数据时。其对 JVM 的依赖性要求频繁调整堆大小和调整垃圾收集,严重影响了内存效率。向量搜索操作需要密集的 SIMD 优化计算,而 JVM 环境远非理想。

随着企业扩展其人工智能基础架构,这些基本限制变得越来越成问题,这使得 Elasticsearch 对于要求高性能和高可靠性的现代人工智能应用来说尤其具有挑战性。

Milvus 2.5在 2.4 版推出的混合搜索功能基础上,通过 Sparse-BM25 引入了本地词法搜索支持。这一创新方法包括以下关键组件:

  • 通过 Tantivy 进行高级标记化和预处理

  • 分布式词汇和词频管理

  • 使用语料库 TF 和查询 TF-IDF 生成稀疏向量

  • 使用 WAND 算法支持反索引(Block-Max WAND 和图索引支持正在开发中)

与 Elasticsearch 相比,Milvus 在算法灵活性方面具有显著优势。其基于向量距离的相似性计算可实现更复杂的匹配,包括实施基于 "端到端查询术语加权 "研究的 TW-BERT(术语加权 BERT)。这种方法在域内和域外测试中都表现出了卓越的性能。

另一个关键优势是成本效益。通过利用倒排索引和密集嵌入压缩,Milvus 实现了五倍的性能提升,而召回率下降不到 1%。通过尾端剪枝和向量量化,内存使用量减少了 50%以上。

长查询优化是 Milvus 的一大优势。传统的 WAND 算法在处理长查询时非常吃力,而 Milvus 则通过将稀疏嵌入与图索引相结合,在高维稀疏向量搜索场景中实现了十倍的性能提升。

Milvus:RAG 的终极向量数据库

Milvus 功能全面,是 RAG 应用程序的首选。主要优势包括

  • 丰富的元数据支持,具有动态 Schema 功能和强大的过滤选项

  • 企业级多租户,通过 Collections、分区和分区 Key 实现灵活隔离

  • 业内首创的磁盘向量索引支持,提供从内存到 S3 的多层存储

  • 云原生可扩展性,支持从 10M 到 1B+ 向量的无缝扩展

  • 全面的搜索功能,包括分组、范围和混合搜索

  • 与 LangChain、LlamaIndex、Dify 和其他人工智能工具的深度生态系统集成

系统的多种搜索功能包括分组、范围和混合搜索方法。与 LangChain、LlamaIndex 和 Dify 等工具的深度集成,以及对众多人工智能产品的支持,使 Milvus 成为现代人工智能基础设施生态系统的中心。

展望未来

随着人工智能从 POC 过渡到生产,Milvus 将继续发展。我们专注于使向量搜索更易于使用、更具成本效益,同时提高搜索质量。无论您是初创公司还是企业,Milvus 都能降低人工智能应用开发的技术壁垒。

对可访问性和创新的承诺使我们又向前迈进了一大步。虽然我们的开源解决方案仍是全球成千上万应用的基础,但我们认识到,许多企业需要一个完全托管的解决方案,以消除操作开销。

Zilliz Cloud:托管解决方案

在过去三年中,我们在 Milvus 的基础上构建了完全托管的向量数据库服务Zilliz Cloud。通过对 Milvus 协议的云原生重新实施,它提供了更高的可用性、成本效率和安全性。

借鉴我们维护全球最大向量搜索集群和支持数千名人工智能应用开发人员的经验,与自托管解决方案相比,Zilliz Cloud 大大降低了操作符和成本。

准备好体验向量搜索的未来了吗?立即开始免费试用,无需信用卡,最高可获得 200 美元积分。

Like the article? Spread the word

扩展阅读