当前位置:首页 > 技术分析 > 正文内容

RAG是什么

ruisui883个月前 (03-29)技术分析37

1. RAG 的工作流程(分步骤拆解)

RAG 的实现通常分为 数据准备、检索、增强生成 三个阶段:

(1) 数据准备阶段

● 目标:构建可检索的外部知识库。

● 关键步骤:

○ 数据收集:从文档、数据库、网页等渠道获取原始数据(如 PDF、HTML、JSON)。

○ 数据清洗:去除噪声(广告、重复文本)、标准化格式(统一时间、单位)、分块(将长文本切分为 100-500 词的片段)。

○ 向量化:使用嵌入模型(如 OpenAI 的 text-embedding-ada-002、Sentence-BERT)将文本转换为高维向量(例如 768 维)。

○ 存储到向量数据库:将向量与原文关联,存入专用数据库(如 FAISS、Pinecone、Milvus)。

(2) 检索阶段

● 目标:根据用户问题找到最相关的文本片段。

● 实现细节:

○ 问题向量化:将用户输入的查询(Query)转换为向量。

○ 相似度计算:在向量数据库中搜索与问题向量最接近的文本向量。常用算法:

■ 余弦相似度:衡量两个向量方向的一致性。

■ 近似最近邻(ANN):牺牲少量精度以提升检索速度(如 FAISS 的 HNSW 算法)。

○ 返回 Top-K 结果:通常返回前 3-5 个最相关的文本片段作为上下文。

(3) 生成阶段

● 目标:结合检索结果生成最终回答。

● 实现细节:

上下文拼接:将用户问题与检索到的文本片段拼接为模型输入,例如:

根据以下信息回答问题:{检索到的文本},问题:{用户输入}"

○ 生成模型推理:使用大语言模型(如 GPT-4、Llama 2)生成回答。模型会同时参考:

■ 自身预训练的知识(参数中的通用知识)。

■ 检索到的上下文(动态注入的领域知识)。

2. 技术组件详解

(1) 嵌入模型(Embedding Model)

● 作用:将文本映射到向量空间,使语义相似的文本在向量空间中距离更近。

● 常用模型:

○ 通用领域:OpenAI 的 text-embedding-ada-002、Google 的 Universal Sentence Encoder。

○ 专业领域:可微调开源模型(如 BERT、RoBERTa)以适应医疗、法律等垂直领域。

(2) 向量数据库(Vector Database)

● 核心功能:

○ 高效存储和检索高维向量。

○ 支持大规模数据(百万级以上)的实时搜索。

● 技术对比:

数据库 特点

FAISS Facebook 开源,适合静态数据集,需全量加载到内存

Pinecone 云托管服务,支持动态更新,自动处理索引优化

Milvus 开源分布式系统,支持海量数据,可扩展性强

(3) 生成模型(Generation Model)

● 模型选择:

○ 闭源模型:GPT-4(效果最佳但成本高)、Claude 2。

○ 开源模型:Llama 2、Falcon(可私有化部署,适合数据敏感场景)。

● 提示工程优化:

设计模板(Prompt Template)明确指令,例如:

"你是一个专业助手,请根据以下文档内容回答问题,如果信息不足则回答'不确定':{检索结果}"

○ 控制生成参数(temperature=0.3 减少随机性,max_tokens=500 限制长度)。

3. 高级优化策略

(1) 检索优化

● 混合检索:结合语义检索(向量相似度)与关键词检索(BM25 算法),提升召回率。

● 重排序(Rerank):使用小型模型(如 Cohere 的 Rerank API)对 Top-100 结果重新排序,选择 Top-3。

● 多跳检索(Multi-hop):迭代检索,例如先检索“气候变化的原因”,再根据结果检索“温室气体种类”。

(2) 生成优化

● 知识蒸馏:用大模型生成的数据训练小模型,降低成本。

● 自我验证(Self-Check):让模型在生成后检查回答是否与检索内容一致。

● 多模态扩展:检索图片、表格等非文本数据,生成图文并茂的回答(如 GPT-4V)。

4. 实际案例:医疗问答系统

(1) 场景需求

● 用户输入症状描述,系统给出可能的疾病及建议。

