人工智能 频道

揭秘大模型RAG框架:11款爆火RAG开源项目带你轻松掌握前沿技术

  01RAG简介

  1.1 什么是RAG

  RAG(Retrieval-Augmented Generation)是一种结合了检索和增强生成技术的模型,主要用于自然语言处理任务中。检索指的是检索外部知识库,增强生成指的是将检索到的知识送给大语言模型以此来优化大模型的生成结果,使得大模型在生成更精确、更贴合上下文答案的同时,也能有效减少产生误导性信息的可能。

  1.2 为什么需要 RAG?

  之所以需要 RAG,是因为大语言模型本身存在一些局限性。

  1.时效性

  模型的训练是基于截至某一时间点之前的数据集完成的。这意味着在该时间点之后发生的任何事件、新发现、新趋势或数据更新都不会反映在模型的知识库中。例如,我的训练数据在 2023 年底截止,之后发生的事情我都无法了解。另外,大型模型的训练涉及巨大的计算资源和时间。这导致频繁更新模型以包括最新信息是不现实的,尤其是在资源有限的情况下。

  2.覆盖性

  虽然大模型的训练数据集非常庞大,但仍可能无法涵盖所有领域的知识或特定领域的深度信息。例如,某些专业的医学、法律或技术问题可能只在特定的文献中被详细讨论,而这些文献可能未被包括在模型的训练数据中。另外,对于一些私有数据集,也是没有被包含在训练数据中的。当我们问的问题的答案没有包含在大模型的训练数据集中时,这时候大模型在回答问题时便会出现幻觉,答案也就缺乏可信度。

  由于以上的一些局限性,大模型可能会生成虚假信息。为了解决这个问题,需要给大模型外挂一个知识库,这样大模型在回答问题时便可以参考外挂知识库中的知识,也就是 RAG 要做的事情。

  1.3 RAG的基本概念和工作原理

  RAG模型通过从外部知识库中检索相关信息,然后利用这些信息来优化大语言模型(LLM)的生成结果。具体来说,当模型需要生成文本或回答问题时,它会先从一个庞大的文档集合中检索出相关的信息,然后利用这些检索到的信息来指导文本的生成,从而提高预测的质量和准确性‌。

  RAG 的中文名称是检索增强生成,从字面意思来理解,包含三个检索、增强和生成三个过程。

  检索:根据用户的查询内容,从外挂知识库获取相关信息。具体来说,就是将用户的查询通过嵌入模型转换成向量,以便与向量数据库中存储的知识相关的向量进行比对。通过相似性搜索,从向量数据库中找出最匹配的前 K 个数据。

  增强:将用户的查询内容和检索到的相关知识一起嵌入到一个预设的提示词模板中。

  生成:将经过检索增强的提示词内容输入到大语言模型(LLM)中,以此生成所需的输出。 流程图如下所示:

图片

  1.4 RAG的应用场景和优势

  RAG模型适用于多种自然语言处理任务,包括问答系统、文档生成和智能助手等。其优势在于通用性强、可实现即时的知识更新,并且通过端到端评估方法提供更高效和精准的信息服务‌。此外,RAG还能有效减少大语言模型生成虚假信息的可能性,因为它可以参考外部知识库中的最新信息‌。

  1.5 RAG的历史背景和技术发展

  RAG的概念最早由Facebook AI Research(FAIR)团队提出,并在2020年发表了相关论文。起初的RAG遵循“Indexing-Retrieval-Generation”过程,后来发展为“Retrieve-Read”框架。随着技术的发展,Advanced RAG采用了更高效的检索策略和模块化设计,提高了模型的灵活性和准确性‌  

  02优秀开源项目汇总

  2.1 Haystack by deepset-ai

图片

  Haystack 是一个强大且灵活的框架,用于构建端到端的问答和搜索系统。它提供了一种模块化架构,允许开发人员轻松地为包括文档检索、问答和摘要在内的各种 NLP 任务创建管道。Haystack 的主要特性包括:

  支持多种文档存储(如 Elasticsearch、FAISS、SQL 等)

  与流行语言模型(如 BERT、RoBERTa、DPR 等)集成

  可扩展架构,用于处理大量文档

  构建自定义 NLP 管道的易于使用的 API

  由于 Haystack 的多功能性和详尽的文档,无论是初学者还是经验丰富的开发人员,如果想要实现基于 Agent 的检索(RAG)系统,它都是一个选择。

  git地址:https://github.com/deepset-ai/haystack

  2.2 RAGflow

  RAGFlow 是最近加入到 RAG 框架领域的一个新成员,但它由于专注于简洁性和效率,迅速获得了关注。该框架旨在通过提供一套预构建的组件和工作流,简化基于 RAG 应用程序的开发流程。RAGFlow 的显著特性包括:

  直观的工作流设计界面

  针对常见用例的预配置 RAG 管道

  与流行的向量数据库集成

  支持自定义嵌入模型

  RAGFlow 用户友好的方法使其成为希望快速原型化和部署 RAG 应用程序而无需深入研究底层复杂性的开发人员的有吸引力的选择。

  git地址:https://github.com/infiniflow/ragflow

  2.3 txtai by neuml

