腾讯云 ES:一站式 RAG 方案,开启智能搜索新时代

   日期:2024-12-27    作者:yingchuanghg 移动:http://3jjewl.riyuangf.com/mobile/quote/67602.html

  导读在大型语言模型(LLM)引领的革命浪潮中,搜索与大模型的紧密结合已成为推动知识进步的关键要素。作为开源搜索引擎排名第一的 Elasticsearch(ES),结合沉淀多年的文本搜索能力和强大的向量检索能力实现混合搜索,使搜索变得更准、更全、更智能。腾讯云 ES 多年来持续对开源 ES 的性能、成本、稳定性以及分布式架构进行深度增强优化,并在海量规模的云业务中接受考验。腾讯云基于 ES 实现了一站式 RAG 解决方案,具备了 RAG 技术规模化落地能力。本次分享将深入探讨腾讯云 ES 在搜索领域的最新探索,详细解析腾讯云 ES 的一站式 RAG 方案,并介绍围绕该方案架构落地所进行的一系列内核性能和稳定性增强优化措施。

  今天的介绍会围绕下面七点展开:

  1. 生活处处有搜索

  2. 初识检索模型

  3.从 Lucene 到 ES

  4. 大模型与 RAG

  5. 一站式向量检索与 RAG 方案

  6. 案例实践

  7. Q&A

  分享嘉宾|黄国航 腾讯云 大数据 ES 专家工程师

  编辑整理|向隆

  内容校对|李瑶

  出品社区|DataFun

  01

  生活处处有搜索

  为弥补这一不足,向量检索技术开始发展。向量检索通过提取对象特征,将其表示为向量,利用这些向量实现语义层面的搜索。近年来,随着大语言模型(LLM)和神经网络技术的飞速发展,我们可以借助大模型对海量知识进行搜索,并进一步生成总结性答案。这不仅拓展了搜索的深度与广度,也开启了生成式搜索的新时代。

  相比之下,生成式搜索依托大模型的强大总结能力,能够对搜索到的知识进行快速归纳整理,直接生成结构化的答案或总结内容。这种方式显著提高了学习效率,因此成为当前非常主流的学习方式。然而,生成式搜索也面临一些问题,我们将在后续章节中展开讨论。

  02

  初识检索模型

  接下来,让我们一同回顾检索模型的发展历程。

  •   基于词典的分词算法:这类算法依赖于预先定义的词典,通过匹配词典中的词条来识别和分割文本中的单词。

  •   基于概率的分词算法:这种算法不仅仅依赖词典,还结合了统计概率方法,以确定文本中单词的分界。

  •   基于机器学习的分词算法:这类算法使用机器学习技术,通过训练数据学习分词规则,以实现更准确的文本分割。

  完成分词后,我们可以构建一个从单词到文本的映射关系,这被称为倒排索引。倒排索引是一种索引结构,它允许我们快速根据关键词定位到包含这些关键词的文档,从而实现对海量数据的高效检索。这种索引机制是现代搜索引擎能够快速响应用户查询的关键技术之一。

  继布尔检索模型之后,概率空间模型应运而生。概率空间模型基于概率论,尤其是贝叶斯理论,它通过利用文档集合中的统计信息来估算文档满足用户查询的概率。这种模型的优点在于,它提供了概率解释,可以根据文档与查询之间的相关性概率进行排序。然而,它也存在一些缺点,包括参数选择和模型调整过程较为复杂,且在面对缺乏足够统计信息的小型文档集合时,其性能可能不尽如人意。

  接下来,详细介绍 TF-IDF 权重模型和向量空间模型。TF-IDF 模型主要基于词频(Term Frequency)和逆文档频率(Inverse Document Frequency)来评估一个词在文档中的重要性。这种技术目前被广泛应用于文档检索和文本挖掘领域。尽管其核心仍然是基于关键词的检索,但它的优势在于能够评估词语在文档集合中的重要性。

  向量空间模型则基于向量检索,它将文本转换为向量空间中的点,通过计算向量之间的距离或相似度来进行检索。这种模型的主要优势在于能够进行语义检索,因为它考虑了词项之间的相对关系和上下文。然而,它的缺点在于高维空间可能导致计算成本较高。此外,由于我们目前描述向量的特征维度有限,最多达到4096维,因此结果的准确性可能不如基于文本的检索方法高。这意味着在处理高维数据时,向量空间模型可能会遇到性能瓶颈,且在准确性上可能有所妥协。

  03

  从 Lucene 到 ES

  Elasticsearch 的社区非常庞大,全球有超过 10 万的社区参与者,其中在中国就有 1 万。这个数字体现了 Elasticsearch 在全球范围内的广泛受欢迎和应用。此外,Elasticsearch 的下载量达到了 3.5 亿次,在全球搜索引擎的排名中,Elasticsearch 位居第一,在全球数据库的排名中位列第七。这些排名数据源自 DB-Engines,这是一个广受认可的数据库管理系统排名网站。其排名依据涵盖多个维度,包括社区活跃度、下载量、专业出版物中的提及次数等,从而为数据库管理系统的流行度和影响力提供了权威的参考。Elasticsearch 在这些排名中的卓越表现,进一步彰显了其在全文检索和数据分析领域的重要地位。

  当前 Elasticsearch 提供了一个 ELK 套件。Elasticsearch 作为 ELK 栈的中心,主要负责数据的存储和分析。ELK 栈包括以下三个主要组件:

  •   Elasticsearch:负责存储、搜索和分析数据。它是一个强大的搜索引擎,能够处理大量数据,并提供快速的数据检索能力。

  •   Kibana:负责数据的可视化展示。Kibana 允许用户通过图表、地图和仪表板等形式直观地查看和理解 Elasticsearch 中的数据。

  •   Logstash:负责数据采集和处理。Logstash 是一个服务器端数据处理管道,可以同时从多个来源采集数据,转换数据,然后将数据发送到 Elasticsearch。

  有时,ELK 栈也会包括 Beats,这是一个轻量级的数据采集器,用于向 Elasticsearch 或 Logstash 发送数据。Beats 有多种类型,每种类型都针对特定的数据类型或使用场景进行了优化。

  ELK 栈提供了一个完整的解决方案,从数据采集、处理到存储和可视化,使得用户能够轻松地从大量数据中提取有价值的信息。这个栈因其灵活性、可扩展性和易用性而受到许多企业和开发者的青睐。

  Elasticsearch 一直是日志场景中的首选解决方案,因为它能够提供高性能的海量数据全文检索。同时,Elasticsearch 提供了商业套件 X-Pack,该套件增强了 Elasticsearch 的功能,包括数据安全、告警、监控、报表、图查询以及机器学习等高级功能。这些功能使得 Elasticsearch 不仅能够处理和检索数据,还能够提供更深层次的数据洞察和安全保障。

  04

  大模型与 RAG

  •   决策式大模型:这类模型主要根据数据输入进行决策,其规模相对较小,主要应用于人脸识别、推荐系统、风控系统等场景。它们学习数据中的条件概率分布,用于分类、预测和决策任务。

  •   生成式大模型:这类模型学习数据中的联合概率分布,用于生成新的数据实例,如文本、图像或音频。它们通常具有较大的规模,因为生成新内容需要深入洞察数据。生成式大模型通常拥有上亿甚至上万亿的参数,主要应用于智能问答、智能客服、智能写作等场景。

  其次,大模型通常拥有上亿甚至上万亿的参数,这使得每次更新都需要大量的计算资源,尤其是高性能显卡。因此,新信息的引入对于已经学习了海量数据的模型来说,短期内的少量数据基本上无法产生足够的信号来影响其输出,这使得模型更新成本极高。

  此外,许多企业的私域知识库不会暴露到公网,而大模型大多基于公网数据进行训练。这导致大模型对私域知识库的表现能力较差,限制了其在企业生产中的应用。

  ①发起问题:用户提出问题,RAG 系统首先对问题进行处理,包括改写、扩写或优化,并将其转换为向量形式,以便于后续处理。

  ②搜索文档:在 RAG 系统的知识库中进行检索,寻找与问题相关的文档或信息片段。

  ③Prompt 组装:将检索到的结果与原始问题进行整合,形成一个 prompt 提示,该提示将作为输入发送到大模型。

  ④模型生成:大模型根据 prompt 生成答案,这一步骤依赖于模型的预训练知识和检索到的外部信息。

  ⑤答案返回:生成的答案经过格式处理后,返回给用户,完成整个问答流程。

  这一流程展示了 RAG 技术如何通过结合检索和生成的方法,提升大模型在特定场景下的应用效果。

  05

  一站式向量检索与 RAG 方案

  相比之下,基于倒排索引的全文检索虽然精准度高,但语义理解能力较弱。因此,腾讯 ES 在 RAG 领域提出了一种基于混合检索的一站式解决方案,即结合向量检索和文本检索的多路召回方式,以充分发挥两者的优势,取长补短。

  接下来将详细介绍在大型项目中遇到的一些挑战。自年初开始,我们接手了内部的一个大型在线知识库项目,该项目涉及海量书籍构成的百亿级向量检索数据规模,且要求检索延迟在百毫秒以内。原生 ES 基于 HNSW 算法,这是一种主流的基于图结构的向量近似搜索算法,其优点在于召回率和性能都较高,同等召回率下性能可达 Faiss 的 20 倍。然而,其缺点在于纯内存操作,资源消耗极高。在百亿知识库的场景下,资源使用几乎无法满足,预估可能需要五六百台机器,这是一个巨大的规模。

  为了实现降本增效,我们通过对 ES 进行深度改造,核心原理是进程内存与系统 MMAP 文件映射的动态结合。具体流程如下:当数据写入内存时,首先在内存中构建上层向量索引和倒排索引,然后将细粒度的向量数据和字段信息进行持久化,编码存放到磁盘上,再通过预加载 Preload 到 MMap FS,在 MMap FS 中进行快速检索。通过这种方式,大幅降低了 HNSW 的内存资源消耗。同时,通过高效的文件编码、MMAP 文件的动态管理以及向量的标量化,提升了检索性能。

  这样做的目的是:

  •   当进程内存充足时,当纯内存向量&倒排索引检索库使用,以保证最佳的性能;

  •   当进程不足以存放全部索引时,可以利用 MMapFS 来做内存的压缩跟热索引的访问加速;

  •   当进程 + MMapFS 文件系统都存放不下全部向量索引时,此时自动降级为磁盘向量检索算法。

  这种深度改造的架构突破了传统的 HNSW 算法受内存资源的限制,只需要原本的 1/10 ~ 1/20 左右的内存就可以将向量索引全部加载进内存。向量规模越大,实际上可压缩节省的内存就越多。同时我们通过高效的文件编码、MMapFS文件的动态管理,向量的 int/byte 量化,依然保持了基本无损的写入跟查询性能。不足之处在于首次读取时预加载到 MMapFS 有一个过程,但可以通过主动触发 PreLoad 来加速这个过程。

  06

  案例实践

  •   整体数据超 10 亿级向量规模,存储成本高。早期评估的非 ES 方案,为了满足毫秒级查询,需要缓存全部数据到内存中,则 30 亿 768 维的向量,需要超过 400 台 64G 机器,运营成本百万级。

  •   运维成本高:除了全文检索,同时还需部署向量化服务,在外部进行向量化后,写入到向量数据库,同时向量数据库不存储原始文本信息,还需要额外存放到全文数据库,跟文本的索引信息,相当于需要同时四套系统。

  •   开发成本高:调试召回过程中,需要在外部进行向量化后,从向量数据库召回,然后再用召回 id 访问正排获取原始文本。相当于每一次召回调试需要 3 次操作,跨越 4 个系统。

  •   稳定性要求高:在线读书平台超亿级用户,稳定性要求 5 个 9 以上。

    •   知识向量化:通过上传自定义的 embedding 模型到腾讯云 ES 提供的机器学习节点中,实现书籍内容与搜索词的向量化(embedding)。

    •   混合搜索:腾讯云 ES 提供了全文检索与向量检索能力,只需要简单的一条查询语句,即可从 ES 中实现混合搜索与多路召回。

    •   与大模型集成:腾讯云 ES 支持通过 API 与混元大模型进行集成,深度打通混元一站式,从 ES 召回的数据,可与 Prompt 一起送进到大模型中进行生成式整合,最终完成智能问答。

    •   Kibana 调试:作为与 ES 天然集成 Web 页面,Kibana 提供了丰富的可视化能力,能帮助开发运维人员快速进行召回调试,并在 Kibana 上完成模型的部署与管理。

    •   安全高可用:腾讯云 ES 自研全链路熔断限流方案,同时支持多副本、多可用区部署,能够有效保障在线业务稳定性。

      目前腾讯 ES 已在官网上公开售卖,近期将推出 RAG 一站式服务的 AI 搜索,帮助用户直接使用一整套方案。欢迎大家试用腾讯 ES,感谢大家的关注。

      07

      Q&A

      Q:在做文本检索时会使用既有向量又有关键词的混合检索,混合检索会得到多种类型的结果,请问如何对这些结果进行重排序来选出其中高价值的结果。

      A:对于多路召回的结果第一块是一个前面介绍过的倒数排序的融合,它主要对多路的结果进行融合,例如这个例子中有两路结果,基于每一路的排名结果对最终结果进行融合。另一种是重排模型(Reranker),例如利用 LLM 大模型提供的功能对结果进行重排。


特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


举报收藏 0评论 0
0相关评论
相关最新动态
推荐最新动态
点击排行
{
网站首页  |  关于我们  |  联系方式  |  使用协议  |  隐私政策  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号