● 需确保回答基于最新医学指南,避免误导。

(2) RAG 实现

● 知识库:PubMed 论文、临床指南(更新至 2023 年)。

● 检索:使用 BioBERT(医学领域嵌入模型)检索相关段落。

生成:输入提示词:

"你是一名医生,根据以下最新研究回答患者问题,避免使用过时知识:

{检索到的医学文献}

问题:{患者描述的症状}"

● 输出控制:模型生成回答后追加免责声明(“本建议仅供参考,请咨询专业医生”)。

5. RAG 的挑战与解决方案

挑战 解决方案

检索质量差(噪声多) 增加数据清洗步骤,使用领域专用嵌入模型

生成与检索内容不一致 在提示词中强制要求引用检索结果,或添加后处理校验模块

实时性要求高(延迟敏感) 使用 GPU 加速向量检索,或预缓存热门查询的检索结果

多语言支持 使用多语言嵌入模型(如
paraphrase-multilingual-mpnet-base-v2)

6. RAG vs 微调(Fine-tuning)

● RAG 的优势:

○ 无需重新训练模型,成本低。

○ 知识可追溯(知道答案来自哪篇文档)。

● 微调的优势:

○ 更适合学习特定风格(如法律文书格式)。

○ 推理速度更快(无需检索步骤)。

● 混合方案:先微调模型适应领域,再结合 RAG 注入实时数据。

7. 工具链推荐

● 全流程框架:

○ LangChain:支持 RAG 流程编排,集成多种数据库和模型。

○ LlamaIndex:专为 RAG 优化,提供高效的数据连接器。

● 本地部署:

○ 嵌入模型:HuggingFace 的 all-MiniLM-L6-v2(轻量级开源模型)。

○ 向量数据库:Chroma(简单易用)、Weaviate(支持语义与关键词混合检索)。

通过以上细节,RAG 不仅是一个技术框架,更是一种平衡静态知识与动态信息的解决方案,正在成为企业级 AI 系统的核心组件

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/3121.html

标签: bert词向量
分享给朋友:

“RAG是什么” 的相关文章

vue3中父子传值、defineProps用法、defineEmits用法

Vue3中新增了一个 script setup 语法糖模式,可以在单文件组件中更简洁地编写组件逻辑。使用 script setup 语法后,props、data、computed、methods 等选项不再需要独立定义,而是可以直接在 setup 函数中声明,代码结构更加清晰,并且可以更方便地使用响...

佳能 EOS R8 深度评测

佳能 EOS R8 的定位是入门级全画幅无反光镜可换镜头相机。尽管在产品阵容中处于这一位置,R8 仍然是一个强大的相机,配备了先进的 R6 II 同款成像传感器、快速处理器和令人难以置信的自动对焦系统,体积小、重量轻、价格低。这款相机是发烧友、旅行者、家庭以及任何想要全画幅传感器相机的人的绝佳选择。...

三、Uni-app + vue3 页面如何跳转及传参?

Vue 项目往往需要使用 vue-router 插件,刚开始入门 Uni-app + Vue3 项目的同学,会不会想着路由使用 vue-router V4 版本不就可以了吗?不怕大家笑话,我就是这样想的,毕竟我是第一次使用 Uni-app ,由于孕期记性贼差,所以我决定写成笔记,加深记忆。uni-a...

vue开发微信小程序 - 登录组件

移动端登录功能抽象为通用组件,满足:不同移动端应用中一键登录功能复用支持多种登录:微信登录、H5、QQ登录登录组件使用//引用登录组件 import login from "../components/user/login.vue" export default { compone...

uni-app基于vue开发小程序与标准vue开发新增点

1、路由跳转传参uni.navigateTo({ url: `/pages/transition/spreadTextAction?t=${this.options.t}&rt=${this.options.rt}&l=${this.options.l}`});uni.navigateBack({...

SpringCloudalibaba+Vue开发仿社交小程序-青牛白马七香车

Spring Cloud Alibaba和Vue是当今开发领域中最为流行的技术组合之一。本文将介绍如何使用Spring Cloud Alibaba和Vue开发仿社交小程序。download: https://www.97yrbl.com/t-1632.html项目概述本项目是一个仿社交小程序,包括用...