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

RAG是什么

ruisui881个月前 (03-29)技术分析14

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是什么” 的相关文章

企业费用管控遇难题,财务经理上线费控报销系统,老板直呼加薪

如何向浪费开刀?这几乎是当前很多企业要面临的一个关键性问题,企业近年的经营都遇到很大的难题,虽然销售额在上升,但是费用也在上升,给企业带来很大的压力。费用管控对企业而言就显得格外重要。那么财务人员如何做好费用管控?公司的费用支出总的来说包括两方面吧:差旅费用和日常费用、这其中差旅费用又是一项比较大的...

Python 幕后:Python导入import的工作原理

更多互联网精彩资讯、工作效率提升关注【飞鱼在浪屿】(日更新)Python 最容易被误解的方面其中之一是import。Python 导入系统不仅看起来很复杂。因此,即使文档非常好,它也不能让您全面了解正在发生的事情。唯一方法是研究 Python 执行 import 语句时幕后发生的事情。注意:在这篇文...

别让“跑焦”毁所有!仅需这一项设置,即可显著改善镜头对焦精度

我常常会收到一些摄影爱好者的私信,也一直在努力的帮助大家解决更多摄影中常见问题。在我收到的所有问题中。有一个问题是最麻烦的,那就是“为什么我的图像看起来模糊?”。这个问题几乎每个人都遇到过,究其原因可以说是多种多样相对复杂。起初我一直认为是对焦问题所导致,也就有了我之前所写的“后按对焦”以及“对焦模...

数组、去重、排序、合并、过滤、删除

ES6数字去重 Array.from(new Set([1,2,3,3,4,4])) //[1,2,3,4] [...new Set([1,2,3,3,4,4])] //[1,2,3,4]2、ES6数字排序 [1,2,3,4].sort(); // [1, 2,3,4],默认是升序...

vue中router常见的三种传参方式

目录:我们在使用vue开发的过程中使用router跳转的时候肯定会遇到传参的情况;一般情况就三种传参是最常见的;那我们就来看看都有那几种传参方式吧!第一种:{ path: '/mall:id', name: 'Mall', component:...

vue3使用vue-router路由(路由懒加载、路由传参)

vue-router 是 vue的一个插件库1. 专门用来实现一个SPA单页面应用2 .基于vue的项目基本都会用到此库SPA的理解1) 单页Web应用(single page web application,SPA)2) 整个应用只有一个完整的页面3) 点击页面中的链接不会刷新页面, 本身也不会向...