Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >介绍 RAG(检索增强生成)

介绍 RAG(检索增强生成)

原创
作者头像
IT蜗壳-Tango
发布于 2024-07-29 15:58:18
发布于 2024-07-29 15:58:18
1.8K023
代码可运行
举报
文章被收录于专栏:机器学习机器学习
运行总次数:23
代码可运行

什么是 RAG?

RAG(Retrieval-Augmented Generation)是一种将检索和生成结合在一起的模型架构,特别适用于回答开放域问答、生成相关文本以及需要丰富背景信息的任务。它结合了检索系统和生成模型的优势,通过从大型数据库中检索相关信息并使用生成模型对其进行处理,生成更准确和上下文相关的答案或内容。

RAG 的基本原理

RAG 模型的工作流程可以分为以下几个步骤:

  1. 检索:从一个大型知识库或文档集合中检索与输入查询相关的文档或段落。通常使用 BM25 或密集检索模型如 DPR(Dense Passage Retrieval)来实现这一点。
  2. 编码:对检索到的文档和输入查询进行编码,生成它们的表示。
  3. 融合:将输入查询的表示与检索到的文档表示结合起来,作为生成模型的输入。
  4. 生成:使用生成模型(如 T5 或 BART)生成回答或相关内容。

这种方法通过结合检索到的丰富信息和生成模型的强大生成能力,能够在复杂和开放域任务中表现出色。

RAG 的应用场景

RAG 模型在多个领域有广泛的应用,包括但不限于:

  • 开放域问答:在回答开放性问题时,RAG 可以从大量文档中检索相关信息,生成更准确和详尽的回答。
  • 对话系统:在聊天机器人或对话系统中使用 RAG,可以使回答更具上下文相关性和信息量。
  • 文档摘要:从多个文档中检索相关段落,生成一个综合性的摘要。
  • 信息检索增强:在需要综合多个信息源的任务中,RAG 可以提供更全面的回答或内容。

RAG 的优势

  1. 上下文丰富:通过检索相关信息,RAG 可以生成更符合上下文的回答或内容。
  2. 灵活性强:RAG 可以处理多种类型的输入和任务,包括问答、生成文本、文档摘要等。
  3. 性能优越:在开放域问答和其他需要丰富背景信息的任务中,RAG 的性能优于单纯的生成模型。

RAG 的实现步骤

步骤一:数据准备

首先,需要准备一个大型的文档集合或知识库。这可以是维基百科、新闻文章、科学文献等。还需要准备一组训练数据,包含查询和对应的答案。

步骤二:检索模型训练

使用 BM25 或训练一个密集检索模型(如 DPR),通过双塔结构编码器将查询和文档表示为向量。通过对比学习,使查询和相关文档的向量接近,而与无关文档的向量远离。

代码语言:python
代码运行次数:16
运行
AI代码解释
复制
# 训练 DPR 模型的简化示例
from transformers import DPRContextEncoder, DPRQuestionEncoder, DPRReader

# 加载预训练模型
context_encoder = DPRContextEncoder.from_pretrained('facebook/dpr-ctx_encoder-single-nq-base')
question_encoder = DPRQuestionEncoder.from_pretrained('facebook/dpr-question_encoder-single-nq-base')

# 示例数据
questions = ["What is RAG?", "How does RAG work?"]
contexts = ["RAG is Retrieval-Augmented Generation", "RAG combines retrieval and generation"]

# 编码
question_encodings = question_encoder(questions)
context_encodings = context_encoder(contexts)
步骤三:生成模型训练

选择一个生成模型(如 T5 或 BART),将输入查询和检索到的文档表示结合起来,作为生成模型的输入。训练过程中,模型学习如何根据输入生成准确的回答或内容。

代码语言:python
代码运行次数:5
运行
AI代码解释
复制
from transformers import BartForConditionalGeneration, BartTokenizer

# 加载预训练模型
model = BartForConditionalGeneration.from_pretrained('facebook/bart-large')
tokenizer = BartTokenizer.from_pretrained('facebook/bart-large')

