马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
一、弁言
前面我们介绍过许多的关于大模型和RAG相关的技术,通过其关注水平足以看到市场上对RAG框架和成熟产品的迫切需求,因为想要个人独立从0开始实现一个RAG产品并非易事,固然有相称多的RAG或者知识库开源产品,大部门其实很难应用于实际生产环境,许多都只能算是一个简朴的演示 demo 的根本实现,并没有针对差别行业差别场景实际的需求进行覆盖和美满,光一个文档深度学习和内容剖析,在面临各种复杂的文档格式,有些不规则的文档内容、以及一些包括复杂表格和图片的文档,怎样有用的将其内容完整的提取出来输入给大模型自己就存在非常多的困难和挑衅需要突破,就算使用目前通用的 GPT-4o 和 Gemini Pro 等超大模型,其效果和正确率也是有限的。
然而,现有的 RAG 体系,即 RAG 1.0,大多依靠简朴的语义相似度搜刮,在处理海量、复杂的企业级数据时,面临着效率和正确性的双重挑衅,同时还存在检索召回率低、缺乏精确检索本领。这导致了所谓的“垃圾输入,垃圾输出”(GIGO)问题:如果输入数据质量不高,即使 LLM 本领再强,生成的答案也难以令人满意,也就是我们上面讲到的高质量文档数据输入问题。
正是在这种完全依靠大模型解决GPU算力成本还太高且又有许多迫切需求的背景下,开源界传来了好消息,RAGFlow 应运而生,它致力于打造一个以搜刮为中央的端到端优化体系,从根本上解决 RAG 1.0 的局限性。RAGFlow 的设计理念是“高质量输入,高质量输出”,它通过深度文档理解技术,智能识别文档结构和内容,确保数据的高质量输入,为 LLM 提供更精准、更可靠的答案。
2024 年 4 月 1 日,RAGFlow 正式开源,这一消息在技术界引起惊动。开源不到一周时间,RAGFlow 在 GitHub 上就已劳绩 2900 颗星,而不到 4 个月的时间,这一数字已飙升至 13600,足以阐明其受接待水平。固然许多小伙伴在实际体验了 RAGFlow 产品之后反馈目前的版本还是存在非常多的 bug 未修复,相信按 RAGFlow 如今的发展和迭代速度,估计迭代俩版本就能稳定下来了,让我们拭目以待。
RAGFlow v0.9 版本于两天前正式发布,从发布日志中可以看到令人等待的新功能和体验升级。该版本不但标志着 RAG 体系迈向知识图谱加强的RAG 2.0 时代,还针对之前版本用户的反馈,修复了大量bug,进一步提升了稳定性和易用性。
此次更新的一大亮点是对 GraphRAG 的正式支持,为 RAG 体系注入知识图谱的强大本领,明显提升了答案的精准度和可解释性。此外,v0.9 版本还新增了关键词提取、百度/DuckDuckGo/PubMed/Wikipedia/Bing/Google 搜刮等 Agent 运算符,扩展了信息检索渠道。用户如今还可以使用 ASR 语音转文本功能,方便地输入音频文件。
为了满足用户多样化的需求,RAGFlow v0.9 兼容了 Gemini、Groq 等更多 LLMs,并集成了 xinference reranker,进一步提升答案质量。同时,该版本还增加了对 LM Studio/OpenRouter/LocalAI/Nvidia API 等推理框架/引擎/服务的支持,为用户构建和部署 RAG 体系提供更多便利。
二、RAG 1.0 :语义相似度搜刮的瓶颈
早期的 RAG 体系,即 RAG 1.0,主要依靠于语义相似度搜刮技术。其工作原理是将文档分割成数据块,并利用嵌入模型将其转换为向量表示,存储在向量数据库中。当用户提出问题时,体系会将问题转换为向量,并在数据库中搜刮语义最相似的文档块,将其作为 LLM 的参考信息。
然而,随着 LLM 应用场景的不断拓展,这种看似直观的传统方法逐渐暴暴露其局限性:
- 召回率低: RAG 1.0 通常采用简朴的文档分块策略,忽略了文档内部细粒度的语义结构,导致许多包罗关键信息的文档块无法被检索到,从而降低了答案的召回率,许多开源知识库项目根本上就是采用的这种方案。
- 缺乏精确检索本领: 语义相似度搜刮只能找到与查询内容“大致相关”的信息,而无法满足用户对时间、主题、实体等方面的精确检索需求,尤其是在处理一些需要精确匹配的专业问题时,RAG 1.0 往往难以胜任。
- 过度依靠嵌入模型: RAG 1.0 的检索效果与嵌入模型的选择密切相关,而通用嵌入模型在特定范畴的性能往往难以令人满意,这限制了 RAG 体系在专业范畴的应用。
- 忽略文档结构: RAG 1.0 简朴的文档分块方法忽略了文档自己的结构信息,比方章节标题、表格数据、图片解释等,这些信息对于理解文档内容、提取关键信息至关重要,而 RAG 1.0 的处理方式无疑会导致信息丢失,影响答案质量。
- 缺乏用户意图识别: 用户的问题表述往往与其真实意图存在差异,而 RAG 1.0 缺乏对用户意图的深度理解,只能进行简朴的关键词匹配,导致检索效果与用户预期存在偏差。
- 无法处理复杂查询: 现实场景中的许多问题都需要进行多轮推理才能得到答案,而 RAG 1.0 仅限于处理简朴的单轮问答,无法满足复杂查询的需求。
总而言之,RAG 1.0 固然为 LLM 的应用打开了新的局面,但其简朴的架构和对语义相似度搜刮的依靠,使其在面临海量、复杂的企业级数据时,显得力不从心。为了突破 RAG 1.0 的瓶颈,我们需要一种更加智能、高效、精准的 RAG 解决方案,而 RAGFlow v0.9 版本带来的 GraphRAG 正是为此而生。
三、RAG 2.0:以搜刮为中央的端到端优化
为相识决 RAG 1.0 的局限性,新一代 RAG 架构,即 RAG 2.0,应运而生。 RAG 2.0 将 RAG 体系视为一个以搜刮为中央的端到端流程,并将其细化为四个关键阶段:信息提取、文档预处理、索引构建和检索。
与 RAG 1.0 差别的是,RAG 2.0 强调对数据处理流程的精细化控制,每个阶段都围绕模型和算法进行优化,以确保最终答案的质量。比方,
- 在信息提取阶段:RAG 2.0 采用更精细的文档剖析和信息抽取技术,保存更多关键信息
- 在文档预处理阶段:RAG 2.0 引入了知识图谱构建、文档聚类等技术,为检索提供更丰富的上下文信息
- 在索引构建阶段:RAG 2.0 支持向量搜刮、全文搜刮、张量搜刮等多种混合搜刮方式,提升检索效率和精度
- 在检索阶段:RAG 2.0 引入了查询重写、意图识别等技术,优化检索策略
为了更好地支持 RAG 2.0 架构, RAGFlow 不是简朴地将 RAG 1.0 的组件拼集起来,而是从底层架构上进行了重新设计,以模型和算法为核心,为用户提供更机动、更高效、更精准的 RAG 解决方案。
具体来说,RAGFlow 在以下几个方面表现了对 RAG 2.0 的支持:
- 深度文档理解: RAGFlow 采用先进的文档剖析和信息抽取技术,能够处理各种复杂的文档格式,并提取关键信息,为后续的知识图谱构建、索引构建等环节提供高质量的数据根本。
- 混合搜刮: RAGFlow 集成了多种搜刮技术,包括向量搜刮、全文搜刮和张量搜刮,能够根据差别的数据类型和查询需求,机动选择最优的搜刮策略,提升检索效率和精度。
- 知识图谱加强: RAGFlow 支持 GraphRAG 等知识图谱构建技术,能够主动从文本数据中抽取实体和关系,构建知识图谱,为 LLM 提供更丰富的上下文信息,提升答案的精准性和可解释性。
- 查询优化: RAGFlow 引入了查询重写、意图识别等技术,能够根据用户的查询意图,动态调解检索策略,提高答案的精准度和相关性。
RAG 2.0 中的每个阶段本质上都以模型为中央。他们与数据库团结工作,以确保最终答案的有用性。
因此,RAG 2.0 相比 RAG 1.0 会复杂许多,其核心是数据库和各种模型,需要依托一个平台来不断迭代和优化,这就是我们开辟并开源 RAGFlow 的缘故原由。它没有采用已有的 RAG 1.0 组件,而是从整个链路出发来根天性地解决 LLM 搜刮体系的问题。当前,RAGFlow 仍处于低级阶段,体系的每个环节,都还在不断地进化中。由于使用了正确的方式解决正确的问题,因此自开源以来 RAGFlow 只用了不到 3 个月就得到了 Github 万星。固然,这只是新的起点。
四、RAGFlow v0.9:深度融合 GraphRAG
在 RAGFlow 体系中,我们对下一代 RAG (RAG 2.0) 的界说更加完整:它是一个以搜刮为中央的端到端优化体系。RAG 2.0 共分为四个阶段,此中索引与检索阶段通常需要专用数据库提供支持,而前两个阶段,即数据抽取和预处理,则饰演着至关重要的角色。
数据抽取阶段,我们利用各类文档模型,比方强大的大型语言模型 (LLM),来确保被索引数据的质量,制止出现“垃圾输入,垃圾输出”(Garbage In, Garbage Out) 的环境。
在数据进入数据库之前,我们还可以选择性地进行一些预处理,包括文档预聚类和知识图谱构建等。这些预处理步骤主要用于解决多跳问答和跨文档提问等复杂场景。
GraphRAG 作为一种面向下一代 RAG 的解决方案应运而生。在 RAG 2.0 的体系中,它可以被视为整个流程中的一个重要单元。从 RAGFlow 的 0.9 版本开始,我们已经将 GraphRAG 集成到体系当中。
那么,为什么选择引入 GraphRAG? 它与微软提出的 GraphRAG 又有哪些区别和联系?
知识图谱对提升 RAG 的效果至关重要。传统的 RAG 体系只能根据提问检索答案,找到的往往是与提问相似的效果,而非精准答案。比方,对于一些需要总结归纳的问题,简朴的关键词匹配显然无法满足需求。
这类问题本质上是一种聚焦于查询的总结 (Query Focused Summarization, QFS)。利用知识图谱可以很好地解决这类问题。知识图谱能够根据文本相关性将内容聚合,在对话过程中根据这些聚合信息生成总结,从而精准地答复用户问题。目前,许多专用 AI 搜刮引擎都在采用这种方法。
之前的 RAGFlow 版本提供的 RAPTOR 功能也是对文本进行聚类,与上述原理类似。但相比之下,以知识图谱为中央的方法可以构建以定名体实体节点为中央的条理化效果,在处理 QFS 查询时,能够提供更正确、更体系的答案。
不但如此,在其他一些场景中,知识图谱也能改善 RAG 的返回效果。它能够为返回效果添加更丰富的上下文信息,使 LLM 可以生成更具解释性的答案。
大量研究工作已经证明白知识图谱在 RAG 中的有用性。因此,GraphRAG 一经推出就敏捷得到了社区的广泛关注。
固然,利用知识图谱进行问答并非奇怪事。早在 RAG 出现之前,KGQA 就已经存在多年。但这些工作一直面临着一个瓶颈:怎样实现知识图谱构建的主动化和标准化。这也阻碍了基于知识图谱的问答体系在企业级场景中的大规模应用。
随着 LLM 和 RAG 的出现和普及,使用 LLM 主动构建知识图谱成为了一种可行的方案,GraphRAG 就是此中的佼佼者。
然而,GraphRAG 在实际应用中也面临一些挑衅。比方,在实体抽取过程中,大概会出现多个同义词对应同一个实体的环境,影响知识图谱的正确性。此外,GraphRAG 需要多次调用 LLM, 尤其是在处理大规模数据集时,会不可制止地消耗大量的 Token,增加使用成本。
为相识决这些问题,RAGFlow 在 GraphRAG 的根本上进行了一系列优化和改进,使其更适用于实际应用场景:
- 实体去重: 为相识决 GraphRAG 在实体抽取过程中大概出现的同义词问题,RAGFlow 引入了实体去重机制。它利用 LLM 的语义理解本领,主动识别和合并表示雷同实体的差别名称,比方将 “2024” 和 “2024 年” 合并为同一个实体,从而提高知识图谱的正确性。
- 降低 Token 消耗: GraphRAG 在构建知识图谱的过程中,需要多次调用 LLM,这在处理大规模数据集时会消耗大量的 Token。为了降低使用成本,RAGFlow 对 GraphRAG 的流程进行了优化,尽大概减少 LLM 的调用次数,并通过缓存机制制止重复计算,从而有用降低 Token 的消耗量。
简而言之,GraphRAG 对知识图谱的抽象和构建进行了简化,使其更易于工程化和标准化,推动了基于知识图谱的问答体系在实际应用中的落地。RAGFlow 借鉴了 GraphRAG 的实现,并在其根本上进行了一系列改进,比方引入去重步骤、降低 Token 消耗等,使其更加高效和实用。
五、总结与展望:知识图谱赋能 RAG 的将来
RAGFlow v0.9 的发布,标志着知识图谱加强型 RAG 体系 (RAG 2.0) 的全新时代正式开启。 GraphRAG 作为此中的先行者,显现了 LLM 驱动下的知识图谱构建技术所蕴含的巨大潜力。 它不但为 RAG 体系注入了更强大的语义理解和知识推理本领,也为智能问答、语义搜刮、知识发现等范畴的应用打开了新的大门。
GraphRAG 之以是能够取得成功,很大水平上得益于它对传统知识图谱构建流程的简化,使其更容易在实际工程中落地。 然而,我们必须认识到,这仅仅是知识图谱与 RAG 团结的开始,将来另有广阔的探索空间。
现有的 GraphRAG 主要面向能够构建知识图谱的结构化和半结构化数据, 但在实际的企业级应用中,另有大量数据并不适合构建知识图谱, 也有一些场景需要考虑成本因素,无法对所有数据进行知识图谱构建。
因此,怎样将知识图谱的上风应用到更广泛的数据类型上,怎样在成本可控的环境下构建和利用知识图谱,将是将来 RAGFlow 需要着重解决的问题。
为了进一步释放知识图谱的潜力, RAGFlow 将来的发展方向将包罗以下几个方面:
- 突破数据限制,构建跨文档知识图谱: 将来的 RAG 体系需要具备处理更复杂数据的本领。RAGFlow 将探索构建跨越多个文档的知识图谱, 以捕捉更复杂的语义关系, 提升体系对复杂问题的理解和推理本领,打破数据之间的壁垒。
- 深入发掘语义信息,实现知识图谱驱动的查询改写: 为了进一步提升检索的精准度, RAGFlow 将探索利用知识图谱中的语义信息,对用户查询进行改写和扩展, 资助体系更正确地理解用户意图, 返回更符合用户需求的效果。
- 拓展知识维度,实现多模态知识融合: 将来的 RAG 体系需要能够理解和处理更加多元的信息。RAGFlow 将探索将文本、图像、视频等多模态信息融入知识图谱,构建更全面的知识表示,支持更丰富的问答场景,比方团结图片和文字进行问答等。
除了对知识图谱应用的探索, RAGFlow 还将持续进行功能开辟和美满,打造更加强大和易用的 RAG 体系,比方:
- Text2SQL: 支持用户使用天然语言进行数据库查询,方便用户从结构化数据中获取信息,降低使用门槛。
- 多模态代理: 支持 TTS (语音合成) 和类似 Perplexity 的搜刮代理, 为用户提供更便捷、更天然的交互体验。
- OpenAI 兼容 API: 提供与 OpenAI 兼容的 API,方便开辟者将 RAGFlow 集成到现有应用中, 降低开辟成本。
- 更丰富的文件格式支持: 支持剖析 eml 等更多类型的文件, 扩展体系的应用场景, 满足更多用户的需求。
我们相信, 随着 RAGFlow 等开源项目标不断发展,知识图谱将与 RAG 技术更加精密地团结,共同推动智能问答体系朝着更智能、更可靠、更易用的方向发展,为用户带来更优质的智能体验。
|