RAGFlow v0.9 重磅升级,支持 GraphRAG,开启下一代 RAG 之旅!

一、引言

前面我们介绍过很多的关于大模型和RAG相关的技术,通过其关注程度足以看到市场上对RAG框架和成熟产品的迫切需求,因为想要个人独立从0开始实现一个RAG产品并非易事,虽然有相当多的RAG或者知识库开源产品,大部分其实很难应用于实际生产环境,很多都只能算是一个简单的演示 demo 的基本实现,并没有针对不同行业不同场景实际的需求进行覆盖和完善,光一个文档深度学习和内容解析,在面对各种复杂的文档格式,有些不规则的文档内容、以及一些包括复杂表格和图片的文档,如何有效的将其内容完整的提取出来输入给大模型本身就存在非常多的困难和挑战需要突破,就算使用目前通用的 GPT-4oGemini Pro 等超大模型,其效果和准确率也是有限的。

然而,现有的 RAG 系统,即 RAG 1.0,大多依赖简单的语义相似度搜索,在处理海量、复杂的企业级数据时,面临着效率和准确性的双重挑战,同时还存在检索召回率低、缺乏精确检索能力。这导致了所谓的“垃圾输入,垃圾输出”(GIGO)问题:如果输入数据质量不高,即使 LLM 能力再强,生成的答案也难以令人满意,也就是我们上面讲到的高质量文档数据输入问题

正是在这种完全依赖大模型解决GPU算力成本还太高且又有很多迫切需求的背景下,开源界传来了好消息,RAGFlow 应运而生,它致力于打造一个以搜索为中心的端到端优化系统,从根本上解决 RAG 1.0 的局限性。RAGFlow 的设计理念是“高质量输入,高质量输出”,它通过深度文档理解技术,智能识别文档结构和内容,确保数据的高质量输入,为 LLM 提供更精准、更可靠的答案

2024 年 4 月 1 日,RAGFlow 正式开源,这一消息在技术界引起轰动。开源不到一周时间,RAGFlowGitHub 上就已收获 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 对定制化工作流的支持 RAGFlow 是一种用于实现检索增强生成(Retrieval-Augmented Generation, RAG)的工作框架。此框架不仅支持标准的 RAG 实现,还提供了灵活性让用户能够自定义整个处理流程[^1]。 通过调整不同组件之间的交互方式以及引入新的模块,用户可以构建满足特定需求的独特管道。具体来说,在编码层面,可以通过继承基础类并重写相应的方法来扩展功能;也可以利用配置文件指定不同的参数设置,从而改变默认行为模式。以下是展示如何创建一个简单的自定义 RAG 流程的例子: ```python from ragflow.base import BaseRetriever, BaseGenerator import ragflow.utils as utils class CustomRetriever(BaseRetriever): def __init__(self, config_path=None): super().__init__() self.config = utils.load_config(config_path) def retrieve(self, query): # 自定义检索逻辑 pass class CustomGenerator(BaseGenerator): def generate(self, context, history=[]): # 自定义生成逻辑 pass if __name__ == "__main__": retriever = CustomRetriever('path/to/config') generator = CustomGenerator() user_query = "What is the capital of France?" retrieved_docs = retriever.retrieve(user_query) response = generator.generate(retrieved_docs) print(response) ``` 上述代码片段展示了如何基于 `BaseRetriever` 和 `BaseGenerator` 创建两个新类——`CustomRetriever` 及其对应的生成器 `CustomGenerator` 来实现个性化的检索与生成过程。这表明 RAGFlow 的设计考虑到了高度可配置性和适应性,使得开发人员可以根据实际应用场景灵活调整各个组成部分的功能特性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技术狂潮AI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值