返回文章列表

RAG 原理解析

8 分钟
AI编程RAG
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 重排序)"吗?这将是你评估项目技术风险的重要考点。

AI编程RAG