ES已死,文本检索永生

news2024/12/26 4:10:40

48be2f700a468fd41b2cce09beb1237a.png

0d040212ef0a3a1f38b05d013a285ee3.png

长期以来,混合查询(Hybrid Search)一直是提升 RAG(Retrieval-Augmented Generation)搜索质量的重要手段。尽管基于密集向量(Dense Embedding)的搜索技术随着模型规模和预训练数据集的不断扩展,在构建 query 和文档之间的深层次语义交互方面展现出令人瞩目的性能,但其仍存在一些显著局限性,例如可解释性不足,以及在处理长尾查询(long-tail queries)和稀有词条(rare terms)时效果欠佳。

对于许多 RAG 应用来说,预训练模型往往缺乏基于领域知识的语料支持,在某些场景下,其性能甚至不及基于 BM25 的关键词匹配检索。在此背景下,混合查询结合了密集向量检索的语义理解能力和关键词匹配的精确性,为解决这些问题提供了更高效的方案,成为提升搜索效果的关键技术。

01.

混合检索很好,但也很复杂

利用 LangChain 或 LlamaIndex 等框架,快速构建一个用于 POC(概念验证)的 Hybrid Retriever 相对简单。然而,构建一个面向海量数据的生产级解决方案则充满挑战。通常情况下我们需要使用专门的Vector Database进行高效的语意检索,同时还需要传统搜索引擎进行关键词检索,以下是一个生产可用的混合检索系统的架构示意图:

d32c24eddf6348817bb24511ba88cf03.jpeg

这种架构虽然显著提升了搜索质量,但也带来了以下维护上的复杂性:

  • 高昂的基础设施维护成本

  • 数据冗余存储

  • 数据一致性维护困难

  • 安全性和访问控制难以统一

...

采用一套同时支持lexical和semantic search,在提升RAG应用的搜索质量降低系统的维护复杂度和成本,已经成了RAG开发者的迫切诉求。

02.

ES用于检索的工程化泥潭

ElasticSearch 是过去十年搜索领域最具影响力的开源项目之一。基于 Apache Lucene 构建,它凭借高性能、高扩展性和分布式架构广受欢迎。作为一款功能强大的搜索引擎解决方案,ElasticSearch 不仅在全文检索方面表现优异,还在 8.0 版本中引入了向量 ANN 检索功能,大幅降低了实现混合检索的技术门槛。然而,当基于 ElasticSearch 的方案投入生产环境后,往往会面临以下挑战:

数据更新与索引代价高

ElasticSearch 在处理写操作时的开销较大,尤其是在大批量数据更新的场景中。由于其架构设计中数据写入、索引构建和查询未能完全解耦,写操作会显著消耗 CPU 和 IO 资源,严重影响查询性能。对于实时性要求较高或高频更新的业务场景,这种资源竞争和性能损耗成为优化的主要瓶颈。

数据实时性差

ElasticSearch 是一种“近实时”搜索引擎,数据的可见性存在一定延迟。对于部分 AI 应用场景(如 Agent 系统),这种延迟可能会导致实时性不足,难以满足高频交互或动态决策的需求。

分片维护困难,扩展性差

ElasticSearch 使用分片机制来支持分布式架构,但分片管理对用户来说极具挑战。ES未能支持动态分片,在小数据量场景下,分片数量过多可能导致性能不足;而在大数据量场景下,分片数量过少则会限制扩展性,容易出现数据分布不均衡的问题。。

架构非云原生

ElasticSearch 的诞生早于云原生架构的普及,其设计将存储与计算紧密耦合,缺乏与公有云和 Kubernetes(K8s)等现代基础设施的深度整合。在需要扩展资源时,用户不得不同时增加存储和计算资源,灵活性较差。此外,在多副本(Replica)场景下,每个分片都需要独立构建索引,这进一步增加了计算成本,降低了资源利用效率。

向量检索性能低

