AI 开发者工具(1)——盘点 8 个流行的开源 RAG 项目,优缺点比较,应用场景分析,易用性解读
为了撰写开源中国即将发布的大模型生态 2024 年报告中关于开发者中间件和开源工具的年终总结,我回顾了过去一年所关注的开源项目,并计划将其整理成一系列文章。这些文章将涵盖从智能文档处理、生成式 AI 推理平台的对比,到大模型的结构化输出支持及 TTS 技术的选项等多个方面。这一系列文章既是我个人的年终总结,也旨在为感兴趣的读者提供有价值的信息。
这是该系列的第一篇文章,主题围绕 RAG 技术。在过去一年中,RAG 技术成为大模型应用中最热门的方向之一,开源社区因此涌现了许多相关项目,包括面向个人开发者的 SDK 集成、企业级框架以及面向普通用户的 RAG 应用。本文将重点介绍那些成熟度较高且专注于 RAG 技术的项目,所以像 FlashRAG(一个高效、模块化的开源工具包,用于复现现有 RAG 方法和开发新算法)和 GraphRAG(一种基于图的 RAG 方法,通过利用实体间的结构信息提高检索精度和生成更加符合上下文的响应)这类具有创新性的研究项目不在本文讨论范围内,同样,像 LangChain 这样包含 RAG 处理模块的综合框架也不在讨论之列。
1. LlamaIndex(个人开发)
LlamaIndex is a data framework for your LLM applications
LlamaIndex 是一款多功能、高效且易于使用的 RAG 框架,也是出现最早的 RAG 框架,支持的数据源很多,拥有活跃的社区支持。这是我首次接触的 RAG 框架,去年 8 月在开发大模型辅助阅读工具时便已采用,其接口设计出色,使用体验极佳,许多 RAG 流程优化方法及标准化组件的定义均源自该项目的博客。
LlamaIndex 支持多种数据源,包括表格数据(如 DataFrame),可以直接处理,适用于需从表格中提取和使用信息的场景。此外,LlamaIndex 还兼容图数据库,例如 NebulaGraph,通过集成可以利用图数据库的功能来存储和管理知识图谱数据,从而在构建知识图谱问答系统时有效利用图数据库的查询和分析能力。LlamaIndex 提供了简单易用的 API 和工具,便于开发者快速集成到应用程序中,项目还包含一系列教程和示例,帮助用户理解和实现复杂的 RAG 技术,如果你是一个新手,想由浅入深系统掌握 RAG 技术,推荐从这个框架开始学习。
2. Verba(个人开发)
Verba 是向量数据库厂商 Weaviate 在 2024 年 3 月开源的一个模块化 RAG 框架。
Verba 支持数据的快速上传和管理,包括创建、读取、更新和删除(CRUD)功能,并且能够显示用于生成答案的具体数据源和段落,Verba 架构分为五个关键步骤:读取管理器(ReaderManager)、分块管理器(ChunkerManager)、嵌入管理器(EmbeddingManager)、检索管理器(RetrieveManager)和生成管理器(GenerationManager),每个步骤都是可定制的,以适应不同的用例。
特性:
- 生成模型支持:支持多种模型,包括 Ollama、HuggingFace、Cohere、Anthropic 和 OpenAI 等模型 。
- 嵌入支持:支持 Weaviate、SentenceTransformers 和 VoyageAI 的嵌入模型 。
- 数据源支持:可以处理多种数据格式,包括 PDF、CSV/XLSX、.DOCX 文件,还可以从 GitHub 和 GitLab 导入文件,甚至可以通过 Firecrawl 抓取网页 。
- RAG 特性:具备混合搜索、自动完成建议、过滤、可定制元数据、异步数据预处理等功能 。
- 分块技术:支持多种文本分块技术,包括基于标记、句子、语义的分块,以及针对 HTML、Markdown、代码和 JSON 文件的特殊分块方法 。
- 接入支持:支持 LangChain、Haystack 和 LlamaIndex 。
- 易用性:提供了直观的用户界面和简化的工作流程,使得用户可以轻松地导入数据、配置模型和嵌入,以及执行 RAG 任务,它还提供了详细的文档和社区支持,以帮助用户快速上手 。
不过作为一个新开源的项目,在社区支持和文档完整性方面还有待提升,在处理极大规模数据时,性能和资源占用可能需要进一步优化,不过如果你在用 Weaviate 向量数据库,建议搭配使用,问题响应积极。
官方博客对其设计理念的详细介绍 《Verba:构建开源、模块化 RAG 应用》
3. QAnything(企业部署)
QAnything 是由网易有道 2024 年 1 月开源的一款基于 RAG 的本地知识库问答系统。
QAnything 项目是一款基于本地文件和数据库的问答系统,支持多种文件格式,如 Word、PPT、Markdown、CSV 和网页链接等。该系统还具备处理 PDF 中的图片和表格、执行 Web 搜索、管理 FAQ 和创建自定义 Bot 的功能,具有高度的灵活性。QAnything 强调数据安全,支持离线部署使用,适用于对数据保密性有严格要求的用户,并能高效处理大规模数据的问答任务,通过两阶段检索机制确保查询结果的准确性。作为一套完整的 RAG 系统,QAnything 在后端采用了专门优化的自研 BCEmbedding 模型 和 BCEmbedding-Reranker 模型以及微调后的生成模型,包括完成度很高的的前端交互部分,整体设计得易于安装部署,无需进行复杂配置即可快速启动。
特别需要注意的是,QAnything 采用 AGPL-3.0 开源协议。这意味着,如果你的软件计划作为网络服务运行且不希望开源,应避免使用该项目。对于考虑基于 QAnything 进行企业级软件开发的用户,建议仔细评估相关风险,必要时可考虑购买付费许可证。
官方对其设计理念的详细介绍 《有道 QAnything 背后的故事—关于 RAG 的一点经验分享》
4. RAGFlow(企业部署)
RAGFlow 是一款基于深度文档理解构建的开源 RAG 引擎。RAGFlow 可以为各种规模的企业及个人提供一套精简的 RAG 工作流程,结合大语言模型(LLM)针对用户各类不同的复杂格式数据提供可靠的问答以及有理有据的引用。
RAGFlow 是国内团队(英飞流 InfiniFlow)于 2024 年 4 月开源的一款 RAG 引擎,其设计哲学是“高质量输入,高质量输出”,因此 RAGFlow 在数据预处理方面提供了广泛的支持,特别是其核心组件 DeepDoc,专注于非结构化数据的预处理。
DeepDoc 的功能包括:
- OCR 扫描:利用 OCR 模型处理复杂文档。
- 布局识别:使用 Yolov8 识别文档布局,如标题、段落、表格、图像等。
- 表格结构识别(TSR):识别表格结构,包括行、列、表头、单元格合并等。
- 分块方式:用户可根据文档类型选择合适的分块策略,如问答、简历、论文、手册等。
- 文档解析:支持 Word、PPT、PDF、CSV 等多种文件格式。RAGFlow 能自动从无序文本中提取关键信息并进行结构化处理,例如将简历中的文本解析为姓名、联系方式、工作经历、教育背景等。
RAGFlow 的一大亮点在于其文本分块过程的可视化和支持人工干预。用户不仅能查看系统处理的结果,还能清晰了解文档如何被分块和解析,这种设计有助于用户核查和调整 AI 的输出,确保最终结果的准确性和可靠性。此外,与 LlamaIndex 类似,RAGFlow 也支持 Agentic RAG(通过在 RAG 流程中引入 AI 代理来增强系统能力,详细介绍见What is Agentic RAG)。
本项目采用 Apache License 2.0 许可,这是一种较为宽松的开源协议,适合商业使用。尽管 RAGFlow 支持多种数据源,但在处理特定行业的特殊格式文本时仍有一定的局限性。建议企业在采用时考虑购买更专业的文档智能商业服务(相关内容将在后续文章中详细讨论),以提升使用体验。
5. quivr(个人使用)
Quivr,帮助您打造第二大脑,利用 GenerativeAI 的力量成为您的私人助理!
Quivr 是一款旨在帮助个人和企业构建“第二大脑”的知识管理平台。对于个人用户,它提供了一个基于 RAG 技术的个人知识库,而对于企业,则提供了一套全面的知识管理解决方案。该平台的核心在于将企业的内部知识整合为一个统一的知识库,使团队能够更高效地访问和利用这些知识,而不仅仅是被动地寻找所需信息。
Quivr 强调团队应充分利用公司的集体智慧和专业技能,不断更新和完善内部知识库,以促进不同部门间的协作。此外,平台支持与多种应用程序和数据源的集成,涵盖云端和本地存储、聊天记录等,通过直观的接口实现全公司范围内的知识搜索。用户可以轻松组织和分享重要信息,创建文档和链接的集合,确保所有员工的信息同步和一致。
特性:
- 通用数据接受性:Quivr 能够处理几乎任何类型的数据,包括文本、图片、代码片段等。
- 快速高效:以速度和效率为核心设计,确保快速访问数据。
- 安全性:用户可以控制他们的数据,确保数据安全和隐私。
- 文件兼容性:支持多种文件格式,包括 Markdown、PDF、PPT、Excel、Word、音频和视频。
如果你不想折腾,需要一个完成度高且成熟的 RAG 技术构建的个人知识管理产品,选这个就对了。
6. khoj(个人使用)
Your AI Second Brain,Ask anything, understand documents, create new content
这款产品自称是打造“第二大脑”的利器,不仅具备 Quivr 的所有功能,还在知识管理之外提供了研究工具,帮助用户激发创意,生成新内容,尤其适合需要频繁产出的个人。Khoj AI 提供了一个多模态的 AI 助手,能够跨文档和互联网解答复杂问题,并支持可视化概念和语音交互。此外,用户可以通过多种渠道访问 Khoj AI,如 笔记软件 Obsidian 和 代码编辑器 Emacs 等,实现与日常工作的无缝对接。我对其进行了个性化调整,可以在微信中使用,并且支持自定义 Agent,定期执行特定任务。因此,相较于 Quivr,Khoj AI 更符合我的知识管理需求。
7. mem0(个性化记忆)
The Memory Layer For Your AI Agents
这个项目被纳入 RAG 主题的原因在于其本质是对检索和数据存储过程进行了进一步的抽象化,底层支持多种数据存储方式,包括向量数据库、键值数据库和图数据库,为 AI 提供了强大的记忆中间层,确保最相关的信息随时可用。与 RAG 相比,该项目能够理解和关联对话中的不同实体,形成更深入的上下文理解。RAG 通常基于静态文档检索,而该项目不仅考虑信息的时效性,优先使用最近和最相关的信息,还能跨会话保持上下文,支持数据的动态更新。RAG 则通常依赖于静态数据集,适用于单次问答的准确性要求较高的场景;而该项目则更侧重于解决多轮对话的连续性问题。
特点:
- 多层次记忆:支持用户级、会话级和代理级的记忆保存。
- 自适应个性化:根据用户交互持续优化,提供精确的个性化记忆。
- 开发者友好 API:设计简洁,易于集成。
- 智能数据管理:依据最近性、相关性和重要性综合管理存储数据。
- 实体关系处理:理解和关联不同交互中的实体,加深上下文理解。
- 动态更新机制:实时调整存储信息,确保使用最新且最相关的数据。
虽然很易用,但也由于过于抽象,无法设置自定义的记忆管理规则,不过 mem0 的 roadmap 也有规划提供一些自定义规则支持。项目的核心理念是通过时间加权的方法提炼交互内容,确保重要的信息被保留以满足大模型的 context 窗口。然而,随着记忆内容的积累,也面临着数据存储和处理的挑战,特别是难以高效地提炼出最重要的历史交互记录,况且每次都需要依赖大语言模型来提炼总结,增加了成本,此外项目还利用知识图谱来组织信息,但尚未提供相应的管理接口。
总体而言,尽管存在一些问题,但是这个项目已经做了大量工作。对于希望开发个性化助手产品(如虚拟伴侣、医疗助手等)的开发者来说,建议在此基础上进行二次开发,加入区分长短期记忆的管理策略,就不输市面上很多号称有长记忆能力的 AI 应用用户体验了,因为他们的技术实现也差不多,体验更好一点的就是单独训练了角色大模型而已。
根据医学中人类的几种记忆方式,将 AI agent 的记忆系统分为短期记忆与三种长期记忆:
短期记忆:
• 工作记忆(Working Memory):这一轮决策所需要用到的所有信息。其中包括上下文内容,例如从长期记忆中检索到的知识;也包括 LLM context 以外的信息,例如 function call 时使用其他能力所产生的数据
长期记忆:
• 事件记忆(Episodic Memory):Agent 对过去多轮决策中所发生事情的记忆。每一次 LLM 有了新的行为和结果,agent 都会把内容写进情节记忆。例如在 Generative agents 小镇中,虚拟小镇的 agent 居民会把自己每天看到的事、说过的话计入事件记忆。要使得用户得到个性化的使用体验,这一部分的优化是至关重要的。
• 语义记忆(Semantic Memory):Agent 对自身所在世界的语义知识记忆,一般通过外部向量存储和检索来调用。这一部分记忆可以用类似知识图谱的思路,使 agent 之间的知识更方便共享和更新。同样以 Generative agents 小镇为例,agent 居民会记忆其他居民的爱好、生日等信息,这都是语义记忆。
• 程序记忆(Procedural Memory):在一些特定场景下,agent 执行操作的 workflow 会通过代码的形式在框架中写出来。这类记忆使部分行为能够按照更可控的工作流来执行。以 Generative agents 小镇类比,agent 居民会有自己的行为习惯,比如每天晚上要去某条街散步等等。
8. Perplexica(AI 搜索)
Perplexica 是一个由 AI 驱动的搜索引擎,它是 Perplexity AI 的开源替代品。
Perplexica 是一款基于 AI 的搜索引擎,它利用 SearxNG(一个免费的聚合搜索引擎,整合了超过 70 个搜索服务的结果,且不对用户进行追踪或分析)来确保信息的时效性,同时保障用户隐私。该平台支持本地大语言模型(例如 Llama3 和 Mixtral),并提供两种主要操作模式:Copilot 模式和普通模式。Copilot 模式通过生成多样化的查询来提升搜索结果的相关性,而普通模式则直接处理用户的查询请求并执行网络搜索。此外,Perplexica 还提供了六种专业搜索模式,包括全部搜索、写作助手、学术搜索、YouTube 搜索、Wolfram Alpha 搜索和 Reddit 搜索。
众多开源的 AI 搜索引擎项目中,Perplexica 开源较早,维护活跃,成熟度高,代码质量优秀,因此成为我二次开发的理想选择。对于希望学习 AI 搜索引擎技术的开发者来说,其他如morphic、Lepton Search 和 llm-answer-engine 等开源项目也值得参考。
AI 搜索是 RAG 技术的关键应用之一,构建高效的 AI 搜索引擎关键在于准和快。准的提升一方面依赖于生成模型的基础能力,包括指令跟随、幻觉、鲁棒性和偏见等方面;一方面需要提高 RAG 的召回率和准确率,以确保上下文信息的丰富度。高效快速的检索算法同样是评价标准之一,即使算法精确度高,但如果运行时间过长,在实际应用中也可能不具备实用性。
关于 AI 搜索引擎能力评估的更详细的话题,请看我这篇文章 如何评估一个 RAG(检索增强生成)系统。
写在结尾
由于本文是一篇总结性文章,不能囊括所有细节,后台回复「RAG」获取更多相关的延伸阅读材料,包括综述、开源工具、应用参考、企业级实践、论文、构建策略等多方面的信息和资源。
欢迎加我微信咨询和交流,备注信息中请务必说明来由,否则不予通过!
如果觉得内容不错,欢迎点个关注,分享和在看~
AI 开发者工具(1)——盘点 8 个流行的开源 RAG 项目,优缺点比较,应用场景分析,易用性解读
https://liduos.com/ai-develope-tools-series-1-open-source-rag-projects-comparison.html