# 示例数据
input_text = "RAG combines retrieval and generation. How does it work?"
inputs = tokenizer(input_text, return_tensors="pt")
output = model.generate(**inputs)

# 解码输出
generated_text = tokenizer.decode(output[0], skip_special_tokens=True)
print(generated_text)
步骤四:模型融合

将检索模型和生成模型结合起来,构建一个完整的 RAG 模型。通过优化和微调,使其在特定任务上达到最佳性能。

代码语言:python
代码运行次数:2
运行
AI代码解释
复制
# 简化的 RAG 模型示例
class RAGModel:
    def __init__(self, retriever, generator):
        self.retriever = retriever
        self.generator = generator
    
    def generate(self, query):
        retrieved_docs = self.retriever.retrieve(query)
        combined_input = query + " ".join(retrieved_docs)
        generated_output = self.generator.generate(combined_input)
        return generated_output

# 使用示例
rag_model = RAGModel(retriever=context_encoder, generator=model)
response = rag_model.generate("What is RAG?")
print(response)

总结

RAG(检索增强生成)通过将检索和生成相结合,能够在需要丰富背景信息的任务中表现出色。它不仅在开放域问答和对话系统中具有很大的应用潜力,还可以用于文档摘要和信息检索增强等任务。通过适当的数据准备、检索模型训练、生成模型训练和模型融合,可以构建出一个强大的 RAG 系统。