虽然 ElasticSearch 在 8.0 版本中引入了向量 ANN 检索功能,但其性能与专为向量检索设计的引擎(如 Milvus)相比仍存在显著差距。ElasticSearch 的向量检索基于 Lucene 内核,采用的索引结构在高维数据场景下效率较低,难以满足大规模向量检索的性能需求。此外,在关键场景中,如标量过滤、多租户等复杂应用场景,ElasticSearch 的性能表现更容易出现不稳定,难以支持高负载或多样化的业务需求

资源消耗过高

ElasticSearch 对内存和 CPU 的需求极为苛刻,特别是在处理大规模数据时。其运行依赖 JVM(Java Virtual Machine),需要频繁调整堆内存大小和垃圾回收策略,大大降低了内存的使用效率。与此同时,向量检索对计算性能要求极高,涉及大量 SIMD优化计算,而 JVM 并非处理这些任务的理想环境。

03.

Sparse-BM25,混合检索的未来

Milvus 2.4 引入了稀疏嵌入向量检索,支持类似 Splade 的稀疏向量与稠密向量的混合查询能力,显著提升了搜索质量。然而,诸如 Splade 和 BGE-M3 的预训练模型仍然基于 Bert 等框架构建,有时难以完全适配用户语料库的实际数据分布,在处理长尾查询和罕见词汇时仍存在一定挑战。因此,引入对传统算法(如 BM25)的支持,成为社区呼声较高的优化方向。

在此基础上,Milvus 2.5 创新性地提出了基于稀疏向量的 BM25 检索能力,通过内置的 Sparse-BM25 对 Lexical 检索提供了原生支持,具体包括以下功能:

  • 分词和数据预处理:基于开源搜索库 Tantivy 实现,包括词干提取、词形还原和停用词过滤等功能。

  • 分布式词表和词频统计:高效支持大规模语料的词频管理与计算。

  • 稀疏向量生成与相似度计算:通过语料库的词频(Corpus TF)构建稀疏向量,并基于查询词频(Query TF)和全局逆文档频率 (IDF) 构建查询稀疏向量,再通过特定的 BM25 距离函数进行相似度计算。

  • 倒排索引支持:实现基于 WAND 算法的倒排索引,同时 Block-Max WAND 算法和图索引的支持也在开发中。

36555ca52cfc5841eef7d6ad6a98ad76.jpeg

相比于 Elasticsearch,Milvus的关键词搜索具有以下显著优势:

  • 算法灵活性

Milvus 将相似度计算转化为向量距离计算,支持更复杂的查询和语料库距离分析。基于论文《End-to-End Query Term Weighting》的研究,Milvus 实现了 Term Weighting BERT(TW-BERT)算法,该算法通过 BERT 模型推断查询中的 n-gram 术语权重,并利用这些权重构建查询表示。结合 BM25 对候选文档的相关性进行计算。与传统基于词项(token)的 BM25 方法相比,TW-BERT 在域内(In-Domain)和域外(Out-Domain)测试中均表现出显著的性能提升。

  • 成本优势

Milvus 通过稀疏向量实现词法搜索,不仅能够利用传统倒排索引的压缩技术,还支持密集嵌入(Dense Embedding)的有损压缩。通过对长尾词进行剪枝和向量量化,Milvus 实现了性能提升超过 5 倍,并在召回率下降不到 1% 的前提下将内存占用减少了 50%以上。同时,未来版本将继续优化数据压缩,进一步降低存储成本和查询 I/O。

  • 针对长查询的优化

传统搜索引擎广泛使用 WAND(Weak AND)技术优化倒排索引查询,通过跳过不相关文档提高效率。然而,WAND 在长查询场景中受限于倒排列表交叉过多和剪枝效率下降的问题。

Milvus 通过稀疏嵌入结合图索引(如 HNSW)显著提升长查询的性能。在 50 维以上稀疏向量搜索场景中,图索引相较传统倒排索引实现了超过 10 倍的性能提升。

04.

Milvus如何成为RAG落地的标配

