前言:为什么你的RAG系统不够“快”?
在2026年,大模型应用早已遍地开花。但很多开发者发现,直接上RAG虽然解决了幻觉问题,却带来了新的痛点:慢和贵。每次用户问一个简单的高频问题(如“怎么退货?”),都要走一遍向量化、检索、上下文拼接、LLM推理的流程,不仅延迟高,Token成本也居高不下。
为了解决这个问题,我们设计了一套混合架构:用Redis+MySQL拦截80%的高频问题,用Milvus+LLM解决20%的长尾复杂问题。今天,就带大家彻底拆解这套架构。
一、RAG整体架构:双引擎驱动
我们先看项目的MVP(最小可行性产品)架构。传统的RAG是线性的,而我们的架构是分流的。
整个系统的核心逻辑在于“高频问答匹配”这一关卡:
- 如果相似度 ≥0.85≥0.85 :直接走高频流程。优先查Redis缓存,命中则秒回;未命中则查MySQL,返回标准答案。
- 如果相似度 <0.85<0.85 :判定为复杂或长尾问题,进入RAG核心流程。
这种设计巧妙利用了问题的长尾分布特性,既保证了热门问题的响应速度,又保留了大模型处理复杂问题的能力。
二、高频问答模块构建:速度与精度的博弈
这是本项目的亮点所在。我们如何让系统“变聪明”,知道哪些问题可以直接回答?
1. 核心流程设计
根据架构图,高频问答模块的处理流程如下:
- Redis缓存层:作为第一道防线。我们对用户输入进行了预处理(文本标准化、关键字提取、容错机制)。这意味着用户输入“怎么退huo”和库里存的“如何退货”也能通过模糊匹配命中。
- BM25算法匹配:在MySQL层,我们计算用户Query与题库中问题的BM25分数。
- 阈值设定:经过大量实践验证,我们将0.85设定为黄金阈值。低于这个分数的,说明问题差异较大,强行回答容易出错,必须转交给RAG流程。
2. 问题库的构建与更新
高频题库不是静态的,它有一个完整的生命周期:
- 采集:收集用户真实提问来源。
- 聚类:对问题进行聚类分析,合并语义重复的问题。
- 审核与生成:生成标准答案,并经过人工或自动化审核。
- 更新机制:支持日、周、月维度的动态更新,确保题库紧跟业务变化。
三、RAG核心流程与知识库构建:数据的“炼金术”
当问题穿透了高频层,就进入了RAG的深水区。这一部分主要解决“知识库怎么建”和“怎么查得准”的问题。
1. 知识库构建流水线
根据我们的构建流程图,数据从原始文件到向量数据库经历了严密的加工:
- 数据加载(Loaders):支持多模态数据,包括.txt, .pdf, .doc, .ppt, .png, .jpg, .md等。针对PDF和图片,我们使用了OCR技术(如OCRPDFLoader)提取文字。
- 文本分块(Splitters):这是RAG效果的关键。我们采用了ChineseRecursiveTextSplitter和MarkdownTextSplitter。
- 策略:不仅仅是按字符切分,而是结合语义结构。
- 父子块索引:为了实现“检索大窗口,生成小窗口”,我们采用了从小到大的父子块策略。检索时匹配父块(获取完整上下文),生成时利用子块(确保精准度)。
- 向量化与存储:
- 使用BGEM3EmbeddingFunction生成高质量的嵌入向量。
- 最终写入Milvus向量数据库。Milvus的高性能索引(如IVF_FLAT)保证了在亿级数据下的毫秒级检索。
2. RAG检索与生成策略
- 混合检索:单纯依靠向量检索(Dense Retrieval)有时会丢失关键词匹配能力。因此,我们结合了稀疏向量(关键词)和稠密向量(语义)进行混合检索。
- 重排序(Rerank):在Milvus初步召回Top-K个文档后,引入重排序模型对结果进行二次精排,确保送入LLM的上下文是最相关的。
- Prompt工程:将检索到的上下文(Context)与用户问题(Query)拼装成Prompt,喂给LLM(如Qwen2.5-7B)。
四、系统评估体系:拒绝“玄学”调优
做完系统如果不评估,就是耍流氓。我们建立了一套完整的RAG项目评估体系,涵盖响应效率、响应质量和检索效果。
1. 响应效率
- Redis响应速度:监控缓存命中率,目标是在毫秒级返回。
- RAG系统响应速度:监控从Query输入到Answer输出的总耗时。
2. 响应质量
- 检索指标:
- 上下文精确率:检索回来的内容有多少是真正有用的?
- 上下文召回率:所有相关的信息都检索全了吗?
- 生成指标:
- 答案忠实度:回答是否忠实于检索到的上下文(防止幻觉)?
- 答案相关性:回答是否解决了用户的问题?
3. 评估方法论
我们引入了RAGAS等自动化评估框架,结合人工抽检。对于高频模块,重点关注匹配准确率;对于RAG模块,重点关注F1分数和N-gram匹配度。
五、项目反思与未来展望
做完这个项目,我们总结出了一些宝贵的经验(基于项目反思图):
结语
从MVP到工业级落地,RAG项目的核心不仅仅是调用一个API,而是对数据流的精细控制。通过引入Redis高频缓存和MySQL结构化存储,我们成功解决了RAG“慢”的痛点;通过Milvus和精细化的知识库构建,我们保证了回答的“准”。
希望这篇博客能为大家的RAG实战之路提供一些新的思路!如果你觉得有收获,欢迎点赞、收藏、关注,我们评论区见!



