采访嘉宾|张粲宇,Zilliz 的资深产品经理、Milvus 产品负责人
在当今的 AI 时代,数据检索作为连接信息与用户需求的桥梁,正经历着前所未有的变革。数据的体量不断膨胀,多模态数据的涌现,以及用户对检索速度和质量的日益提升的需求,共同塑造了一个“多快好省”的检索趋势。这一趋势不仅要求检索系统能够处理海量数据,更要在实时性、智能化和成本效益上实现突破。然而,这一过程中也伴随着一系列技术挑战,如何高效处理大规模数据,确保检索的速度和准确性;如何提升对多模态数据的理解和整合能力,以满足复杂的检索需求;以及如何在保障数据质量的同时,实现成本的可控性,这些都是当前亟待解决的问题。
RAG(Retrieve and Generate)检索技术的出现,为这一挑战提供了新的解决思路。相比传统检索,RAG 检索从语义理解层面入手,不仅实现了相关引用材料的检索,更通过生成技术,直接提供了解决问题的答案。此外,RAG 检索在应对复杂问题时,能够进行多跳的 agentic search,效果远远优于传统检索,展现了其强大的智能性。
但实际上,RAG 检索在实际应用中,也面临着检索质量的挑战。离线过程中数据的质量,包括原始数据的准确性、信息密度和元信息的精确性,以及数据的工程处理,都直接决定了检索质量的天花板。而在线服务部分,如意图理解、检索策略和算法的优化,更是直接影响着用户体验。
不准确的意图理解会导致答非所问,增加用户的筛选负担;检索策略和算法的不合理,则会导致结果过多或过少、不相关等问题,降低查找有效信息的效率。这些挑战不仅可能导致决策误导,降低回答的有用性和有效性,还可能因引入过多模块而增加时延,影响用户的使用体验。
那么,Milvus 作为一种高性能的向量数据库,它是如何处理和解决这一系列问题的?Milvus 有哪些特性使得其在 RAG 应用中能成为解决数据问题的有力工具?
在此次 QCon 上海 2024 上,来自Zilliz的资深产品经理、Milvus 产品负责人张粲宇将分享题为《如何提升 RAG 准确率至 90%,Milvus 向量检索实践之道》的演讲。张粲宇负责制定 Milvus 产品路线图与关键特性的定义,也是 Milvus Ask AI 项目的负责人。他毕业于复旦大学,曾任 SAP HANA 内核研发,PingCAP TiDB 产品专家。多年来,他的主要研究方向为数据库内核和 AI。
RAG 场景下的数据检索问题及其挑战
InfoQ:根据您的观察,当下 AI 时代的检索趋势是什么样子的?还存在哪些技术挑战?
张粲宇:在 AI 时代,检索趋势主要呈现“多快好省”的特点。“多”即数据体量不断增大,随着技术的发展,越来越多的多模态数据被产生和使用,对检索系统的处理能力提出了更高要求;“快”指对检索实时性要求高,能够迅速响应用户检索的需求;“好”表示用户对检索效果和质量的期望不断提升,希望检索结果更加智能和聪明;“省”则意味着希望检索成本可控,低价高效。
目前仍存在一些技术挑战,例如如何高效处理大规模数据体量,确保检索的速度和准确性;如何提升对多模态和非结构化数据的理解和整合能力,以满足复杂的检索需求;以及如何保证数据质量的稳定性和可靠性,为 AI 应用提供坚实的基础。
InfoQ:您认为相比传统检索,RAG 检索有哪些显著优势?
张粲宇:相比传统检索,RAG 检索具有显著优势。传统检索通常是精准匹配的确定性检索,而 RAG 检索则从语义理解方面入手。从宏观角度看,RAG 检索颠覆了传统检索形态。检索的真正目的是解决问题,传统检索只能搜到相关材料,而 RAG 检索在搜到相关材料后会进行生成,生成的答案可以直接解决问题本身。此外,在应对复杂问题方面,RAG 检索可以进行多跳的 agentic search,效果远远优于传统检索,使其检索变得更加智能。
InfoQ:在 RAG 应用中,您认为最主要的检索质量挑战是什么?这些挑战如何影响用户体验?
张粲宇:检索质量挑战主要分为两个部分:一是离线过程中数据质量的挑战;二是在线服务部分的挑战。其中离线过程中数据质量的挑战包括:
原始数据是否正确,信息密度是否充足,元信息是否精确都影响着数据的质量,这是冰山下的部分往往容易被忽视,但又特别重要,它决定了检索质量的天花板;
数据的工程处理:能否正确解析数据,清洗并优化数据,基于合适的 chunk 和 embedding 模型做数据的 ingestion 等等。
在线服务部分的挑战则包括:
意图理解:不准确会导致答非所问,让用户失望困惑,影响使用效率;
检索策略和算法:优化不佳会出现结果过多或过少、不相关等问题,增加筛选负担或无法满足需求,rank 不合理也会降低查找有效信息的效率和体验。
而这些挑战对用户体验的影响主要有以下三个方面:
首先,可能因幻觉或错误信息导致决策误导,这是最为严重的影响。错误的决策可能给用户带来重大损失,降低用户对应用的信任。
其次,回答的有用性和有效性不足,如漏答,信息密度低等会浪费用户时间和精力。如果用户花费大量时间却得不到满足需求的结果,会降低其对应用的满意度。
最后,为提升质量和安全合规要求引入的诸多模块可能导致时延增加,从而影响用户体感。过长的等待时间会让用户感到不耐烦,降低使用体验。
InfoQ:RAG 技术部署起来成本都包括哪些方面?比如存储、计算或维护成本等,能从这些方面聊聊吗?
张粲宇:在 RAG 应用中,成本分为检索和生成两部分。生成成本按模型 token 数及调用次数计算。检索成本包括 embedding 的成本(数据量大可能涉及部署 GPU 集群)以及 infra 如 vector database 的存储成本(追求好的检索速度可能还需要较多内存)。此外,还有维护成本,包括维护 Infra 结构(如优化搜索策略、根据用户反馈调整)以及维护原始语料数据的成本。真实的成本还和用量和场景有关,有的场景数据总量极大但 QPS 很低,那重点就是优化存储;有的场景 QPS 很高但是数据量很小,那就需要用到更好的硬件如大内存和 GPU。
InfoQ:在处理敏感或私有数据时,RAG 检索是如何解决数据安全问题的?
张粲宇:在 RAG 检索中,有很多手段可以对数据安全进行全方位管理。一方面,检索库可采用完善的安全解决方案,对数据存储和传输进行加密,用户还能在本地部署数据库,确保数据不出境,保障数据隐私和安全。另一方面,RAG 中的存储库如 Milvus 可以通过基于 Role 的权限管控方式,如 RBAC,实现资源细粒度的权限访问控制(可以是 database, collection, partition 甚至是行级别的资源粒度),防止未经授权的访问,有效避免数据泄露风险。
Milvus 的应对之道
InfoQ:您也提到了当下信息检索面临的诸多挑战,那接下来我们聊一聊 Milvus 针对上述挑战有哪些应对之策。我们首先来谈一谈,元数据过滤在 Milvus 中是如何实现的?它对提升检索准确率有何具体贡献?
张粲宇:在 Milvus 中,元数据会首先根据标量进行过滤,然后在过滤出来的向量中进行向量的近似最近邻搜索,我们常常叫 pre-filtering。举例来说,如果标量有多种颜色,比如红色和蓝色等。Milvus 会先把颜色是红色的向量找出来,再在这些向量中搜索和目标向量比较近的结果。此外,我们也在索引级别和数据库系统级别做了很多工作,比如图索引连通性的优化和 partition key 的功能,来提升质量和加速元数据过滤;根据数据过滤量和实际情况也可以动态选择 filter 的策略,比如如果标量 evaluate 特别慢的话就用 post-filtering。
InfoQ:混合检索技术是如何结合不同检索策略来提升 RAG 准确率的?能否详细介绍一下技术细节?能举一些实际应用案例吗?
张粲宇:混合检索技术通过结合不同检索算法各自的优势来提升 RAG 的准确率。就像从不同角度观察事物能获得更全面的认知,混合检索技术从多个角度对信息进行搜索,相当于将二维信息转化为三维信息。一个好的混合检索技术通常包括多路召回和重排序(re-rank)两个步骤。多路召回解决的是从不同角度来检索信息,比如电商场景用户输入产品序列号可以做关键词匹配,输入一段描述也可以做语义检索,输入一张图片可以以图搜图。在重排序中,有传统的融合算法如 RRF、基于分数权重的融合,也有基于 rerank 模型或指标进行重排序的方法,以实现最终的技术目标。
在 Milvus ask AI 项目中,混合检索技术得到了实际应用,并且极大地提升了检索的最终质量。在实际操作中,如果用户的 query 以简短关键词为主,我们就提高 BM25 的权重;如果用户的问题较长且包含语义信息,则相应提升基于 dense 和 sparse 的向量检索权重。这种根据不同情况灵活调整检索策略的方法,能够更好地满足用户的多样化需求,提高检索的准确性和效率。
InfoQ:您方便透露下,在优化 RAG 检索质量的过程中,Milvus 采用了哪些算法或技术来减少误检和漏检?
张粲宇:这部分涉及的细节内容比较多,就不详细展开了,很多情况是要具体案例具体分析的,关键步骤主要是调整离线的 ingestion 和在线检索策略这两块内容。
InfoQ:接下来就是解决成本问题了,您能谈一谈冷热分层存储策略在 Milvus 中是如何实施的?这对降低存储成本有何帮助?
张粲宇:冷热分层存储 zilliz cloud 支持,社区版的 milvus 版本不支持。 冷热分层和大家熟知的概念是一样的,把热数据放在离计算更近的存储介质中,把冷数据放在对象存储中,前者对应 IO 延时会大约比后者低一到两个数量级,但每 GB 成本相比后者会高出 3 个数量级以上。我们在系统实现上通过优化索引类型和调度算法来尽可能在成本和性能的 tradoff 中取得满足用户需求的最优解。
InfoQ:能否分享一些具体的案例或数据,展示 Milvus 在降低 RAG 系统成本方面的成效?
张粲宇:在降低 RAG 系统成本方面,Milvus 针对数据量较大,热点数据集中且用户访问 QPS 较低的应用场景,采用分层存储架构进行数据的冷热分离。这套方案在存储成本方面成效显著,最多可降低 50 倍的存储成本。通过这套方案和工程优化,我们在云上 serverless 集群基于 MSMARCO 数据集在和同类产品 P* 进行对比的实测表明,在 recall 一致的情况下,我们 QPS 超过 Pinecone 3 倍多,而成本只有他们的 1/2。
InfoQ:聊完成本问题,我们再来聚焦下安全问题。Milvus 的多租户机制是如何保障不同用户数据的安全性和隔离性的?细粒度权限管控在 Milvus 中是如何实现的?这对于保护敏感数据有何重要意义?
张粲宇:以 zilliz cloud serverless 为例,每个租户对应唯一的 namespace,namespace 之间的数据相互不可见,每个租户需要通过身份校验和鉴权后才能访问 namespace 来保证隔离和安全。租户数据量较小时和其他租户共享计算和存储资源,当数据量增大到 50M 768dim 以上且请求流量较大时,serverless 会自动调度隔离,隔离后独享计算和存储资源,当数据量变小时会走自动缩容回到共享资源模式。
在 Milvus 中,细粒度权限管控通过角色和 privilege 权限(即 RBAC 方式)实现。资源权限分为可读、可写、可管理等。用户通过绑定角色,将权限赋予角色来进行细粒度管理。细粒度包括数据库级别、集合/表级别、分区级别,通过额外添加权限数组列也可以做到行级别的数据管控。
这对于保护敏感数据具有重要意义。首先,不同级别的权限管控可以确保只有授权用户能够访问特定级别的数据,防止未经授权的访问和数据泄露。例如,对于敏感的数据库,可以限制只有特定角色的用户具有读写权限,而其他用户只能进行只读访问或无法访问。其次,行级别的管控可以更加精确地控制对敏感数据的访问,确保只有真正需要的用户能够查看和修改特定行的数据,进一步增强了数据的安全性。
InfoQ:我了解到 Milvus 推出了自己的 Ask AI,检索准确率提升至 90%。请详细介绍 Milvus Ask AI 系统的设计架构,包括关键技术组件和它们之间的交互方式。
张粲宇:这个会在演讲中包含,这里是一张整体的架构图。
InfoQ:在提升 RAG 准确率至 90%的过程中,Milvus Ask AI 遇到了哪些技术难题?是如何克服的?
张粲宇:以下是一些典型问题,
幻觉问题:
难题:AIGC 的幻觉问题无法根治,导致部分回答不准确甚至有误导性。
解决方法:优先解决语料问题,通过补充和完善文档,减少信息缺失。同时,提高回答的置信度阈值,虽然这降低了幻觉的发生率,但也增加了 AI 拒绝回答的几率。
意图识别问题:
难题:AI 在复杂的查询场景中可能无法准确理解用户意图。
解决方法:按需补充特定场景的文档,为大语言模型(LLM)提供准确的指引。同时,利用 prompt 技术对用户查询进行改写,以便更好地处理多跳问题(涉及多个推理步骤的问题)。此外,还考虑引入更新的模型,如从 GPT-4 升级到 Claude 3.5,以增强意图识别的能力以及降低幻觉。
检索问题:
难题:AI 始终无法检索到最优结果,导致信息不完整或不准确。
解决方法:加强文档组织结构和元数据管理,提升高质量语料的权重,并定期更新文档库。结合使用混合检索、多路召回和重排策略,从多个候选答案中选出最优结果,并根据实际案例逐步优化检索流程。
InfoQ:能否分享一些实际运行中的效果数据,比如准确率、召回率、响应时间等关键指标?
张粲宇:端到端的准确率主要是通过专家来评估的,总体准确率是超过 90% 的;milvus 的向量数据召回率一直是在 99% 以上,而响应时间也是根据问题来的,单个 search 的平均 latency 在 10ms 级别,hybrid search 会稍微高一些但不超过 100ms,而端到端的检索时间 P99 控制在 300ms 以内,不会影响用户体验。
向量检索与 RAG 的未来发展
InfoQ:您认为未来向量检索技术会有哪些重要的发展方向或趋势?
张粲宇:首先,与 AI 模型更紧密结合,这将使检索更加智能。通过与先进的人工智能模型深度融合,向量检索技术能够更好地理解用户需求和数据特征,提供更精准、个性化的检索结果。
其次,随着多模态和 AIGC 带来的数据量膨胀,对系统可扩展性以及大规模数据存储和管理成本的需求将进一步凸显。这意味着向量检索技术需要不断优化架构,提高处理大规模数据的能力,同时降低存储和管理成本,以适应不断增长的数据规模。
最后,应用场景将进一步下沉,从传统的搜广推以及 RAG 应用拓展到更多传统行业和 AI 落地的场景。随着技术的不断发展和普及,向量检索技术将在更多领域发挥重要作用,为不同行业的企业和用户提供高效的信息检索解决方案。
InfoQ:多模态 RAG 检索将如何改变现有的信息检索格局?Milvus 在这方面有哪些布局或计划?
张粲宇:多模态 RAG 检索将极大地改变现有的信息检索格局。由于其更贴近人类感官感知世界的方式,信息来源更加丰富多元,使得搜索体验更加智能,更符合人类的体感。在这方面,Milvus 已经迈出了重要的一步,在 Milvus 2.4 中推出了多向量列和混合检索功能。未来,Milvus 计划更好地支持多模态模型,将其集成到 API 当中,提升非结构化和多模态数据的存取和管理能力。同时,进一步优化架构,提升系统的稳定性和可扩展性,为多模态数据的爆发提供坚实的技术支撑。这将为用户带来更加高效、智能的信息检索体验,推动信息检索领域向更加多元化和智能化的方向发展。
InfoQ:随着 AI 技术的不断进步,您认为 RAG 系统在未来可能会面临哪些新的挑战和机遇?
张粲宇:最近 RAG 也在快速迭代中,比如:
• Graph RAG 虽能解决宏观和复杂多跳问题,但存在成本高且数据更新困难等问题。
• OpenAI 新模型 o1 在 LLM 生成结果过程中加入反思和搜索等步骤,极大提升了模型推理能力,但也带来了为海量信息做索引、提升海量信息下数据检索效率及管理成本的挑战。
• Anthropic 提出的 contextual RAG,将大模型的总结和语义能力以及诸多工程优化融入 RAG 中提升检索质量,进一步证明了 RAG 是一个体系工程,质量提升的背面是复杂度的增加。
不断涌现的新技术为 RAG 系统的创新提供了思路和方向。人们对检索准确率的不懈追求促使 RAG 系统持续优化升级,可在提升大规模数据下的准确率和效率方面不断探索,从而获得更大的发展空间。
InfoQ:Milvus 在未来是否会继续深化与 AI 模型的集成,以进一步提升 RAG 的智能化水平?
张粲宇:Milvus 在未来肯定会继续深化与 AI 模型的集成以提升 RAG 的智能化水平。一方面,会探索功能更强的 AI 模型,包括 embedding,reranking 以及多模态等各类模型,结合客户实际的场景需求发挥 AI 的优势能力。另一方面,在产品规划方面,我们正在将 AI 模型的集成嵌入到 Milvus 的使用当中,让用户能够方便地管理非结构化数据,通过 AI 模型将其转化为向量数据,并在搜索向量数据时能够调用 Rerank 模型以获得更好的结果。
评论 2 条评论