一、什么是RAG,它为啥重要
RAG(Retrieval-Augmented Generation,检索增强生成)是一种将外部知识库检索与大模型生成结合的技术架构。它解决的核心问题是:大模型训练数据有截止日期,且无法覆盖企业私有数据,直接提问容易产生"幻觉"。
一句话回答:RAG的本质是"先检索、再生成"——用户提问后,系统先从知识库中找到最相关的文档片段,将其作为上下文拼入提示词,再由大模型基于这些真实材料生成回答。
二、RAG系统的四个核心环节
| 环节 | 作用 | 关键技术点 |
|---|---|---|
| 文档解析 | 将原始文件转为可处理文本 | PDF/Word/HTML解析、表格识别 |
| 文本分快 | 将长文档切为合适大小的片段 | 分块策略、重叠窗口设置 |
| 向量化与存储 | 将文本转为向量并存入数据库 | Embedding模型选择、向量索引 |
| 检索与生成 | 匹配相关片段并送入模型生成答案 | 匹配相关片段并送入模型生成答案 |
三、分步搭建流程
第一步:文档预处理
- 支持格式:PDF、Markdown、Word、TXT、网页HTML
- 清洗规则:去除页眉页脚、广告水印、重复段落
- 表格处理:将表格转为"字段名: 值"的文本格式,避免向量化后语义丢失
第二步:文本分块(Chunking)
这是影响检索质量最关键的一步。
| 策略 | 适用场景 | 注意事项 |
|---|---|---|
| 固定长度切分(如512 token) | 通用文本 | 需设置10%-15%重叠,避免语义截断 |
| 按段落/标题切分 | 结构化文档 | 段落过长时需二次切分 |
| 递归切分 | 混合内容 | 先按大结构切,再对超长块递归细分 |
经验参数:单块200-500 token,重叠50-80 token,具体需根据文档类型调试。
第三步:向量化与入库
- 选择Embedding模型将文本块转为高维向量(常见维度:768、1024、1536)
- 存入向量数据库,建立ANN(近似最近邻)索引
- 同时保留原始文本和元数据(来源、页码、时间),用于后续溯源
第四步:检索与生成
- 用户提问 → 同样向量化
- 在向量库中做相似度检索,取Top-K个最相关片段(K通常取3-5)
- 将检索到的片段按相关性排序,拼入提示词模板
- 大模型基于"检索材料 + 用户问题"生成最终回答
请根据以下参考资料回答用户问题。如果资料中没有相关信息,请明确说明"未找到相关内容",不要编造。
四、影响效果的常见问题与对策
| 问题 | 原因 | 原因 |
|---|---|---|
| 检索不到相关内容 | 分块过大或Embedding模型与领域不匹配 | 缩小分块粒度;尝试领域微调的Embedding |
| 检索到了但答案不准 | 缩小分块粒度;尝试领域微调的Embedding | 加入重排序(Rerank)环节,过滤低相关片段 |
| 模型仍编造内容 | 提示词未做"无信息则拒答"约束 | 提示词未做"无信息则拒答"约束 |
| 多跳问题答不好 | 提示词未做"无信息则拒答"约束 | 引入多轮检索或图结构知识索引 |
五、Q&A
Q:RAG和模型微调怎么选?
A:两者不互斥。RAG适合知识频繁更新、需要溯源的场景;微调适合让模型学习特定风格或领域表达。实际项目中常组合使用。
Q:分块大小对效果影响有多大?
A:非常大。块太大会引入噪声,块太小会丢失上下文。建议用同一批测试问题,对比不同分块参数下的检索命中率和回答准确率。
Q:向量检索和关键词检索能结合吗?
A:可以,且推荐结合。向量检索擅长语义匹配,关键词检索(如BM25)擅长精确术语匹配,混合检索通常优于单一方式。
六、总结
搭建RAG系统的核心不在于调用某个API,而在于分块策略、检索质量、提示词约束这三个环节的持续调优。建议先用小规模文档跑通全流程,再逐步扩大知识库规模,每一步都用测试集验证效果,避免"搭完了才发现检索不准"的返工。