RAG相关问题整理学习

1、什么场景应该选择RAG而不是Fine-tuning?

RAG是给模型外挂知识库,Fine-tuning是模型微调,用自己的数据再训练模型,让模型具备某些能力,相当于把数据压缩到模型中。

1、知识需要频繁更新,比如:产品文档、政策、内部资料等,用RAG只需要更新向量库

2、需要引用知识的来源,比如:告诉用户答案的引用文档

3、数据量有限,Fine-tuning需要大量高质量数据,RAG有多少用多少,门槛低。

4、预算,rag开发快、部署简单、成本低,微调贵、慢、门槛高

2、文档分块策略有哪些?

1、固定长度

按字符数/Token数切分,实现简单,块大小可控,可能切断句子,破坏语义

适合:结构混乱、无格式、纯文本

2、LLM语义切片

用LLM判断语义边界,语义完整性最好,成本高,速度慢

适合:对精度要求极高、不差成本的场景

3、层次切片

按文档结构(标题/章节)切分,需要文档有清晰结构

适合:手册、文档、论文、说明书

4、滑动窗口

固定窗口 + 重叠区域,保留上下文连续性,存储空间增加、有冗余

适合:长文本、小说、连续叙述类内容

3、项目中用了什么分块策略?为什么选它?

句子切分:按标点符号切,比如:句号、问号、感叹号、换行、顿号,分好等。

示例:

项目中用滑动窗口 + 句子边界的混合策略

按句子边界切分,保证每个块语义完整

使用滑动窗口,设置20%重叠,确保跨块的信息不会丢失

【原因】

产品文档,内容之间有上下文依赖

小块检索精度高,但可能丢上下文

大块上下文完整,但噪声多,检索精度下降

20%重叠在存储开销和检索质量间取得平衡

4、描述下RAG系统流程?

R = Retrieve(检索)

A = Augmented(增强)

G = Generate(生成)

先从知识库中查资料

把查询的资料和用户问题给大模型

大模型根据这些上下文,生成答案

详细步骤如下,可以采用框架qwen-Agent、langchain等框架快速搭建

1、文档解析

将PDF、word、excel、html等非结构化文档中提取文本

2、文档切块

将长文档切分小块

3、向量化

使用Embedding模型将文本块向量化,比如:text-embedding-v4

4、向量存储

将向量存入向量数据库,构建知识库

5、向量检索

将用户问题向量化,再向量数据库中匹配,召回top-k个

6、rerank

使用rerank模型,对上一步的top-k,再精确匹配,找出最优的几个匹配项

7、prompt构建

将检索到的上下文,拼接到提示词中,作为LLM的上下文

8、生成

LLM根据上一步输入,生成回答

5、你在项目中用了哪个 Embedding 模型?为什么选它?

示例:

使用了 text-embedding-v4

【原因】

1、模型在中文理解上表现好

2、维度支持512/1024,选择1024,在精度和存储上平衡

3、生态兼容: 与通义千问系列模型配合使用,可无缝对接 LangChain、Qwen-Agent 等 RAG 框架,降低开发与运维复杂度

备注:

512维:一句话512个特征标签

1024维:一句话1024个特征标

6、如果RAG效果很差,你会从哪几个方面去调试?

【数据质量问题】

1、本身提供的数据文档错误、不准确。

【检索阶段】

1、召回内容不符合要求

a、top-k数量不够,增加top-k数量

b、相关性太低,更换Embedding模型,比如:更适配中卫的Embedding模型

2、排查文档分块

a、分块太大,噪声多,检索不准(减小chunk_size,添加Rerank)

b、分块太小,上下文丢失(增大chunk_size,增加overlap)

3、用户口语化问题

a、用户口语化问题未检索到,使用query改写,让问题更规范,提升检索匹配度

【生成阶段】

1、LLM生成能力不足,理解力差,更换模型

2、LLM幻觉,未遵循上下文

强化prompt指令,"请严格基于提供的上下文回答,不要编造内容"

3、生成的答案很简洁

修改Prompt指令,要求详细回答、按指定格式输出

7、向量检索有什么缺点?什么是混合检索?

向量检索是语义匹配,BM25是关键词匹配

向量检索缺点:可能匹配不准

1、对精确关键词匹配不敏感 (如产品型号、人名)

比如产品型号、人名、编号、术语,只看语义相似度,不看字面是否完全一致。

2、容易匹配不准,甚至漏掉字面完全匹配的内容

语义相似但实际不是同一个东西,也会被召回

混合检索 = 向量检索 + BM25匹配,结合向量检索和关键词匹配相结合。

【示例】

缺点 1:对精确关键词、编号、型号不敏感

例子:

文档里有:"苹果 15 Pro 电池容量 4400mAh"

用户问:"苹果 15 电池多少?"

向量检索可能会把

"苹果 14"、"苹果 15 标准版"、"苹果 15 Pro Max"

都当成语义相似,把正确的排到后面去。因为向量看语义,不看精确字。

8、RAG如何处理超长文档?

1、分层索引: 先检索摘要,再检索详细段落

2、长上下文模型: 使用支持128K+的模型 (如Qwen, Claude)

3、滑动窗口: 块之间重叠,保留上下文的分块策略

9、如何防止 LLM 幻觉?

1、Prompt明确指令,"仅基于背景知识回答,不确定时直接说不知道"

2、让LLM标注答案引用的来源

要求答案中标注来自哪段文档,避免无依据编造。

3、rerank重排

保证召回的上下文是准确、相关的

4、答案验证: 用另一个LLM检查答案是否有上下文支撑

5、降低 temperature: 减少随机性

减小生成随机性,让模型输出更保守、更稳定。

10、多模态 RAG 怎么做?

使用同一个多模态Embedding模型,将文本、图片映射到同一向量空间。

1、图片处理

使用多模态Embedding模型,将图片向量化

2、表格

转换为Markdown或json格式,保留结构,再进行向量化

3、PDF

文本通过解析提取,图片 / 图表通过 OCR 识别,分开处理后统一索引。

4、视频处理

视频抽帧得到图像,语音转文字得到文本,分别向量化后建立多模态索引。

相关推荐
豆包公子20 分钟前
程序流监控 —— AUTOSAR CP 功能安全在裸机 MCU 上的实现:实践篇
单片机·嵌入式硬件·学习
yunhuibin36 分钟前
videopipe学习之demo运行
人工智能·深度学习·学习
Engineer邓祥浩1 小时前
JVM学习笔记(9) 第三部分 虚拟机执行子系统 第8章 虚拟机字节码执行引擎
jvm·笔记·学习
xuhaoyu_cpp_java1 小时前
MySql学习(三)
经验分享·笔记·学习·mysql
鱼鳞_1 小时前
Java学习笔记_Day31(IO流)
java·笔记·学习
red_redemption1 小时前
自由学习记录(162)
学习
AI、少年郎1 小时前
MiniMind 第 4 篇:《数据工程|Tokenizer 训练 + 预训练 / SFT/DPO 全数据集处理》
人工智能·python·ai·大模型·微调·大模型训练·minimind
马士兵教育2 小时前
AI工作岗位的就业分层?
开发语言·人工智能·学习·面试·职场和发展
weixin_443478512 小时前
Flutter学习之第三方组件:视频播放器控件
学习·flutter·音视频
徒 花2 小时前
HCIP学习16 RIP 与 OSPF 路由重分布综合实验
网络·学习·智能路由器·hcip·ensp