Milvus 不仅提供更强大的关键词搜索功能,更是构建 RAG 应用时的首选向量数据库。以下是其核心优势:

  • 丰富的元数据:支持动态 Schema 和强大的过滤功能,搭配多种索引选项,为数据管理和检索提供了极大的灵活性。

  • 多租户支持:针对 RAG 应用的多租户需求,Milvus 提供了基于 Collection、Partition 和 Partition Key 等多种粒度的多租户实现,满足不同业务场景的隔离需求。

  • 分层存储

    • Milvus 是首个支持磁盘向量索引的开源数据库,大幅降低了向量存储的成本。

    • 当前分层存储架构已覆盖内存、本地磁盘到 S3 等多层存储体系,并将持续优化。

    • 向量存储成本昂贵,建议认真核算你的使用成本!

  • 云原生架构,轻松扩展:基于 Kubernetes 和存算分离的云原生设计,Milvus 能轻松扩展至百亿规模向量,并支持最大千亿级向量的部署。借助云基础设施的弹性,我们实现了从1千万数据逐步插入并自动扩缩容到10亿向量。

  • 多样化的搜索模式:提供 Grouping Search、Range Search 和 Hybrid Search 等多种搜索能力,满足更丰富的检索需求。

  • 强大的生态集成:除了与 LangChain、LlamaIndex 和 Dify 等常见中间件深度整合,Milvus 还无缝支持数十款 AI 产品,详细信息可参考集成概览(https://blog.milvus.io/docs/integrations_overview.md)

在这过去的一年里,我们亲眼见证了 AI 技术的快速发展。从最初的概念验证(POC)到成熟的生产环境,越来越多的企业正在将 AI 智能真正融入业务流程。Milvus 正是这一转型浪潮中的关键支撑者。我们提供从嵌入式到单机,再到分布式的多样化部署方案,旨在帮助企业最快速地实现从创意孵化到开发落地,再到规模生产的全流程转型。无论是初创公司还是大型企业,Milvus 都致力于降低 AI 应用的技术门槛,让创新更加触手可及。

接下来,Milvus社区将围绕“存的起,看得见”这两大关键词持续发力,持续提升搜索体验和向量存储的极致成本。

05.

写在最后

我们基于开源 Milvus 构建了 Zilliz Cloud,这是一款全托管的向量数据库服务。通过采用云原生设计理念,我们重新实现了 Milvus 协议,使其在易用性、成本效益和安全性上实现了全面提升。

对于仍然受困于 Elastic Search 高额账单的企业,对于为向量检索服务的扩展性和稳定性而担忧的团队,以及那些关心 RAG 应用搜索质量和性能的开发者,Zilliz Cloud 将是你们的理想选择。现在,正是拥抱创新技术的最佳时机。

作为 Milvus 的开发团队,我们深谙构建和维护一个稳定且高性能的向量检索服务的复杂性。我们维护了全球最大规模的向量检索集群,也支持了数以千计的AI应用开发者。基于这些丰富的实践经验,Zilliz Cloud 不仅显著降低了自托管向量服务的运行成本,更重要的是,它帮助用户彻底摆脱繁琐的运维工作。

点击下方“阅读原文”即可免费开始体验Zilliz Cloud。无需信用卡,您的首 100 美金费用由我们承担。

作者介绍

589f7d5d8a3a2d91941a7f7f5febbfd3.jpeg

栾小凡

Zilliz 合伙人和研发 VP

LF Al & Data 基金会技术咨询委员会成员

推荐阅读

6f90b45b959491f30b1d2161017bd4c7.png

44157d3776fd29d22d0bda1de09281ba.png

1c559aa77e905c207fd65ba4ac107a64.png

9e9e7b7815f8135d3d32379cdd220875.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2265615.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

K线单边突破指标(附带源码)

编写需求: 今天我们来根据粉丝要求进行源码复现: 【请根据最近两根K线判断当下的行情做多,做空方向。用三个价格判断当前K线状态,最高价、最低价、收盘价都大于昨日对应价格,为上涨K线。用三个价格判断当前K线状态&a…

基于Springboot的在线问卷调查系统【附源码】

基于Springboot的在线问卷调查系统 效果如下: 系统主页面 问卷列表页面 个人中心页面 系统登陆页面 管理员主页面 问卷管理页面 研究背景 随着互联网技术的飞速发展,传统的问卷调查方式因其时间和地点的限制,难以高效地收集到足够的数据。…

SpringBoot状态机

Spring Boot 状态机(State Machine)是 Spring Framework 提供的一种用于实现复杂业务逻辑的状态管理工具。它基于有限状态机(Finite State Machine, FSM)的概念,允许开发者定义一组状态、事件以及它们之间的转换规则。…

Redis基础知识分享(含5种数据类型介绍+增删改查操作)

一、redis基本介绍 1.redis的启动 服务端启动 pythonubuntu:~$ redis-server客户端启动 pythonubuntu:~$ redis-cli <127.0.0.1:6379> exit pythonubuntu:~$ redis-cli --raw //(支持中文的启动方式) <127.0.0.1:6379> exit2.redis基本操作 ping发送给服务器…

Pytorch注意力机制应用到具体网络方法(闭眼都会版)

文章目录 以YoloV4-tiny为例要加入的注意力机制代码模型中插入注意力机制 以YoloV4-tiny为例 解释一下各个部分&#xff1a; 最左边这部分为主干提取网络&#xff0c;功能为特征提取中间这边部分为FPN&#xff0c;功能是加强特征提取最后一部分为yolo head&#xff0c;功能为获…

交通控制系统中的 Prompt工程:引导LLMs实现高效交叉口管理 !

本研究提出了一种新型的交通控制系统方法&#xff0c;通过使用大型语言模型&#xff08;LLMs&#xff09;作为交通控制器。该研究利用它们的逻辑推理、场景理解和决策能力&#xff0c;实时优化通行能力并提供基于交通状况的反馈。LLMs将传统的分散式交通控制过程集中化&#xf…

产品升级!Science子刊同款ARGs-HOST分析,get!

凌恩生物明星chanpin 抗性宏基因-宿主分析 Science子刊同款分析 数据挖掘更进一步&#xff01; 抗生素的大量使用与滥用使微生物体内编码抗生素抗性的基因在环境中选择性富集&#xff0c;致病菌通过基因突变或者水平基因转移获得抗生素抗性基因后&#xff0c;导致抗生素治疗…

Python8-写一些小作业

记录python学习&#xff0c;直到学会基本的爬虫&#xff0c;使用python搭建接口自动化测试就算学会了&#xff0c;在进阶webui自动化&#xff0c;app自动化 python基础8-灵活运用顺序、选择、循环结构 写一些小练习题目1、给一个半径&#xff0c;求圆的面积和周长&#xff0c;…

四相机设计实现全向视觉感知的开源空中机器人无人机

开源空中机器人 基于深度学习的OmniNxt全向视觉算法OAK-4p-New 全景硬件同步相机 机器人的纯视觉避障定位建图一直是个难题&#xff1a; 系统实现复杂 纯视觉稳定性不高 很难选到实用的视觉传感器 为此多数厂家还是采用激光雷达的定位方案。 OAK-4p-New 为了弥合这一差距…

Diagramming AI: 使用自然语言来生成各种工具图

前言 在画一些工具图时&#xff08;流程图、UML图、架构图&#xff09;&#xff0c;你还在往画布上一个个的拖拽组件来进行绘制么&#xff1f;今天介绍一款更有效率的画图工具&#xff0c;它能够通过简单的自然语言描述来完成一个个复杂的图。 首页 进入官网之后&#xff0c;我…

springboot启动不了 因一个spring-boot-starter-web底下的tomcat-embed-core依赖丢失

这个包丢失了 启动不了 起因是pom中加入了 <tomcat.version></tomcat.version>版本指定&#xff0c;然后idea自动编译后&#xff0c;包丢了&#xff0c;删除这个配置后再也找不回来&#xff0c; 这个包正常在 <dependency><groupId>org.springframe…

“笃威尔数字技术”受邀出席2024 H-Tech Data创新情报论坛!

​ 2024年12月20日&#xff0c;以“创新情报 向新而行”为主题的2024 H-Tech Data创新情报论坛暨创新情报专业委员会成立仪式在深圳成功举办。本次大会由中国科学技术情报学会主办&#xff0c;由深圳国家高新技术产业创新中心牵头承办&#xff0c;旨在围绕技术赋能、场景应用、…

Android Studio 的革命性更新:Project Quartz 和 Gemini,开启 AI 开发新时代!

&#x1f31f; Android Studio 的革命性更新&#xff1a;Project Quartz 和 Gemini&#xff0c;开启 AI 开发新时代&#xff01; 在这个技术飞速发展的时代&#xff0c;Android 开发者们迎来了两项重大更新&#xff1a;Project Quartz 和 Gemini。这不仅仅是更新&#xff0c;而…

kkfileview代理配置,Vue对接kkfileview实现图片word、excel、pdf预览

kkfileview部署 官网&#xff1a;https://kkfileview.keking.cn/zh-cn/docs/production.html 这个是官网部署网址&#xff0c;这里推荐大家使用docker镜像部署&#xff0c;因为我是直接找运维部署的&#xff0c;所以这里我就不多说明了&#xff0c;主要说下nginx代理配置&am…

RT-DETR学习笔记(2)

七、IOU-aware query selection 下图是原始DETR。content query 是初始化为0的label embedding, position query 是通过nn.Embedding初始化的一个嵌入矩阵&#xff0c;这两部分没有任何的先验信息&#xff0c;导致DETR的收敛慢。 RT-DETR则提出要给这两部分&#xff08;conten…

iOS 苹果开发者账号: 查看和添加设备UUID 及设备数量

参考链接&#xff1a;苹果开发者账号下添加新设备UUID - 简书 如果要添加新设备到 Profiles 证书里&#xff1a; 1.登录开发者中心 Sign In - Apple 2.找到证书设置&#xff1a; Certificate&#xff0c;Identifiers&Profiles > Profiles > 选择对应证书 edit &g…

汽车IVI中控开发入门及进阶(47):CarPlay开发

概述: 车载信息娱乐(IVI)系统已经从仅仅播放音乐的设备发展成为现代车辆的核心部件。除了播放音乐,IVI系统还为驾驶员提供导航、通信、空调、电源配置、油耗性能、剩余行驶里程、节能建议和许多其他功能。 ​ 驾驶座逐渐变成了你家和工作场所之外的额外生活空间。2014年,…

Oracle、ACCSEE与TDMS的区别

Oracle、ACCSEE和TDMS都是不同类型的数据管理和存储工具&#xff0c;它们各自有独特的用途、结构和复杂性。Oracle是一个功能强大的关系型数据库管理系统&#xff0c;适用于大规模企业级应用&#xff0c;支持复杂查询和事务管理。ACCSEE主要应用于实时数据采集和过程监控&#…

商场消防电气控制系统设计(论文+源码)

1系统的功能及方案设计 如图2.1所示为本次设计的整体框图&#xff0c;其中单片机部分采用ST89C52来负责协调各个模块&#xff1b;液晶选择LCD1602液晶屏来显示信息;温度传感器选择PT1000进行温度的检测&#xff1b;烟雾传检测选择MQ2烟雾传感器&#xff1b;CO2检测选择CCS811模…

7. petalinux 根文件系统配置(package group)

根文件系统配置&#xff08;Petalinux package group&#xff09; 当使能某个软件包组的时候&#xff0c;依赖的包也会相应被使能&#xff0c;解决依赖问题&#xff0c;在配置页面的help选项可以查看需要安装的包 每个软件包组的功能: packagegroup-petalinux-audio包含与音…