获课:weiranit.fun/14280/
获取ZY方打开链接
RAG 全栈技术从基础到精通 ,打造高精准 AI 应用
RAG 即 “检索增强生成”(Retrieval Augmented Generation),这项技术通过将大量外部数据与基础模型相结合,显著增强了语言模型(LLM )的能力,使得 AI 的回应更加真实、个性化和可靠。
RAG 技术的核心在于结合了检索(Retrieval)和生成(Generation)两大核心技术。在处理复杂的查询和生成任务时,RAG 首先通过检索模块从大量数据中找到与查询最相关的信息,然后生成模块会利用这些检索到的信息来构建回答或生成文本。
自 2020 年提出以来,从最初的朴素 RAG(Naive Rag),到高级 RAG(Advance Rag),再到模块化 RAG(Modular Rag),RAG 系统不断优化和迭代,以解决实际应用中遇到的问题,如索引环节中的核心知识淹没问题、「检索环节中的用户意图理解不准确问题」,以及生成环节中的冗余信息干扰问题等。
一、GraphRAG 框架的关键组件
查询处理器(Query Processor)
负责预处理用户定义的查询,使其能够与图数据源进行交互。在实际应用中,用户输入的查询可能是多种多样的形式,查询处理器会对其进行规范化、解析等操作,比如将自然语言查询转化为适合图数据源理解和处理的格式,以便后续能准确地从数据源中检索信息。
检索器(Retriever)
根据预处理后的查询从图数据源中检索相关内容。检索器运用特定的算法和策略,在庞大的图数据中搜索与查询相关的节点、边或子图等信息。例如,通过计算查询与数据中各个元素的相似度,筛选出最符合的部分。
组织者(Organizer)
对检索到的内容进行整理和优化,以提高生成器的性能。检索到的信息可能是零散、无序的,组织者会对这些内容进行重新组织,比如按照相关性排序、合并重复信息、提取关键要点等,让生成器能够更高效地利用这些信息来生成最终答案。
生成器(Generator)
根据组织后的信息生成最终答案。生成器基于大语言模型,结合组织者整理后的信息,按照自然语言的逻辑和语法规则,生成连贯、准确且有针对性的回答。例如在智能客服场景中,生成器根据前面组件处理后的信息,生成能解决用户问题的回复话术。
经过了很长时间对 RAG 的研发,总结出了企业 RAG 落地的关键点,分别是效果、性能和成本。所以效果问题是现在 RAG 落地最关键的因素。
二、RAG 在性能和成本上的挑战
性能
在 RAG 链路里很多环节是需要使用大模型的,比如说向量化、文档解析,最后大模型的生成、大模型 Agent 等。这样整个链路多次调用大模型,会导致离线和在线性能都会有不同程度的下降。比如说像 GraphRAG ,一个 30K 的文档需要将近 1 个小时时间才能把数据处理好,这样的话很难在一个生产环境中去落地。在实际生产环境中,对处理时间有着严格要求,过长的处理时间会严重影响用户体验和业务效率。例如在电商实时推荐场景中,如果用户查询商品信息后,需要等待很长时间才得到推荐结果,用户很可能会放弃操作。
成本
相对于其他的应用来说,RAG 应用需要去多次调用大模型,而大模型背后就是 GPU,但 GPU 资源是紧缺和昂贵的,这就不可避免的导致这类应用比其他应用的成本高很多,所以很多客户无法接受这个成本。高昂的成本限制了 RAG 应用的大规模推广和应用。对于一些预算有限的企业,无法承担如此高的成本来部署 RAG 应用,从而错失利用该技术提升业务的机会。
三、RAG 优化效果 — 数据提取和解析
首先在效果层面,离线链路里第一个优化点就是文档解析。文档有很多格式,比如说 PDF、Word 、PPT, 等等,还有一些结构化数据 。然而最大的难点还是一些非结构化的文档,因为里面会有不同的内容。比如说像表格、图片,这些内容 AI 其实是很难理解的。在通过长期大量的优化以后,我们在搜索开放平台里面提供了文档解析服务,支持各种各样常见的文档格式和内容的解析。以 PDF 文档为例,其中可能包含文字、图表、公式等多种元素,解析时需要准确识别并提取出这些信息,转化为计算机能够理解和处理的数据格式,以便后续进行文本切片等操作。对于图片中的文字信息,还需要借助 OCR(光学字符识别)技术来提取文字内容。
四、RAG 优化效果 — 文本切片
文档解析完,从文档里面能够正确的提取出内容后,接下来就可以进行文本切片。切片有很多种方法,最常见的有层次切分,把段落提取出来,对段落里面的内容再进行段落级的切片;还有多粒度切分,有时除了段落的切片,还可以增加单句的切片。这两种切片都是最常用的。另外对于一些场景,我们还可以进行基于大模型的语义切片,就是把文档的结构用大模型处理一遍,然后再提取一些更精细的文档结构。那么经过了多种切片以后,我们就可以继续进行向量化了。例如在处理一篇新闻报道时,层次切分可以先将报道按段落分开,然后对每个段落再进行更细的切片;多粒度切分则可以在段落切片的基础上,把一些关键的单句也单独切分出来。语义切片可以通过大模型理解报道的主题、人物关系等语义信息,然后按照语义关联度对文档进行切片,这样能更好地保留文档的内在逻辑。
五、RAG 评估
精准率(Precision)
衡量信号与噪音的比例 —— 检索到的相关文档 / 所有检索到的文档。精准率高意味着检索结果中真正与查询相关的文档占比较大,噪音(不相关文档)较少。例如在搜索科技类文章时,精准率高表示搜索出来的文章大部分都是真正关于科技领域的,而不是混入大量其他不相关领域的文章。
召回率(Recall)
衡量完整性 —— 检索到的相关文档 / 所有相关文档。这是因为只有当我们有足够的信心,相信检索到的上下文完整到足以回答问题时,检索系统对于生成任务来说才是可接受的。召回率高说明尽可能地把所有相关文档都检索出来了。比如在一个法律案例库中搜索特定类型的案例,如果召回率高,就表示几乎所有符合条件的案例都被找到了,不会遗漏重要信息。
F1 分数
精确率和召回率的调和平均值。F1 分数综合考虑了精确率和召回率,能更全面地评估检索系统的性能。当精确率和召回率都比较高时,F1 分数才会高,它避免了单独关注精确率或召回率而导致的评估片面性。
平均倒数排名(Mean Reciprocal Rank, MRR)
MRR 计算的是最相关文档的倒数排名的平均值。MRR 值的范围是 0 到 1,值越高表示检索系统性能越好。例如,如果每次搜索中最相关的文档都排在第一位,那么 MRR 值就是 1;如果最相关文档排名很靠后,MRR 值就会很低。它反映了检索结果中最相关文档的排名情况。
平均精确率均值(Mean Average Precision, MAP)
MAP 首先计算每个查询的平均精确率,然后对所有查询的平均精确率进行平均。MAP 考虑了所有相关文档,并且对检索结果的排序非常敏感,值越高,表示检索系统的排名性能越好。MAP 不仅关注是否能找到相关文档,还关注这些相关文档在检索结果中的排序是否合理。比如对于多个不同的查询,MAP 会综合评估每个查询下相关文档的精确率以及它们的排序情况。
归一化折损累计增益(Normalized Discounted Cumulative Gain, NDCG)
NDCG 倾向于赋予排在前面的相关文档更高的权重,是一种位置敏感的度量方法。NDCG 先计算一个未经归一化的折扣累积增益(Discounted Cumulative Gain, DCG),然后用这个值除以一个理想状态(即最佳排名顺序)下的 DCG,从而得到归一化的值。NDCG 的值范围在 0 到 1 之间,越接近 1 表示检索性能越佳,特别是在前面几个结果的质量方面。在信息检索中,用户往往更关注排在前面的检索结果,NDCG 能很好地评估检索系统在这方面的表现。例如在搜索引擎中,用户通常只查看前几页的搜索结果,NDCG 可以衡量前几页结果中相关文档的质量和排序情况。
领取专属 10元无门槛券
私享最新 技术干货