【RAG】001-RAG概述

【RAG】001-RAG概述

0、整体思维导图

下面的知识是基于一个视频教程结合 AI 生成的笔记,我也看了一遍,有了一些印象,但这种印象很快就会消失,知识也就消失了,为了使得知识在我的大脑中停留更长的时间,我要主动增加学习的宽度(在更多场景下学习和记忆同一知识)!

一、RAG 介绍

1、LLM 的主要局限性

大语言模型(LLM)尽管功能强大,但仍存在以下明显的局限性:

  • 时效性问题:模型的知识在预训练后就固定了,无法自动更新最新信息
  • 知识覆盖局限
    • 缺乏特定领域或私有领域的专业知识
    • 对组织内部文档、数据等私域信息无法感知
  • 幻觉问题:容易生成看似合理但实际错误的内容,影响可靠性

2、RAG 的价值与优势

检索增强生成(Retrieval-Augmented Generation,RAG)技术能够有效解决上述问题:

  • 提升输出质量

    • 通过实时检索相关信息,显著提高生成内容的准确性
    • 基于事实的回答,减少模型幻觉
  • 降低实施成本

    • 无需大规模模型训练,显著降低计算资源消耗
    • 相比微调方案,实施门槛更低,投入产出比更高
  • 灵活性与可扩展性

    • 支持知识库持续更新,确保信息时效性
    • 易于整合多源数据,快速扩充知识范围
    • 可根据实际需求动态调整检索策略

二、RAG 概述

1、RAG 的概念

RAG(Retrieval-Augmented Generation,检索增强生成)是一种结合了检索和生成技术的文本处理方法 ,主要用于提高语言模型的输出质量

RAG 通过在生成回答之前,先从知识库中检索相关信息,然后将检索到的信息作为上下文提供给语言模型,从而实现更准确、更可靠的响应。这种方法既保留了 LLM 强大的理解和生成能力,又克服了其知识局限性。

2、RAG 的工作原理

RAG 的核心工作流程包含以下步骤:

  1. 知识库构建

    • 收集和处理文档资料
    • 将文档切分为适当大小的文本块
    • 使用向量化模型将文本转换为向量并存储
  2. 检索过程

    • 接收用户查询并向量化
    • 在向量数据库中搜索相似内容
    • 获取最相关的文本片段
  3. 生成过程

    • 将检索到的相关内容与用户问题组合
    • 构建合适的提示词(Prompt)
    • 通过 LLM 生成最终答案

3、RAG 的应用场景

RAG 技术在多个领域都有广泛应用:

  • 企业知识库问答

    • 客服智能问答
    • 内部文档检索
    • 技术支持服务
  • 个性化内容生成

    • 产品推荐
    • 个性化营销文案
    • 定制化报告生成
  • 实时信息服务

    • 新闻摘要生成
    • 市场分析报告
    • 数据洞察分析

4、实施注意事项

在实施 RAG 系统时,需要注意以下几点:

  1. 数据质量控制

    • 确保知识库数据的准确性和时效性
    • 定期更新和维护知识库内容
    • 建立数据质量审核机制
  2. 性能优化

    • 选择合适的向量数据库
    • 优化检索策略和参数
    • 合理设置缓存机制
  3. 系统监控

    • 跟踪系统响应时间
    • 监控检索准确率
    • 收集用户反馈并持续优化

三、RAG vs Fine-tuning(微调)

1、两种方法的基本概念

  • RAG

    • 通过实时检索相关信息来增强模型输出
    • 无需对模型本身进行修改
    • 知识库可以随时更新
  • Fine-tuning

    • 在预训练模型基础上进行额外训练
    • 直接修改模型权重
    • 知识被固化在模型参数中

2、对比分析

2.1 实施成本

  • RAG

    • 初始投入低,主要成本在知识库建设
    • 无需大规模计算资源
    • 部署维护相对简单
  • Fine-tuning

    • 需要较高的计算资源
    • 需要专业的训练技能
    • 对数据量和质量要求高

2.2 灵活性

  • RAG

    • 知识库可以随时更新
    • 易于添加或移除信息
    • 支持多源数据整合
  • Fine-tuning

    • 知识更新需要重新训练
    • 模型一旦训练完成较难修改
    • 数据变更成本高

2.3 性能表现

  • RAG

    • 输出更可控,有明确的信息来源
    • 适合需要高准确度的场景
    • 响应时间可能较长(需要检索)
  • Fine-tuning

    • 响应速度快
    • 可能出现知识遗忘
    • 难以追溯答案来源

