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、视频处理

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

相关推荐
qq_452396234 小时前
【模型手术室】第四篇:全流程实战 —— 使用 LLaMA-Factory 开启你的第一个微调任务
人工智能·python·ai·llama
兰.lan4 小时前
【黑马ai测试】判定表+流程图+ai生成测试用例
ai·测试用例·流程图·ai编程
深藏功yu名5 小时前
Day24:向量数据库 Chroma_FAISS 入门
数据库·人工智能·python·ai·agent·faiss·chroma
知识分享小能手5 小时前
MongoDB入门学习教程,从入门到精通,MongoDB创建、更新和删除文档(3)
数据库·学习·mongodb
西红市杰出青年5 小时前
MCP 的三种数据传输模式教程(stdio / SSE / Streamable HTTP)
网络·网络协议·http·ai
诗句藏于尽头6 小时前
基于GPT2的底模微调实现微信聊天风格模仿输出
学习·微信
Luke Ewin6 小时前
Linux中部署Qwen3.5大模型
linux·运维·服务器·ai·llm·qwen3.5
CoderJia程序员甲6 小时前
GitHub 热榜项目 - 日榜(2026-03-25)
人工智能·ai·大模型·github·ai教程
%小农6 小时前
学习cursor
学习