当前位置: 首页 > news >正文

[RAG] 基础知识

RAG基础知识

基本介绍

RAG,全称 Retrieval-Augmented Generation,中文:检索增强生成

核心思想:为大模型补充来自于外部的相关数据与上下文,从而帮助大模型生成更丰富、更准确、更可靠的内容。

也就是 临时给大模型外挂一个知识库

image-20250528091104556

解决的问题:

  1. 受限于已有知识库,无法快速新增语料信息
  2. 重新训练大模型需要很长的时间

案例

开发一个在线的自助产品咨询工具,允许客户使用自然语言进行交互式的产品问答。

假设我们的产品是:香蕉手机

请介绍一下您公司这款产品(香蕉手机)与XX产品的不同之处

为了让客户有更好的体验,决定使用大模型来构造这样的咨询功能并将其嵌入到公司的官方网站。

如果你直接使用通用大模型,那么结果可能是:

  1. 大模型回答:我不知道什么是香蕉手机
  2. 大模型胡编乱造一段回答(大模型幻觉)

【RAG技术之前的解决方案】

将公司资料作为提示词的一部分,如下图:

image-20250528093201193

🤔 思考:存在什么问题?

如果需要外挂的知识库内容非常的多(例如一本小说几十万字),那么通过这种方式提供给大模型,大模型也不能精确的找到答案。

经典架构

简单的 RAG 应用从整体上分为两个阶段:

  1. 数据索引(Data Indexing)
  2. 数据查询(Query)
    1. 检索(Retrieval)
    2. 生成(Generation)

1. 数据索引

在做数据索引时,通常分为这么几个步骤:

  1. 加载文档
  2. 切分成 chunks
  3. 转化为向量嵌入
  4. 存入向量数据库
image-20250528101753546

切分成chunks

对输入的文档进行分割,分割成一个一个知识块(Chunk),从而为后续嵌入做准备。

  1. 语义结构维度:强调的是语义完整性,防止模型拿到“断句、不完整”的上下文。

    可以按照句子的粒度进行切割,将每一段文本按句号、问号、叹号等 标点符号 分割。

    原文

    ChatGPT 是由 OpenAI 开发的大语言模型。它基于 Transformer 架构,具有强大的语言理解和生成能力。
    

    切割后

    ChatGPT 是由 OpenAI 开发的大语言模型。
    
    它基于 Transformer 架构,具有强大的语言理解和生成能力。
    
  2. 实现策略维度:满足向量模型有最大词元限制,比如 OpenAI embedding 最大约 8192 词元数。

    1. 固定长度字符切分:每 N 字符为一段,适合规则性较强的文档
    2. 词元切分:每 N 个词元切一段,兼容模型的词元数限制

上面这两个策略可以组合着来使用。

转为向量

将每个 chunk 转换为一个“高维向量”,用来表达其语义。

每个向量通常是一个长度为 1536 或 768 的浮点数数组,例如:

[0.112, -0.045, 0.203, ..., 0.087]  // 一个 chunk 的语义向量

存入向量数据库

一般会存储在功能全面的 向量数据库 里面,向量数据库会提供强大的向量检索算法与管理接口,这样可以很方便地对输入问题进行 语义检索

常见向量数据库:

向量库 特点
Supabase PostgreSQL + pgvector 扩展
Weaviate 云服务 + 本地部署均可
Pinecone 高性能、易接入
Milvus 海量数据、高性能搜索
MemoryVectorStore 纯 JS 内存向量库(测试用)

2. 数据查询

数据查询阶段的两大核心阶段是 检索生成

image-20250528134121574

检索阶段

分为下面几个步骤:

  1. 将 Query(用户的问题) 转化为向量

  2. 在向量数据库中进行相似度检索(语义检索),相似度的检索,有几种方式

    1. 余弦相似度
    2. 欧氏距离
    3. 点积
  3. 为生成阶段准备检索结果

生成阶段

graph LRA[检索到的语义相关内容] --> B{构造Prompt}C[用户Query] --> BB --> D[调用LLM]D --> E[生成回答]E --> F[返回给用户]classDef process fill:#f9f,stroke:#333;classDef data fill:#bbf,stroke:#333;classDef output fill:#9f9,stroke:#333;class A,C data;class B,D,E process;class F output;

构造出来的提示词大致如下:

[系统提示]:
你是一个智能客服助手,请基于以下资料回答用户的问题。[资料内容]:
1. 本产品支持7天无理由退货。
2. 如存在质量问题,可申请退换货。
3. ...[用户问题]:
我买的这个产品坏了还能退吗?[你的回答]:

完整的流程

image-20250528094543784

-EOF-

http://www.zskr.cn/news/15812.html

相关文章:

  • 数据结构 - 字典树 Trie
  • 激活函数实现
  • win10界面如何改成经典菜单?
  • 量子迁移计划启动:应对未来密码学挑战
  • 珂朵莉树 ODT
  • 01.linux基础
  • 详细介绍:Kubernetes实战:MariaDB误删恢复与数据持久化
  • 从模拟入侵到渗透测试:我摸清了黑客的套路,也懂了企业的软肋 - 详解
  • 集合幂级数,FMT 与 FWT 学习笔记
  • 上传文件前端需要注意的三个点:
  • Jenkins安装与配备
  • 适合新手的PPT模板网站,简单操作但效果好!
  • 无人机常用的几种飞行模式
  • springCloudMaven打包配置 - br
  • 题解:P5504 [JSOI2011] 柠檬
  • 太简单了!原来PS在线抠图可以这么玩,背景分离无压力
  • 深入解析:【Leetcode】随笔
  • DateStyle日期时间字符串序列化 - br
  • 十月四日就听《10월 4일》
  • 赋能制造新质生产力:制造业专用低代码平台选型指南(2025) - 详解
  • 4-7〔O҉S҉C҉P҉ ◈ 研记〕❘ WEB应用攻击▸文件上传漏洞-B - 实践
  • 完整教程:六款智能证照工具盘点,打造个性化“数字身份档案”
  • 深入解析:音频降噪技术:从原理到工具的完整指南(scipy librosa noisereduce soundfile pedalboard)
  • zkSync Era在ETHDenver的技术盛宴:zkEVM与Layer2创新实践
  • 11_linux镜像下载
  • 10_windows11安装virtualbox
  • OpenEuler 25.03 installed UKUI but cant run msedge and chrome
  • 网络调整config.xml的android.mk解析
  • 【Rive】rive-android源码分析
  • 完整教程:基于Spring Boot的爱琴海购物公园网上商城系统的设计与实现