1. 项目概述:什么是朴素版RAG?
RAG(Retrieval-Augmented Generation)这两年火得不行,但很多教程一上来就是Hugging Face、LangChain这些重型工具,对新手特别不友好。今天咱们就抛开代码,用最朴素的视角拆解RAG的核心流程。就像做菜不用料理机,先搞清楚刀工火候这些基本功。
这个"朴素版"特指:
- 不用任何现成框架
- 手动模拟每个环节
- 重点关注数据流转逻辑
- 适合第一次接触RAG的开发者建立直觉理解
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心流程拆解
2.1 传统生成模型的痛点
假设你让一个语言模型写"2023年诺贝尔物理学奖得主的贡献",它可能:
- 编造不存在的研究成果(幻觉问题)
- 给出过时的信息(训练数据截止性)
- 遗漏关键细节(缺乏专业知识)
RAG的解决方案就像考试时允许你:
- 先翻教科书查资料(检索)
- 再组织语言答题(生成)
2.2 RAG四步工作流
2.2.1 文档预处理
原始文档可能是PDF、网页或数据库记录,需要:
- 分块:按语义切分(如每段或每节)
- 技巧:重叠分块(后一块包含前一块部分内容)
- 向量化:用Embedding模型转换文本为向量
- 典型维度:768或1024维浮点数
- 关键点:相似内容在向量空间距离近
2.2.2 检索阶段
当用户提问"量子纠缠的实验验证"时:
- 将问题同样转为向量
- 计算与所有文档块的余弦相似度
- 返回Top-K最相关的文本块(K通常取3-5)
注意:这里用余弦相似度而不是欧式距离,因为更关注方向而非绝对位置
2.2.3 生成阶段
把检索到的文本块和原始问题拼接成如下提示:
code复制根据以下资料回答问题:
[检索到的文本块1]
[检索到的文本块2]
...
问题:量子纠缠的实验验证有哪些?
语言模型会:
- 理解检索内容
- 提取关键信息
- 生成结构化的回答
2.2.4 反馈优化(可选)
记录哪些检索结果被实际用于生成:
- 点击率高的块:可能质量高
- 从未使用的块:考虑删除或重分块
2.3 关键组件选型逻辑
| 组件 | 朴素版选择 | 工业级选择
