28岁,从运营商外包学习AI的第90天,我做出了第一个能用的RAG系统

📅 2026/6/27 6:12:09
28岁,从运营商外包学习AI的第90天,我做出了第一个能用的RAG系统
我是运营商门店的驻店专员说白了就是卖套餐办业务。没有技术背景Python 是今年 3 月在网吧学的。90 天后我搭了一个电信套餐智能问答系统部署在云服务器上评测准确率 98.7%零幻觉。这篇文章记录全过程踩了什么坑怎么爬出来的以及一个非技术人员搞 AI 到底行不行。为什么要做这个今年 3 月我调到新门店。店员们都没接触过购机优惠和套餐业务平时也忙凑不到一起培训。运营商的套餐体系很复杂——不同档位的流量、通话、副卡规则、宽带权益、橙分期补贴每个维度都不一样。新人问老员工老员工也记不全翻文档又慢。我想能不能搞个智能客服店员直接问系统自动答当时我刚考完 CAIE注册人工智能工程师学了一堆概念但一行代码都没写过。第一阶段从零开始第1-30天Day 1Chroma Studio 8G 内存3 月 20 日我下载了 Cherry Studio——一个可视化的 RAG 搭建工具。用 Ollama 部署了 BGE-M3 嵌入模型配了 DeepSeek R1把套餐文档导进去。第一次对话测试CPU 风扇嗡嗡响内存占用 99%等了好几分钟返回一串红色错误——文档没上传成功。折腾半小时文档终于嵌入进去了。再问一个问题又等了十几分钟。8G 内存的电脑跑 BGE-M3就是这个效果。但答案是对的。那一刻我知道方向对了。平台选型踩了五个坑接下来就是不停地试错平台结果问题Cherry Studio能用但太简单定制化程度低没法加业务逻辑腾讯云 ADP试用额度烧完幻觉严重误操作把额度用光了AnythingLLM安装成功模型调用不稳定经常超时Dify没搞成在网吧电脑部署重启就没了LangChain最终选择自由度高学习曲线陡但可控最终选 LangChain不是因为它最好用而是因为它最灵活——我可以控制检索策略、Prompt 模板、模型调用的每一步。最崩溃的一天编码问题TXT 文档是 ANSI 编码嵌入模型只认 UTF-8。我试了 PowerShell 命令中文乱码Python 脚本网吧电脑跑不了VS Code 插件内容被清空……最后发现要两步转换先转带 BOM 的 UTF-8再转无 BOM 的。就这么一个小问题折腾了大半天。后来才明白数据清洗是 RAG 最基础也最容易被忽视的环节。网吧做开发我在网吧的电脑上搞这些。下载 Ollama 要几个小时国外节点Docker 要重启才能用重启就没了模型文件拷到移动硬盘结果丢失……后来我学聪明了在家先下好整个~/.ollama目录拷到移动硬盘带去网吧。网吧做开发每一步都是在跟环境搏斗。转折点上云第30-45天本地搞不下去了。我租了阿里云 ECS4 核 8G把环境迁上去。世界清净了不用担心电脑重启不用跟网吧网速较劲24 小时在线在云服务器上用 LangChain ChromaDB SiliconFlow API 重新搭建了 RAG 系统这才算真正走上了正轨。性能优化120秒 → 4秒第45-60天系统能跑了但慢得离谱——120 秒才出结果。瓶颈分析LLM API 调用占了 80% 的时间原始工作流调了 3 次 LLM意图识别 → 信息提取 → 生成回复。优化步骤第一步减少 LLM 调用把 3 次调用合并成 1 次直接让 LLM 根据检索结果生成回答。120s → 25s第二步换模型从 DeepSeek-V4-Flash25 秒/次换成 GLM-4-9B3 秒/次。客服场景不需要最强模型够用就行。25s → 4s第三步加 Reranker用 BGE-Reranker-v2-M3 对检索结果重排序召回率提升 20-30%。第四步优化 Prompt告诉 LLM不要编造信息文档里没有就说不知道。幻觉率从 30% 降到 10%。到这一步纯 RAG 版本rag-from-zero基本能用了。我把它集成到钉钉店员可以直接在群里 机器人 问问题。第二阶段从 RAG 到 Agent第60-90天纯 RAG 能用了但有两个硬伤对比型查询效果差——“99 元和 129 元套餐有什么区别”系统只能分别查两个套餐没法做结构化对比多跳推理不行——“办 2 张副卡后全家多少流量”需要先查主卡流量、再查副卡规则、再算总和于是我把它升级成dx_agent——一个带 Agent 路由的智能问答系统。核心升级查询进来 ↓ 意图分类器simple / comparison / complex ↓ ├── simple → 快速路径直接检索 回答1.8s ├── comparison → 对比路径per-tier 检索 表格展示4.4s └── complex → Agent 路径Tool CallingLLM 自主决定查什么关键改动改动效果单一向量检索 → 向量 BM25 混合检索召回率从 70% 提升到 85%无路由 → 查询分类路由简单查询省 60% token无状态 → 会话历史管理支持多轮对话一次性返回 → SSE 流式输出用户体验提升无缓存 → LRU TTL 缓存重复查询秒回无对比 → per-tier 独立检索 表格对比查询满分率 100%Agent 路由的实现用 LangChain 的 Tool Calling给 LLM 注册了三个工具tools[Tool(query_plan_info,search_knowledge_base,查询套餐详情),Tool(compare_plans,compare_plans,对比多个套餐),Tool(calculate,calculate,计算费用/流量),]LLM 自己决定什么时候查知识库、什么时候用计算器。对于办 2 张副卡后全家多少流量这种问题它会先调query_plan_info查主卡套餐的流量和副卡规则再调calculate算总流量最后组织语言回答最终评测结果30 道真实业务题目覆盖单点查询、套餐对比、复杂计算三种类型指标结果评测题目30 题成功率30/30100%综合得分148/150 星98.7%幻觉率0%平均响应3.0s最快1.4s最慢9.9s其中对比型查询“99 元和 129 元套餐区别”从纯 RAG 版本的 40% 满分率提升到100%。两个版本的对比维度rag-from-zeroV1dx_agentV2检索方式单一向量检索向量 BM25 混合检索路由无全部走 RAG查询分类 → 三条路径简单查询响应4.0s1.8s提升 55%对比查询不支持4.4s表格展示多轮对话无状态会话历史管理输出方式一次性返回SSE 流式 打字机效果缓存简单缓存LRU TTL 统计准确率85%98.7%我学到的 5 件事1. RAG 的灵魂在检索不在搭建搭个能跑的 RAG 很快但让它好用需要花 3 倍以上的时间调优检索策略。分块大小、相似度阈值、Reranker 配置——这些细节决定了系统的上限。2. 数据质量 一切垃圾数据进去垃圾结果出来。文档编码、分块大小、信息冲突——这些脏活决定了系统的上限。我花了一整天解决编码问题但这比换十个模型都有用。3. 选对模型比选贵模型重要客服场景用 GLM-4-9B3 秒比 DeepSeek-V4-Flash25 秒更合适牺牲 5% 准确率换来 85% 的速度提升。够用就好不要追最强。4. AI 是工具不是魔法它没有自主意识你不给指令它就不动。它会幻觉会忘记你给过的知识。掌控程度决定效果。5. 没有技术背景不是障碍我做的是销售。从 Cherry Studio 到 LangChain从网吧电脑到云服务器从 120 秒到 1.8 秒——每一步都是边学边做。你不需要会写底层框架你需要的是理解业务问题然后找到合适的工具去解决它。技术栈总结组件选型框架LangChain LangGraph向量数据库ChromaDB嵌入模型BAAI/bge-large-zh-v1.5RerankerBAAI/bge-reranker-v2-m3LLMGLM-4-32B-0414SiliconFlow API部署阿里云 ECS FastAPI集成钉钉机器人 / Web UI写在最后这个项目从 3 月 20 日开始到现在 90 天。中间经历了无数次失败、换方案、从头再来。有人说非技术人员搞不了 AI我觉得不对。你不需要会写底层框架你需要的是理解业务问题然后找到合适的工具去解决它。RAG 不是终点。下一步我计划把它做成 MCP Server做成可以培训店员的智能顾问。路还长但方向对了。作者关彧 | GitHub: Guanyu-AI-pro项目地址rag-from-zero