RAG 很多人都听说过,或者实践过,目前最直接的应用就是构建智能问答系统。
什么是 RAG?
RAG 是 Retrieval Augmented Generation 的简写,翻译过来就是检索增强生成。
从名字就可以拆分出 RAG 的三大部分,检索、增强、生成,表面意思就是:
1、去知识库检索相关的各种东西
2、把检索出来的信息,融合到 prompt 中,增强输入信息
3、最后是大模型生成更符合事实性的回答
为什么需要用到 RAG 呢?
大模型"幻觉"的问题一直存在,RAG 是缓解其幻觉的一个很重要的途径,当然还有其他缓解的方式,SFT 这些。
有几点比较重要的优势吧。
- 外挂知识,可以增加 LLM 推理的能力、准确性,能够更加复合客观事实。
- 知识库增删修改更加方便,遇到 bug 及时修复知识库,或者更新知识库即可,基本是用户没有感知的状态,不像 SFT 还需要重新训练,耗费时间。
- 再就是可解释性,通过工程手段,可以给出合理的引用链接,增加可信度,比如现在做的一些智能搜索,后面会列出答案来自的链接。
如果还有其他的,下面评论区留言哈,大家一起探讨。
那么现在有多少开源框架可以很方便的做这个事情呢?
是否需要重复造轮子呢?
这是个好问题。
所以总结下目前都有哪些开源的 RAG 框架,看下是否满足开发需要,就是一个蛮有必要的事情。
这里总结一些 RAG 框架,有其他的可以评论区留言。
框架一:LangChain
LangChain 是一个用于开发由大型语言模型 (LLMs) 驱动的应用程序的框架。
项目地址:https://github.com/langchain-ai/langchain
目前已获得 86.2k starts 关注,众人关注。
对于这些应用程序,LangChain 简化了整个应用程序生命周期:
开源库:使用 LangChain 的模块化构建块和组件构建您的应用程序。与数百家第三方提供商集成。
生产化:使用 LangSmith 检查、监控和评估您的应用程序,以便您可以充满信心地不断优化和部署。
部署:使用 LangServe 将任何链转换为 REST API。
现在市面上有很多人用 LangChain 结合 LLM 构造 RAG 流程,因为 Langchain 里面包含了各种组件,向量检索、文本分割、大模型调用,还有很多其他的都在里面。
这里有一份 LangChain RAG 的教资料,可收藏:https://python.langchain.com/v0.2/docs/tutorials/rag/
框架二:Langchain-Chatchat
一种利用 langchain 思想实现的基于本地知识库的问答应用,目标期望建立一套对中文场景与开源模型支持友好、可离线运行的知识库问答解决方案。
项目地址:https://github.com/chatchat-space/Langchain-Chatchat
目前已收获 28.7k 关注。
这是项目的流程框架。
它解决的痛点
该项目是一个可以实现 完全本地化推理的知识库增强方案, 重点解决数据安全保护,私域化部署的企业痛点。
可以免费商用,无需付费。
支持市面上主流的本地大语言模型和 Embedding 模型,支持开源的本地向量数据库。
这里是一份框架的文档: https://github.com/chatchat-space/Langchain-Chatchat/wiki/
框架三:QAnything
QAnything (Question and Answer based on Anything) 是致力于支持任意格式文件或数据库的本地知识库问答系统,可断网安装使用。
目前已支持格式: PDF(pdf),Word(docx),PPT(pptx),XLS(xlsx),Markdown(md),电子邮件(eml),TXT(txt),图片(jpg,jpeg,png),CSV(csv),网页链接(html)
项目地址: https://github.com/netease-youdao/QAnything/tree/master
网易出品,目前已收获 9.9k 关注。
架构如下
有个很重要的关键点;两阶段检索
知识库数据量大的场景下两阶段优势非常明显,如果只用一阶段 embedding 检索,随着数据量增大会出现检索退化的问题,如下图中绿线所示,二阶段 rerank 重排后能实现准确率稳定增长,即数据越多,效果越好。
这是文档:https://qanything.ai/docs/introduce
框架四:RAGFlow
RAGFlow 是一款基于深度文档理解构建的开源 RAG(Retrieval-Augmented Generation)引擎。RAGFlow 可以为各种规模的企业及个人提供一套精简的 RAG 工作流程,结合大语言模型(LLM)针对用户各类不同的复杂格式数据提供可靠的问答以及有理有据的引用。
项目地址: https://github.com/infiniflow/ragflow/tree/main
目前已收获 8.8k 关注
主要功能
🍭 “Quality in, quality out”
- 基于深度文档理解,能够从各类复杂格式的非结构化数据中提取真知灼见。
- 真正在无限上下文(token)的场景下快速完成大海捞针测试。
🍱 基于模板的文本切片
- 不仅仅是智能,更重要的是可控可解释。
- 多种文本模板可供选择
🌱 有理有据、最大程度降低幻觉(hallucination)
- 文本切片过程可视化,支持手动调整。
- 有理有据:答案提供关键引用的快照并支持追根溯源。
🍔 兼容各类异构数据源
- 支持丰富的文件类型,包括 Word 文档、PPT、excel 表格、txt 文件、图片、PDF、影印件、复印件、结构化数据、网页等。
🛀 全程无忧、自动化的 RAG 工作流
- 全面优化的 RAG 工作流可以支持从个人应用乃至超大型企业的各类生态系统。
- 大语言模型 LLM 以及向量模型均支持配置。
- 基于多路召回、融合重排序。
- 提供易用的 API,可以轻松集成到各类企业系统
系统架构
这是文档:https://ragflow.io/docs/dev/
框架五:FastGPT
FastGPT 是一个基于 LLM 大语言模型的知识库问答系统,提供开箱即用的数据处理、模型调用等能力。同时可以通过 Flow 可视化进行工作流编排,从而实现复杂的问答场景!
项目地址:https://github.com/labring/FastGPT
目前项目已收获 14.2k 关注。
介绍文档:https://doc.fastgpt.in/docs/intro/
框架六:Haystack
Haystack 是一个端到端 LLM 框架,允许构建由 LLMs、Transformer 模型、矢量搜索等支持的应用程序。无论想要执行检索增强生成 (RAG)、文档搜索、问答还是答案生成,Haystack 都可以将最先进的嵌入模型和 LLMs 编排到管道中,以构建端到端结束 NLP 应用程序并解决案例。
项目地址:https://github.com/deepset-ai/haystack
目前已收获 14.2k 关注。
重要特点
- 技术不可知论:允许用户灵活地决定他们想要的供应商或技术,并可以轻松地将任何组件更换为另一个组件。Haystack 允许使用和比较 OpenAI、Cohere 和 Hugging Face 提供的模型,以及自己的本地模型或 Azure、Bedrock 和 SageMaker 上托管的模型。
- 明确:使不同的移动部件如何相互“对话”变得透明,以便更轻松地适应技术堆栈和用例。
- 灵活:Haystack 在一个地方提供所有工具:数据库访问、文件转换、清理、拆分、训练、评估、推理等。只要需要自定义行为,就可以轻松创建自定义组件。
- 可扩展:为社区和第三方提供统一且简单的方式来构建自己的组件,并围绕 Haystack 培育开放的生态系统。
这是文档:https://docs.haystack.deepset.ai/v2.0/docs/get_started
框架七:LLAMA_Index
LlamaIndex 是一个用于构建上下文增强 LLM 应用程序的框架,上下文增强是指在您的私有或特定于域的数据之上应用 LLMs 的任何用例。
项目地址:https://github.com/run-llama/llama_index
目前已有 32.4k 关注。
提供了以下工具:
- 提供数据连接器来摄取现有数据源和数据格式(API、PDF、文档、SQL 等)。
- 提供构建数据(索引、图表)的方法,以便这些数据可以轻松地与 LLMs 一起使用。
- 为数据提供高级检索/查询界面:输入任何 LLM 输入提示,获取检索到的上下文和知识增强输出。
- 允许与外部应用程序框架轻松集成(例如与 LangChain、Flask、Docker、ChatGPT 等)。
文档,内容很全,可收藏: https://docs.llamaindex.ai/en/stable/
以上一共有 7 个 RAG 框架(如果有其他的,评论区留言,下次再追加上)
- Langchain
- Langchain-Chatchat
- LLAMAIndex
- QAnything
- RAGFlow
- FastGPT
- Haystack
想必这些框架能够满足日常的需要,不能够满足的话,参考这些开源框架再自己搭建符合业务需求的框架。
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。
这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费
】
