RAG 原理解析

你可以把 RAG (检索增强生成) 看作是一种**"系统架构模式"或者"设计思想",而 Milvus(向量数据库) 和 ETL 流程 则是实现这个架构最核心的基建工程**。
我们可以把 RAG 拆解为"冰山模型":
1. 冰山之下:离线数据工程
这部分是用户看不见的,但决定了系统的上限。也就是你总结的 ETL + 向量数据库。
ETL 加工(清洗/切片)
就像是把原材料(非结构化文档)加工成标准砖块。如果切分得太碎或太乱,后面房子就盖不好。
向量化 (Embedding)
把砖块赋予属性(语义向量)。
入库 (Milvus)
仓库管理,把砖块分门别类码放好。
2. 冰山之上:在线服务链路
这一部分是你刚才未提及,但同样属于 RAG 实现的关键环节。仅有数据在库里还不够,还需要实时的计算流程:
问题向量化
用户问"年假怎么休?",系统要实时把这句话也变成向量 [0.2, 0.5, ...] 。
检索 (Retrieval)
拿着问题的向量去 Milvus 仓库里比对,找出最相似的那几块"砖"。
提示词组装 (Prompt Engineering)
把找出来的"砖"(上下文)和用户的"问题",填入一个预设的模板中。
模板示例:
"你是一个助手。请根据以下已知信息:【检索到的公司年假制度片段...】 来回答用户的问题:【年假怎么休?】"
生成 (Generation)
最后把这一大段话喂给 LLM,生成最终答案。
RAG 的"产研"视角
如果用你熟悉的互联网产研视角来类比:
| RAG的组成部分 | 对应产研概念 | 你的团队角色 |
|---|---|---|
| RAG整体解决方案 | 产品 | 项目经理 / 产品经理 (定义场景, 如"智能客服") |
| Milvus数据库 / 中间件 | 后端开发 / 运维 | 负责部署、性能调优 |
| ETL 流程数据清洗 / 数据仓库 | 数据工程师 | 负责数据质量、清洗策略 |
| LLM推理引擎 / CPU | 算法工程师 | 负责选模型、调优 Prompt |
核心结论
做 RAG,难点往往不在"数据库" (Milvus 很成熟了),而在"ETL 策略"。
垃圾进,垃圾出 (Garbage In, Garbage Out): 如果 ETL 切片切坏了(比如把代码的函数头和函数体切开了),Milvus 存的就是废料,LLM 拿到的也是废料,最后回答肯定是一本正经地胡说八道。
下一步建议
既然你已经掌握了架构逻辑,在实际落地中,PMO 最头疼的往往是**"检索效果不好"**。你想了解一下"当 Milvus 搜出来的内容不准确时,我们通常有哪些优化手段(比如 Rerank 重排序)"吗?这将是你评估项目技术风险的重要考点。