AI答非所问?你的知识库为什么不好用?4500字长文带你读懂rag发展史

学习 

文章摘要:本文简要介绍了RAG(检索增强生成)的发展历程,从最初的Naive RAG到Advanced RAG、Modular RAG、Graph RAG,再到终极形态的Agentic RAG。文章详细描述了各种RAG系统的特点、局限性和应用场景,并探讨了文档处理在RAG系统中的重要性和相关开源项目的应用。最后,文章提出了AI自主决策在RAG发展中的重要性,并指出知识库的质量和适应性对RAG系统效果的影响。 关键词:RAG、科技前沿、AI答非所问、知识库、发展历程 一、引言 近年来,随着人工智能技术的飞速发展,大型语言模型(LLM)在文本生成和自然语言理解方面取得了显著成果。然而,模型对静态训练数据的依赖限制了其响应动态实时查询的能力,导致输出过时或不准确。为解决这一问题,检索增强生成(RAG)成为一种解决方案,它通过集成实时数据检索来增强LLM,以提供与上下文相关的最新响应。 二、RAG的基础组件 RAG的主要核心组件包括从用户的输入到检索、对检索到的信息的加工处理,再到大模型的生成,最后把生成结果返回给用户。像deepseek等app应用的联网搜索功能其实就是RAG的一种应用。 三、RAG的发展历程 1. Naive RAG:基础但差点意思 Naive RAG系统依赖于简单的基于关键字的检索技术从静态数据集中获取文档。然后,检索到的文档用于增强语言模型的生成功能。虽然存在上下文复杂性最小、易于实施等优点,但其缺乏上下文感知、碎片化输出以及可扩展性问题限制了其应用场景。 2. Advanced RAG:突破性的技术革新 Advanced RAG引入了密集向量搜索、上下文重新排序和迭代检索等技术突破,使答案更精准,适用于科研分析、个性化推荐等应用。然而,计算开销和可扩展性受限等挑战仍然存在。 3. Modular RAG:灵活组装与定制化 Modular RAG把RAG拆成可替换的模块,按需定制,打破了“一刀切”的局面,成为企业落地RAG的主流选择。通过混合检索策略、工具集成和可组合管道等技术创新,Modular RAG适应了特定用例的需求。 4. Graph RAG:关系大师的出现 Graph RAG是一种基于图的检索增强生成方法,通过集成基于图的数据结构扩展了传统的检索增强生成系统。利用图形数据中的关系和层次结构来增强多跳推理和上下文丰富,Graph RAG可实现更丰富、更准确的生成输出。然而,其有限的可扩展性和数据依赖性等局限性仍需解决。 5. Agentic RAG:RAG的终极形态 Agentic RAG是RAG发展的最新形态,涉及AI自主决策。通过引入AI技术,Agentic RAG能够自主处理复杂的任务和决策过程,实现了RAG系统的智能化和自主性。然而,知识库的质量和适应性对Agentic RAG的效果具有重要影响。 四、文档处理在RAG系统中的重要性和相关开源项目的应用 在RAG系统中,文档处理是一个核心模块,其好坏会很大程度影响后续的检索结果和回答生成效果。为应对模型输入token的限制和避免拆分不当,常规的rag系统会对文档进行分片处理。以GraphRag为代表的图rag通过从文档中提取丰富的关系和层次结构,能够轻松处理需要多步推理的复杂任务。 五、结论 随着RAG技术的不断发展,其应用场景和效果不断提升。从Naive RAG到Agentic RAG,RAG系统不断突破技术瓶颈,实现了更高的精准度和自主性。然而,知识库的质量和适应性仍是影响RAG系统效果的重要因素。未来,随着技术的不断进步,RAG系统将更加智能化、自主化,为人工智能的发展带来更多可能性。

fast-graphrag 探索(4)- 我把模型服务干崩了!

学习 

文章摘要:本文主要描述了小胖在使用fast-graphrag模型处理研报数据的过程中所遇到的问题及解决方法。文章首先介绍了小胖按照官方example指导调整模型参数并编写代码以处理研报数据,但在运行后发现生成的数据文件出乎意料地小,并且只有最后一篇研报的数据。经过仔细检查代码,小胖发现是因为n_checkpoints参数设置不当导致的。调整代码后,他尝试将整批数据一次性插入,简化了代码逻辑。但随后又遇到并发量过高导致模型中转服务挂掉的问题。通过查看日志和定位问题,小胖使用asyncio.Semaphore限制了并发数,最终成功解决了所有问题。文章还涉及了python、fast-graphrag探索、AI、rag和开源等关键词。

fast-graphrag 探索(3)- insert

学习 

摘要:本文介绍了在Python中使用fast-graphrag进行文档插入的流程。首先介绍了state_manager属性及其相关类和实例的作用。然后详细描述了插入文档到GraphRAG时的操作步骤,包括调用state_manager的insert_start方法、读取历史数据、提取实体和关系、过滤重复数据、进行节点和边的插入操作等。文章还提到了使用embedding_service对插入的节点进行编码,生成嵌入向量,并存储在entity_storage中。最后,文章总结了整个插入流程,并预告了下一部分将介绍fast-graphrag的查询部分。

fast-graphrag 探索(2)

学习 

本文探讨了fast-graphrag库的GraphRAG类及其相关概念,包括数据类、泛型、类型提示和依赖注入等。文章以一个简单的图类为例,说明了使用泛型的好处。接着详细解析了GraphRAG类的结构和初始化过程,包括内部配置类、后初始化方法、服务实例化和工作空间管理等方面的内容。最后,文章展示了如何实例化GraphRAG对象,并强调了泛型参数的重要性。本文旨在帮助读者理解fast-graphrag库的使用方法和原理,为后续的模型应用和研究打下基础。

fast-graphrag 探索(1)

学习 

本文介绍了对fast-graphrag项目的初步探索和实践。首先,通过准备数据阶段,使用模型生成了几个故事作为测试数据。接着,在测试代码阶段,介绍了如何创建GraphRAG实例并插入数据,生成了实体的pkl文件和pklz文件。然后,通过查询验证了实体关系的存储和检索功能。最后,探讨了使用.pkl文件的原因,并简要总结了整个项目的拓展性和前景。

他会是RAG方案的王者吗?

学习 

RAG(Retrieval Augmented Generation)随着大模型的发展受到越来越多的关注。针对大型语言模型(LLMs)存在的知识过时、生成内容不准确、数据安全性问题、响应不可预测性、答案来源非权威性和术语混淆等问题,RAG通过从海量数据源中检索信息来辅助生成答案,有效提高LLM的可靠性和可解释性。最近,RAG技术不断发展,包括GraphRag和fast-graphrag等方案。fast-graphrag号称能全方位多角度优化RAG,但其实际效果需要进一步测试验证。文章提供了测试代码和数据准备步骤。读者可据此体验fast-graphrag的性能,并分享经验和看法。

lightrag

学习 

LightRAG是一个用于处理知识图谱和向量数据库的框架,主要用于信息检索和知识管理。本文介绍了LightRAG的核心组件、主要功能、查询流程以及aquery方法和hybrid_query方法的详细解析。该框架通过提取查询中的关键词并构建上下文,支持不同的查询模式,从而实现对知识图谱的高效查询和响应生成。LightRAG的使用可以方便地进行信息提取、查询执行和存储更新等操作。此外,文章还介绍了关联代码和方法的定义。该框架是一个有趣的项目,可以为信息检索和知识管理领域提供有用的工具。