一、什么是RAG(/s/1KgqyIsczORML_aUoWPg8Aw 提取码:bxir )
RAG(Retrieval-Augmented Generation,检索增强生成) 是一种结合了信息检索技术与语言生成模型的人工智能技术。该技术通过从外部知识库中检索相关信息,并将其作为提示(Prompt)输入给大型语言模型(LLMs),以增强模型处理知识密集型任务的能力,如问答、文本摘要、内容生成等。RAG模型由Facebook AI Research(FAIR)团队于2020年首次提出,并迅速成为大模型应用中的热门方案。
二、如何构建RAG?
以下是构建RAG系统的一般步骤:
选择或训练语言模型:选择一个适合任务需求的预训练语言模型。
构建知识库:根据需要处理的信息类型构建相应的知识库,并将知识库中的信息转换为适合快速检索的格式(如向量)。
设计检索机制:实现一个检索组件,能够根据语言模型的输入查询知识库,并返回最相关的信息。
整合与训练:将检索组件和语言模型整合,进行端到端的训练或微调,以优化整个系统的性能。
在实际操作中,可以使用如CLIP(Contrastive Language-Image Pre-training)等多模态模型来增强RAG系统处理多种类型数据的能力。
构建RAG系统时,可以通过开源框架和模型来避免“更多的框架依赖”,如不依赖特定的LangChain或LLaMA index,这样可以更加灵活地设计系统,并可能降低技术门槛和成本。
RAG系统的优势在于其能够以成本效益高的方式适应不断变化的信息,提高AI响应的准确性和可靠性,同时增加透明度和信任度。
三、RAG发展方向
RAG(Retrieval-Augmented Generation)是一种将信息检索与语言生成结合的人工智能技术。随着技术的不断进步,RAG的研究发展方向主要集中在以下几个方面:
更高效的检索机制:研究更高效、准确的检索算法,如基于上下文语义的检索,以提高RAG系统的性能。
多模态信息融合:探索如何将文本、图像、音频等多种模态的信息融合到RAG系统中,以增强其处理复杂任务的能力。
知识库的构建与管理:研究如何构建大规模、结构化的知识库,并高效管理这些知识库,以支持RAG系统进行快速、准确的检索。
模型的可解释性与可靠性:提高RAG系统的可解释性,确保其生成的内容更加可靠和可信,减少“幻觉”现象的发生。
端到端训练与优化:研究如何对RAG系统进行端到端的训练和优化,以提升整体性能。
适应性与迁移学习:使RAG系统具备更好的适应性和迁移学习能力,使其能够快速适应新的任务和环境。
应用领域的拓展:将RAG技术应用于更多领域,如客服、医疗、法律等,以解决实际问题。
开源框架与工具的发展:开发更多开源的RAG框架和工具,降低技术门槛,促进学术研究和工业应用的融合。
伦理与隐私问题:研究RAG系统可能带来的伦理和隐私问题,并提出相应的解决方案。
人机协作:探索RAG系统与人类专家的协作方式,以提高任务完成的质量和效率。
四、RAG 与其它技术比较
在大语言模型的优化方法中,RAG 经常与 Fine-tuning(FT)和提示工程相比较。我们用象限图从外部知识需求和模型适配需求两个维度来说明三种方法的差异。
提示工程: 利用模型的固有功能,而对外部知识和模型适应的需求最少。
RAG: 可以比作为信息检索提供量身定制的教科书模型,非常适合精确的信息检索任务。早期阶段(Naive RAG),几乎不需要对模型进行修改
FT: 需要进一步训练模型,针对不同下游特定任务,需要重新训练整个庞大的模型;相当于学生随着时间的推移内化知识,适用于需要复制特定结构、风格或格式的场景。
五、RAG智能体特性特点
上下文至上:传统RAG实现的最大局限之一是它们无法真正理解并考虑更广泛的对话上下文。而RAG智能体则被设计成具有上下文感知能力。它们可以把握对话的微妙之处,考虑历史,并相应地调整行为。这意味着更连贯和相关的回应,就像智能体真正参与了一场自然对话一样。
智能检索策略:RAG系统过去依赖静态规则进行检索,RAG智能体比规则那聪明多了。它们采用智能检索策略,动态评估用户的查询、可用工具(数据来源)和上下文线索,以确定最合适的检索行动。就像有一个知道在哪里找到你需要的信息的私人助手一样。
多智能体协作:复杂的查询通常涉及多个文档或数据源,在RAG智能体的世界里,我们有多智能体协作的能力。想象一下有多个专门的智能体,每个智能体都是自己领域或数据源的专家,共同合作并综合他们的发现,为用户提供全面的回应。就像有一组专家一起解决你最棘手的问题一样。
智能推理:RAG智能体不仅擅长检索信息;它们还配备了远远超越简单检索和生成的推理能力。这些智能体可以对检索到的数据进行评估、校正和质量检查,确保用户收到的输出是准确可靠的。不再担心获取到可疑信息了!
生成后验证:RAG智能体可以进行生成后的检查。它们可以验证生成内容的真实性,甚至运行多次生成并为用户选择最佳结果。
适应性与学习:RAG智能体架构可以设计成包含学习机制,使智能体能够随着时间的推移适应和改进其性能。这就像有一个系统,你使用得越多,它就越聪明、越高效!
六、微调 or RAG?
通过上面的介绍,两者属于完全不同的方式对外提供的丰富,但是可以达到同样的效果,那我们应该如何选择呢?
1、你的大模型需不需要具备一些特殊能力,也可以说是特殊定制的大模型。比如回答问题的方式,模型本身所具备的“性格”等。举个具体的场景,你的大模型的应用场景是新闻播报员,当你向他提问时,大模型就会以专业官方正式的口吻来回答问题。或者你的场景是一个智能客服,那大模型回答的口吻可能是礼貌、平易近人的语气回答问题。而这种需求必须通过对大模型进行特殊的训练,通过微调的方式去实现,RAG方式很难做到。
2、数据是否经常变化。如果你的数据经常变化,比如企业内的一些业务数据变化频繁,而且有些需要及时更新作出反馈,那实际上选择RAG是最合适的方式。因为如果我们使用微调的话,每次数据的更新我们都需要重新去微调大模型,这个显然是不现实的。但是RAG知识库则不同,因为是外挂的,本质上是去更新背后向量数据库的数据,操作简单,就类似于我们业务更新数据库mysql一样容易。
3、解决幻觉问题,RAG优于大模型微调。大模型的幻觉问题不可避免,并且大模型本身就是一个黑盒,当我们提出一个问题时,不清楚内部解析细节给出的反馈过程,出现了幻觉也难以追踪。但是RAG可以通过在外部添加专业知识,降低大模型出现幻觉的概率,并且可以对出现的具体幻觉通过加强RAG知识内容去解决,同时大模型之前的检索RAG知识库的步骤和结果是可以进行追踪的。
七、面向RAG的性能评估
有几个框架都可以应用于RAG 系统的性能评估,指标包括总体答案相关性、答案溯源性、可信度和检索到的上下文相关性等等。
Ragas框架,使用可信度和答案相关性作为 RAG 检索部分生成答案的质量指标和经典的上下文准召率。评估框架 Truelens 建议采用检索与查询的上下文相关性、答案溯源性以及与查询的答案相关性,将这三个指标作为 RAG 系统的性能评估三元组。其中,关键且最可控的指标是检索到的上下文相关性,其次是答案相关性和溯源性。
LangChain 有一个非常先进的评估框架 LangSmith,可以实现自定义的评估器,还可以跟踪 RAG 流水线的运行状态,以使系统更加透明。而在LlamaIndex 中有一个rag_evaluator的包,提供了一个简便工具使用公共数据集来评估RAG系统。
小结
RAG 系统的主要挑战除了答案的相关性和可信度之外,还有就是速度。然而,还有很多其他事情需要考虑,比如基于网络搜索的 RAG,与Agent架构的深度融合,以及关于 LLM 长期记忆的一些方式方法。即便如此,RAG 仍然有着广泛的应用范围,我们在使用RAG落地应用的时候, 希望本文中提到的这些技术能够对大家有所帮助。
学习拼课关注me 2024-09-18