原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【大模型学习 | RAG & ReAct】
🧠 基础的prompting技术中,都是通过样例提示,激活模型本身的推理功能,但在现实的情况中,依然存在着仅仅依靠模型本身的知识是无法解决的,例如:① 数据库知识不足 ② 模型能力缺乏等。在这些情况下,往往需要外部的知识和能力来辅助模型,因此,本文将RAG技术和ReAct技术作为进阶的prompting技术进行介绍。
九年义务漏网鲨鱼
2025/07/17
8120
RAG技术架构与实现原理
Retrieval-Augmented Generation(RAG)是一种结合了检索和生成技术的自然语言处理(NLP)模型。该模型由Facebook AI提出,旨在提升生成式模型在处理开放域问答、对话生成等任务中的性能。RAG模型通过引入外部知识库,利用检索模块(Retriever)从大量文档中提取相关信息,并将这些信息传递给生成模块(Generator),从而生成更加准确和有用的回答或文本。
TechLead
2024/07/15
6.2K0
RAG技术架构与实现原理
深入解析 RAG:检索增强生成的原理与应用
RAG 是“检索增强生成”(Retrieval-Augmented Generation)的简称,简单来说,就是一种让 AI 更聪明的方法。它把“找资料”和“写答案”两件事结合起来。怎么做到的呢?
码事漫谈
2025/03/11
1.2K0
深入解析 RAG:检索增强生成的原理与应用
检索增强生成(RAG):大模型的‘外挂知识库
想象一下,你正在参加一场考试,但这次考试允许你“开卷”。你不仅可以从书本中找到答案,还能灵活运用这些知识来回答问题。这就是RAG技术的魅力所在!传统的生成式AI(如ChatGPT)只能依赖“脑子里存的东西”(训练好的模型参数),而RAG则像一位“开卷小天才”,既能查资料,又能灵活作答。它结合了信息检索与生成式大模型的双重优势,让AI的回答更精准、更实时。那么,RAG究竟是如何工作的?它又能为我们的生活带来哪些改变?让我们一探究竟!
一只牛博
2025/05/31
3720
检索增强生成(RAG):大模型的‘外挂知识库
极客-RAG快速开发实战|果fx
RAG(Retrieve, Answer, Generate)是一种融合检索和生成的模型架构,常用于问答系统、对话生成等任务。它通常分为三个步骤:
sou百课优
2024/11/18
2110
检索增强生成(RAG)
检索增强生成(Retrieval-Augmented Generation, RAG)是一种结合了检索机制和生成模型的先进技术,旨在提高自然语言处理系统的准确性和上下文相关性。本文将详细介绍如何从零开始构建一个RAG系统,包括数据处理、检索、生成以及部署等各个环节。
@小森
2025/01/03
5940
[完结14章]RAG全栈技术从基础到精通 ,打造高精准AI应用
RAG是一种结合检索(Retrieval)和生成(Generation)的技术,主要用于让AI在回答问题或生成内容时,能够更好地利用外部知识库,而不是完全依赖于自身预训练的知识。简单来说,它就像是给AI配了一个“外挂”,让它在回答问题时可以先去知识库中查找相关的资料,然后再生成答案。
奔跑企鹅907340320
2025/04/14
4740
一文带你了解RAG(检索增强生成) | 概念理论介绍+ 代码实操(含源码)
针对大型语言模型效果不好的问题,之前人们主要关注大模型再训练、大模型微调、大模型的Prompt增强,但对于专有、快速更新的数据却并没有较好的解决方法,为此检索增强生成(RAG)的出现,弥合了LLM常识和专有数据之间的差距。
ShuYini
2023/12/21
43.2K82
一文带你了解RAG(检索增强生成) | 概念理论介绍+ 代码实操(含源码)
RAG流程优化(微调)的4个基本策略
在本文中,我们将介绍使用私有数据优化检索增强生成(RAG)的四种策略,可以提升生成任务的质量和准确性。通过使用一些优化策略,可以有效提升检索增强生成系统的性能和输出质量,使其在实际应用中能够更好地满足需求。
deephub
2024/07/01
1.5K0
RAG流程优化(微调)的4个基本策略
蚂蚁 KAG 框架核心功能研读
作者介绍:薛明,拥有近 10 年在医疗和零售领域应用机器学习和人工智能的经验。曾就职于通用电气、复星医药等企业。长期专注于医学图像、自然语言处理以及数据科学的研发工作,如训练/推理框架、数据挖掘与分析等领域。于 2024 年 7 月创立 AI 公司 Percena,负责基于大模型的应用产品开发,如 RAG & Agent 等。
可信AI进展
2024/11/18
7670
RAG彻底爆了!一文读懂其架构演进及核心要点
本文系统梳理了检索增强生成(RAG)架构的演进历程,从基础架构到智能化解决方案的迭代路径。文章通过对比Naive RAG、Advanced RAG、Modular RAG和Agentic RAG四代架构的核心特点与技术突破,揭示了RAG技术如何通过模块化设计、智能体协同等创新解决知识更新、语义对齐和复杂任务处理等关键问题,为LLM应用落地提供重要参考。由于作者水平有限,若相关理解有误请以实际为准。
腾讯云开发者
2025/07/16
3150
RAG彻底爆了!一文读懂其架构演进及核心要点
RAG (Retrieval-Augmented Generation) 教程
在自然语言处理(NLP)领域,生成式 AI(如 GPT-4)在文本生成方面表现优异,但其主要依赖于预训练的知识,无法动态获取最新信息。为了解决这一问题,RAG(检索增强生成,Retrieval-Augmented Generation)应运而生,它结合了信息检索(IR)与文本生成(NLG)技术,使得 AI 可以利用外部知识库,提高回答的准确性和可解释性。
IT蜗壳-Tango
2025/03/31
1K0
深入理解RAG:检索与生成的融合
原文地址:https://dev.to/portkey/understanding-rag-a-deeper-dive-into-the-fusion-of-retrieval-and-generation-1l4b
明明如月学长
2024/05/24
4200
深入理解RAG:检索与生成的融合
大模型RAG进阶实战营教程
本文深入探讨了大模型RAG(Retrieval-Augmented Generation)技术在人工智能领域的最新进展与应用。文章首先介绍了RAG技术的基本概念和发展历程,随后详细分析了其核心架构和工作原理。通过多个行业应用案例,展示了RAG技术在实际场景中的强大表现。文章还深入探讨了RAG技术的进阶优化策略,包括检索效率提升和生成质量改进方法。最后,对RAG技术面临的挑战和未来发展趋势进行了展望,为相关领域的研究者和实践者提供了有价值的参考。
奔跑企鹅907340320
2025/06/11
4170
RAG+内容推荐,应该如何实践?
首先回顾一下 RAG 技术定义,它可以结合信息检索和生成模型的混合。简单来说,RAG = 预训练的语言模型 + 信息检索系统,使模型能够在生成自然语言时引入外部知识,从而提高生成内容的准确性和多样性。
掘金安东尼
2024/07/18
3780
RAG+内容推荐,应该如何实践?
人工智能|RAG 检索增强生成
现有的 ChatGPT 的大语言模型中,虽然它本身的功能已经非常强悍了,但是它依然存在一些致命的问题:
霍格沃兹测试开发Muller老师
2024/07/24
4370
langchain中的召回增强生成(RAG)一览
RAG是一种通过额外的、通常是私有或实时的数据来增强LLM知识的技术。LLM能够推理各种广泛的主题,但它们的知识仅限于它们训练时的公共数据,到达其特定时间节点为止。如果你想构建可以推理私人数据或在模型截止日期之后引入的数据的人工智能应用程序,你需要用特定信息增强模型的知识。将适当的信息带入并插入到模型提示中的过程被称为“检索增强生成”(RAG)。
山行AI
2023/12/12
5K0
langchain中的召回增强生成(RAG)一览
Transformers 4.37 中文文档(五十三)
Qwen2 是 Qwen 团队推出的大型语言模型新系列。之前,我们发布了 Qwen 系列,包括 Qwen-72B、Qwen-1.8B、Qwen-VL、Qwen-Audio 等。
ApacheCN_飞龙
2024/06/26
1.9K0
检索增强生成(RAG)领域关键数据集综述:分类、挑战与展望
检索增强生成(RAG)通过融合外部知识库与大型语言模型,已成为解决知识密集型自然语言处理(NLP)任务的关键范式。高质量、多样化的数据集是推动RAG技术发展、评估模型能力和揭示其局限性的基石。本文旨在对RAG领域的关键数据集进行一次系统性的梳理与全景分析。我们基于对30篇核心研究论文的分析,提炼并审查了148个相关数据集,并首次提出一个涵盖六大类别的层次化分类体系,即问答(Question Answering)、事实验证(Fact Verification)、槽填充(Slot Filling)、多模态任务(Multimodal Tasks)、专项应用(Specialized Applications)和评估基准(Evaluation and Benchmarking)。分析表明,尽管问答任务(尤其是开放域QA)仍是RAG研究的主流,但面向医疗、金融、教育等垂直领域的专业数据集和融合文本、图像的多模态数据集正迅速兴起。同时,如RGB、WikiEval和ARES等专用评估基准的出现,标志着RAG的评测正从单一的准确性指标向检索质量、生成忠实度、鲁棒性等多维度、细粒度的方向深化。然而,当前数据集在复杂与多跳推理、高效的领域自适应、跨模态信息的深度对齐以及对模型幻觉的精准量化等方面仍面临显著挑战。本文最后对未来数据集的构建方向进行了展望,强调了开发动态、可解释且能应对高风险应用场景的新型评测资源的紧迫性,以期为下一代RAG技术的研究与落地提供坚实的数据支持。
致Great
2025/07/12
1860
检索增强生成(RAG)领域关键数据集综述:分类、挑战与展望
大模型微调与RAG检索增强有何区别?从基础原理到案例分析全面详解
如果你一直在跟着Fanstuck博主的脚步探索AI大模型的相关内容,从最初的大模型Prompt工程解析,DeepSeek全面解析,到实际的私有化大模型开发部署,再到深入NL2SQL、知识图谱大模型和ChatBI等更高阶应用.我是Fanstuck,致力于将复杂的技术知识以易懂的方式传递给读者,热衷于分享最新的行业动向和技术趋势。如果你对大模型的创新应用、AI技术发展以及实际落地实践感兴趣,那么请关注Fanstuck。
fanstuck
2025/03/04
1.4K6
大模型微调与RAG检索增强有何区别?从基础原理到案例分析全面详解
推荐阅读
相关推荐
【大模型学习 | RAG & ReAct】
更多 >
交个朋友
加入腾讯云官网粉丝站
蹲全网底价单品 享第一手活动信息
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档