3、选择建议

3.1 适合使用 RAG 的场景

  • 需要频繁更新知识的应用
  • 对答案准确性要求高的场景
  • 预算有限但需求明确的项目
  • 需要透明解释的业务场景

3.2 适合使用 Fine-tuning 的场景

  • 任务明确且相对固定的应用
  • 对响应速度要求高的场景
  • 有充足的训练资源和专业团队
  • 需要深度定制模型行为的项目

3.3 混合使用策略

在实际应用中,可以考虑将两种方法结合使用:

  • 使用 Fine-tuning 优化模型的基础能力
  • 使用 RAG 补充最新知识
  • 根据具体场景动态选择或组合使用

四、RAG 工作流程

1、离线处理阶段

1.1 文档预处理

  • 数据收集

    • 整理各类文档资源(PDF、Word、HTML等)
    • 提取文本内容
    • 清洗和标准化文本
  • 文档分块

    • 按语义完整性分割文本
    • 控制文本块大小(通常256-1024个token)
    • 保持上下文连贯性
  • 元数据提取

    • 记录文档来源
    • 提取时间戳信息
    • 标注文档类型和主题

1.2 向量化处理

  • 文本嵌入

    • 选择合适的嵌入模型
    • 将文本块转换为向量
    • 优化向量维度和质量
  • 向量存储

    • 选择向量数据库
    • 建立索引结构
    • 设置检索参数

2、实时处理阶段

2.1 查询处理

  • 查询分析

    • 理解用户意图
    • 提取关键信息
    • 优化查询表达
  • 查询向量化

    • 使用与文档相同的嵌入模型
    • 生成查询向量
    • 标准化处理

2.2 相似度检索

  • 向量检索

    • 执行向量相似度计算
    • 应用过滤条件
    • 排序筛选结果
  • 上下文组装

    • 获取相关文本片段
    • 组织检索结果
    • 控制上下文长度

2.3 生成响应

  • Prompt 构建

    • 设计提示模板
    • 整合检索内容
    • 添加约束条件
  • LLM 调用

    • 发送完整 Prompt
    • 控制生成参数
    • 处理模型输出
  • 后处理优化

    • 格式化输出
    • 添加引用来源
    • 质量检查

3、性能优化策略

3.1 检索优化

  • 索引优化

    • 选择合适的索引算法
    • 定期重建索引
    • 优化检索参数
  • 缓存策略

    • 热点查询缓存
    • 结果集缓存
    • 智能预加载

3.2 质量提升

  • 文本分块策略

    • 重叠分块
    • 动态块大小
    • 语义完整性保证
  • 相关性优化

    • 多轮检索
    • 结果重排序
    • 相关度阈值控制

3.3 响应速度

  • 并行处理

    • 批量向量化
    • 并行检索
    • 异步处理
  • 资源调优

    • 硬件配置优化
    • 负载均衡
    • 服务扩缩容

4、图示

相关推荐
新加坡内哥谈技术4 分钟前
亚马逊推出新型仓储机器人 Vulcan:具备“触觉”但不会取代人类工人
人工智能
Alter12305 分钟前
从一城一云到AI CITY,智慧城市进入新阶段
人工智能·智慧城市
科技小E10 分钟前
国标GB28181视频平台EasyCVR安防系统部署知识:如何解决异地监控集中管理和组网问题
大数据·网络·人工智能·音视频
chat2tomorrow32 分钟前
如何使用 QuickAPI 推动医院数据共享 —— 基于数据仓库场景的实践
大数据·数据仓库·人工智能·医院·sql2api
lcw_lance33 分钟前
数字孪生[IOC]常用10个技术栈(总括)
大数据·运维·人工智能
AI蜗牛车41 分钟前
【LLM+Code】Devin Prompt&Tools详细解读
人工智能·语言模型·prompt·copilot·agent
极小狐43 分钟前
如何使用极狐GitLab 软件包仓库功能托管 ruby?
开发语言·数据库·人工智能·git·机器学习·gitlab·ruby
UI设计兰亭妙微44 分钟前
APP 设计中的色彩心理学:如何用色彩提升用户体验
人工智能·ux
Jamence1 小时前
多模态大语言模型arxiv论文略读(六十五)
人工智能·语言模型·自然语言处理
缘友一世1 小时前
深度学习系统学习系列【5】之深度学习基础(激活函数&损失函数&超参数)
人工智能·深度学习·学习