AI 时代的阅读革新!微信读书基于腾讯云 ES 的“AI 问书”RAG 最佳实践
引言
当我们需要深入了解一个知识点时,我们可能会通过阅读大量的书籍进行总结,或者是通过浏览器搜索相关的文章,不论是哪种方式,都需要我们花很多时间去进行知识过滤与提取,那么,有没有一个方案,能够让我们能够快速的了解该知识点的含义,并标注来源与作者以及进行关联内容推荐呢?
答案是肯定的,微信读书作为全民阅读的首选平台,最新上线了 AI 问书功能,只需要简单的输入搜索词, AI 问书即可快速的从海量书籍中进行知识检索与生成,返回针对该搜索词的释义与来源,并生成与用户提问相关的问题供用户进一步提问,为用户带来全新的阅读体验。
而实现“ AI 问书”的关键技术,则是检索增强生成( Retrieval Augmented Generation,RAG ),通过结合外部知识库与生成模型,即可借助 AI 从书籍中获得解释和回答,重塑内容的分发与呈现。本文将从 AI 问书的功能介绍出发,介绍其实现过程中的核心挑战与痛点以及基于腾讯云 ES 的一站式 RAG 方案及其价值。
微信读书 AI 问书探索之旅
微信读书自 2015 年上线至今,已经积累 2.1 亿用户,日活超过 200w ,并从传统书籍衍伸到有声读物领域。伴随着用户量的增长,微信读书也在结合 AI 能力提高用户体验上做了很多的尝试:
/ 1.0 阶段:AI 提取书籍标签
当用户搜索命中关键词则呈现相关结果,缺点如下:
● 标签词数量与用户搜索词差距大。
● 无法表达复杂语义,如组合词、多义词、开放式问题。
● 一本书关键词多,难以判断质量,例如一本《三体》数千关键词难以评估相关性。
● 标签与出版社分类一致,难以获得在线阅读新鲜体验感。
/ 2.0 阶段:AI 观点提取
召回不同句子判断是否作为观点与知识展示与引导,缺点如下:
● 无法回答复杂问题,观点之间缺乏相关性。
● 用户体验上无创新,类似传统全文搜索增加过滤与重排序。
/ 3.0 阶段:书籍 RAG
对搜索词进行生成式答案返回,如搜索《茶馆》,能关联性搜索“老舍”相关作品,缺点如下:
● 用户习惯未培养起来,很难想到问什么问题。
● 搜索词较为单一,缺乏深度与广度。
/ 最新:书籍 RAG+问题生成
根据用户输入的问题或提交的搜索指令,利用大语言模型引用、整理书中相关观点生成答案回复用户提问,并生成与用户提问相关的问题供用户进一步提问。
AI 问书能力介绍
AI 问书的功能分为三个部分,回答问题、介绍来源、延展问题。
回答问题,即在头部搜索框中,输入相关提问,选择“AI 问书”,等待回答:
回答生成完毕后, AI 问书将返回引用的书籍资料列表,用户点击后,直接跳转到该书籍论文等资料的指定片段:
再之后, AI 问书还提供了“猜你想问”功能:
当然,如果我们在阅读过程中遇到不懂的名词或者片段,也可以选中后点击“ AI 问书”,即可在界面上获得相关内容的概念解释,无需再跳转到外部浏览器进行搜索,实现所见即所得(容易分心的朋友有福啦!)
/ 核心挑战与痛点
前文提到, AI 问书在实现过程中,主要使用了检索增强生成( RAG )技术:检索,顾名思义,搜索的意思,就像我们在网上查东西一样;增强,意味着,不只是简单搜索,还会加上更多的智能;生成,根据搜索到的信息,给出想要的答案。
从流程上来看,在 RAG 系统中,我们首先使用一个检索模型(如基于关键字的全文搜索、基于向量的相似度搜索)在知识库中查找与输入查询最相关的文档或数据片段。然后,这些检索到的内容会被送入一个生成模型(如基于 Transformer 的大语言模型),作为额外的上下文信息辅助生成回答或文本。这种方法有效地将外部知识与生成模型的创造力结合起来,使得生成的内容不仅流畅自然,而且信息丰富、事实准确。
因此,这关键的第一步,即是检索。只有将数据准确的从知识库检索召回,才能更好的进行增强与生成。
最初,微信读书不是采用腾讯云 ES 方案,存在比较大的技术挑战:
● 数据规模大:整体数据超 10 亿级向量规模,存储成本高。早期评估的非 ES 方案,为了满足毫秒级查询,需要缓存全部数据到内存中,则 30 亿 768 维的向量,需要超过 400 台 64G 机器,运营成本百万级。
● 运维成本高:除了全文检索,同时还需部署向量化服务,在外部进行向量化后,写入到向量数据库,同时向量数据库不存储原始 meta 信息,还需要额外部署正排服务,相当于需要同时运维四套系统。
● 开发成本高:调试召回过程中,需要在外部进行向量化后,从向量数据库召回,然后再用召回 id 访问正排获取 meta 信息。相当于每一次召回调试需要 3 次操作,跨越 4 个系统。
● 稳定性要求高:在线读书平台超亿级用户,稳定性要求 5 个 9 以上。
● 查询性能要求高:高并发场景下查询延迟需要毫秒级返回,数亿量级数据全链路多路召回需控制在 100ms 以内。
/ 基于腾讯云 ES 的解决方案
腾讯云 ES 提供了一站式的 RAG 方案,具体而言, AI 问书在实现过程中,主要应用了以下能力:
● 知识向量化:通过上传自定义的 embedding 模型到腾讯云 ES 提供的机器学习节点中,实现书籍内容与搜索词的向量化( embedding )。
● 混合搜索:腾讯云 ES 提供了全文检索与向量检索能力,只需要简单的一条查询语句,即可从 ES 中实现混合搜索与多路召回。
● 与大模型集成:腾讯云 ES 支持通过 API 与大模型进行集成,从 ES 召回的数据,可与 Prompt 一起送进到大模型中进行生成式整合,最终完成智能问答。
● Kibana 调试:作为与 ES 天然集成 Web 页面, Kibana 提供了丰富的可视化能力,能帮助开发运维人员快速进行召回调试,并在 Kibana 上完成模型的部署与管理。
● 安全高可用:腾讯云 ES 自研全链路熔断限流方案,同时支持多副本、多可用区部署,能够有效保障在线业务稳定性。
/ 方案价值
● 资源成本低:腾讯云 ES 提供了低成本的一站式向量检索方案,从原来的纯内存 400 台 64G 机器下降到 30 台,大幅降低硬件成本。
● 运维成本低:腾讯云 ES 提供了一站式 RAG 方案,同时提供全文检索、向量检索、向量化服务,降低服务服务运维成本,从 1 次调优跨 4 套系统,到“所见即所得”,开发运维人员在 Kibana 上即可调试召回流程。
● 高性能高可靠:数亿量级索引召回平均耗时在 100ms 以下,基于腾讯云 ES 强大的专业支持团队与安全高可用能力,保证稳定性及可靠性。
腾讯云 ES 一站式 RAG 能力介绍
腾讯云 ES 是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成 X-Pack ,支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。在自研内核方面,腾讯云 ES 依托腾讯内外部海量业务的运营经验,针对 ES 内核进行了成本、性能、稳定性、拓展性等方面的优化,是亚太地区开源贡献第一的团队,使用腾讯云 ES 您可以高效构建在线搜索、向量检索、日志分析、运维监控、智能问答等服务。
在 RAG 方面,腾讯云 ES 支持了一站式向量检索、文本+向量混合搜索、倒数排序融合、与大模型集成、 GPU 高性能推理、字段级别权限控制等能力,同时针对查询性能做了大量优化,有效的提升了数据检索效率。
当然,作为国内公有云首个从自然语言处理、到向量生成/存储/检索、并与大模型集成的端到端一站式技术平台,腾讯云 ES 也作为核心参编单位参与了由信通院组织的 RAG 标准制定,同时成为首个通过 RAG 权威认证的企业。
/ 一站式向量检索
向量索引/存储->向量检索的全流程操作,具体能力如下:
基于腾讯云 ES 提供的能力,我们可以直接完成向量生成->向量索引/存储->向量检索的全流程操作,具体能力如下:
● 内置开箱即用的 ELSER 语义模型。
● 支持上传自定义模型或从 Hugging Face 等开源社区直接上传模型。
● 支持专有机器学习节点,用于向量推理(可选,也可跟数据节点混部)。
● 支持向量索引( HNSW 算法)、向量存储与 KNN 检索。
/ 混合搜索
基于关键词的文本搜索与基于相关性的向量搜索各有千秋,相比于文本搜索,向量搜索优势在于处理模糊表达、捕捉语义、支持跨文本 &跨语言 &跨模态;相比于向量搜索,文本搜索优势在于短文本精准匹配强、计算成本低、可解释性及调优性强。
混合搜索是指结合了全文检索和向量检索技术的搜索方式,这种方法旨在利用两种技术的优势,提供更加准确和全面的搜索结果,其优势如下:
● 更精准:混合搜索可以同时利用关键词检索和向量搜索对数据进行查询,提高检索的准确性和可信度。
● 更多样:混合搜索可以利用向量检索的多样性,返回多种不同的检索结果,提供更多的选择和信息,满足不同的用户查询需求和偏好。
● 更强大:混合搜索可以利用关键词检索的逻辑运算、排序、过滤等功能,实现更复杂的查询需求。如包含多个条件、多个字段、多个排序规则等的查询,这可以提高检索的功能和灵活性。
● 更可解释:混合搜索可以利用关键词检索的文本匹配和高亮显示,实现更可解释的检索结果。如显示查询语句和文档的匹配程度、匹配位置、匹配内容等,这可以提高用户对检索结果的理解和满意度。
/ 倒数排序融合
在多个信息检索系统中,每个系统可能会使用不同的评分机制来评估文档的相关性。这些评分机制可能基于不同的算法、特征和数据集,因此它们的评分范围和分布可能会大不相同。腾讯云 ES 内置了倒数排序融合( Reciprocal Rank Fusion, RRF )算法,RRF 的基本思想是对每个系统的排名结果赋予一个权重,这个权重是其排名的倒数。具体来说,对于每个系统的排名列表中的每个项目,RRF 算法会计算一个分数,该分数是该项目在每个列表中排名的倒数之和。然后,所有项目根据这个分数进行重新排序,以生成最终的融合排名列表。
RRF 的优点如下:
● 简单性:RRF 不需要复杂的归一化步骤,只需要知道每个文档在每个系统中的排名。
● 鲁棒性:由于 RRF 基于排名而不是评分,它对不同评分尺度和分布的敏感性较低。
● 公平性:RRF 通过相同的公式为所有系统的排名赋予权重,从而确保了所有系统在融合过程中的公平性。
● 易于实现:RRF 算法的实现相对简单,不需要复杂的参数调整或训练过程。
● 适应性:RRF 可以很容易地适应新的系统或数据,因为它不依赖于特定的评分机制。
后续,腾讯云 ES 还将支持 LTR 插件,预告下
/ 大模型集成
腾讯云 ES 可与 Langchain 等第三方管道以及 LLM 大模型等无缝集成,帮助构建生成式应用程序。
/ 高性能
紫霄 GPU 支持
腾讯云 ES 是全球首个支持 GPU 的 ES 服务,它可以与腾讯自研“芯”技术紫霄软硬结合,充分利用 GPU 的性能优势,提高向量生成和检索的效率。例如,紫霄 V1 具有高能效、高吞吐、高带宽等特点,设计算力规格 NVIDIA A10 相当,显存带宽比 A10 高 30% ,最高可比 A10 性能高 50%-100% 。在常见中小模型上,紫霄相比 NVIDIA T4 通常有 100% 以上的性能提升,相比 NVIDIA A10 有 20%+ 的性能优势。
自研内核优化
腾讯云 ES 在内核层面,针对微信读书的典型场景特点做了更多优化,比如分片架构优化,查询并行化, lucene 查询缓存锁改造等, 10 亿级向量检索平均响应延迟控制在毫秒级,整体帮助向量场景查询性能提升 3-10 倍:
a. 分片架构优化:针对向量场景,合并查询跟归并流程,总体查询性能提升 2 倍以上。
b. 块存储跟查询优化:通过对 Segment 进行合并收敛,减少查询随机 IO ,总体查询性能提升 2 倍以上。
c. 查询并行化:多线程文档切分、多 Segment 并行化处理、精准拉取文件数据段。
d. lucene 查询缓存锁改造:大幅提高了查询的并发能力,QPS 提升 50% 以上。
腾讯云 ES 与 Milvus 对比
我们基于开源工具 ann-benchmark 进行了详细性能测试,通过检索不同维度的数据集在召回率达到 99% 的情况下,获取最相似的 Top10 的文档,对比 Milvus、与腾讯云 ES 的 QPS 数据。
/ 高可用
腾讯云 ES 支持多副本、同城多活、异地容灾等多种高可用架构,同时通过自研全链路限流策略,可有效保障集群稳定性,为在线搜索业务保驾护航。
总结
本文整体介绍了腾讯云 ES 的一站式 RAG 方案以及微信读书应用实践,希望能帮助大家对这块有基本的了解。未来,腾讯云 ES 将持续深耕智能检索领域,在成本、性能、稳定性等方面持续提升,帮助客户降本增效的同时实现业务价值持续增长,欢迎持续关注腾讯云 ES ~
评论