图片

  txtai 是一个多功能的AI驱动的数据平台,超越了传统的RAG框架。它提供了一系列构建语义搜索、语言模型工作流以及文档处理流水线的全面工具。txtai 的关键能力包括:

  用于高效相似性搜索的嵌入式数据库

  集成语言模型和其他AI服务的API

  可扩展架构,支持自定义工作流

  多语言和多种数据类型的支持

  txtai 的一站式方案使其成为希望在一个框架内实施各种AI功能的组织的选择。

  git地址:https://github.com/neuml/txtai

  2.4 STORM by stanford-oval

  STORM(斯坦福开源RAG模型)是由斯坦福大学开发的一个面向研究的RAG框架。尽管与一些其他框架相比,它的GitHub星数可能较少,但其深厚的学术背景和对前沿技术的专注,使其成为对RAG技术最新进展感兴趣的科研人员和开发者的宝贵资源。STORM值得关注的方面包括:

  实现新颖的RAG算法和技术

  专注于提高检索机制的准确性和效率

  与先进的语言模型集成

  详尽的文档和研究论文

  对于那些希望探索RAG技术最前沿的人来说,STORM提供了一个坚实的基础,并且得到了学术严谨性的支持。

  git地址:https://github.com/stanford-oval/storm

  2.5 LLM-App by pathwaycom

  LLM-App 是一组用于构建动态 RAG 应用程序的模板和工具集。它通过专注于实时数据同步和容器化部署而脱颖而出。LLM-App 的关键特性包括:

  可快速部署的预构建 Docker 容器

  支持动态数据源和实时更新

  与流行的 LLM 和向量数据库集成

  适用于各种 RAG 场景的可定制模板

  LLM-App 对操作方面和实时能力的重视使其成为希望部署生产就绪 RAG 系统的组织的有吸引力的选择。

  git地址:https://github.com/pathwaycom/llm-app

  2.6 Cognita by truefoundry

  Cognita 是 RAG 框架领域的一个新进入者,专注于提供一个统一的平台来构建和部署 AI 应用程序。虽然它的星标数量不如一些其他框架多,但是其全面的方法和对 MLOps 原则的强调使其值得一试。Cognita 的一些值得注意的特点包括:

  全流程的 RAG 应用开发平台

  与流行机器学习框架和工具的集成

  内置的监控和可观测性功能

  对模型版本管理和实验跟踪的支持

  Cognita 对 AI 应用开发的整体性方法,使其成为希望简化整个机器学习生命周期的组织的有力选择。

  git地址:https://github.com/truefoundry/cognita

  2.7 R2R by SciPhi-AI

  R2R(检索到检索)是一种专注于通过迭代细化来改进检索过程的专门的RAG框架。尽管它可能拥有的星标较少,但其在检索方法上的创新使其成为值得关注的框架。R2R的关键特点包括:

  实现新型检索算法

  支持多步骤检索流程

  与各种嵌入模型和向量存储集成

  用于分析和可视化检索性能的工具

  对于希望突破检索技术界限的开发者和研究人员来说,R2R提供了一套独特而强大的工具。

  git地址:https://github.com/SciPhi-AI/R2R-Application

  2.8 Neurite by satellitecomponent

  Neurite 是一个新兴的RAG框架,旨在简化构建AI驱动应用程序的过程。尽管其用户群体相对于其他一些框架较小,但它专注于开发人员体验和快速原型设计,使其值得探索。Neurite 的一些显著特点包括:

  构建RAG管道的直观API

  支持多种数据源和嵌入模型

  内置缓存和优化机制

  可扩展架构以支持自定义组件

  Neurite 对简洁性和灵活性的强调使其成为希望快速在其应用程序中实现RAG功能的开发者的有吸引力的选择。

  git地址:https://github.com/satellitecomponent/Neurite

  2.9 FlashRAG by RUC-NLPIR

  FlashRAG 是由中国人民大学自然语言处理与信息检索实验室开发的一款轻量级且高效的检索增强型生成(RAG)框架。尽管它的星标数量可能较少,但其对性能和效率的关注使其成为一个值得关注的竞争者。FlashRAG 的关键方面包括:

  优化的检索算法以提高速度

  支持分布式处理和扩展

  与流行的语言模型和向量存储集成

  用于基准测试和性能分析的工具对于需要高速度和高效性的应用,FlashRAG 提供了一套专门的工具和优化措施。

  git地址:https://github.com/RUC-NLPIR/FlashRAG

  2.10Canopy by pinecone-io

  Canopy是由Pinecone公司开发的一种RAG框架,该公司以其向量数据库技术而闻名。Canopy利用了Pinecone在高效向量搜索方面的专业知识,提供了一种强大且可扩展的RAG解决方案。Canopy的显著特性包括:

  与Pinecone向量数据库的紧密集成

  支持流处理和实时更新

  先进的查询处理和重新排序功能管理知识库和版本控制的工具Canopy专注于可扩展性和与Pinecone生态系统的集成,使得它成为那些已经在使用或考虑使用Pinecone进行向量搜索需求的组织的理想选择。

  git地址:https://github.com/pinecone-io/canopy

  2.11 LangChain-ChatChat

  LangChain-ChatChat‌是一个基于Langchain和ChatGLM等大语言模型的本地知识库问答应用实现项目。它的目标是建立一个对中文场景友好、支持开源模型、可离线运行的知识库问答解决方案‌。

  LangChain-ChatChat的实现原理包括以下几个步骤:加载文件、读取文本、文本分割、文本向量化、问句向量化、在文本向量中匹配出与问句向量最相似的top k个、将匹配出的文本作为上下文和问题一起添加到prompt中,最后提交给大语言模型(LLM)生成回答‌。

  功能特点:

  ‌开源模型支持‌:支持市面上主流的开源LLM和Embedding模型,如GLM-4-Chat和Qwen2-Instruct,并支持通过修改配置信息接入这些模型‌1。

  ‌离线部署‌:所有模型可以离线私有部署,同时支持OpenAI GPT API的调用,并将在后续持续扩充对各类模型及模型API的接入‌12。

  ‌API和WebUI支持‌:通过FastAPI提供API调用服务,通过Streamlit提供WebUI服务,支持流式或非流式输出,并可自定义会话管理‌

  git地址:https://github.com/chatchat-space/Langchain-Chatchat

0
相关文章