既然不想被情绪内耗,我就用最新 RAG 做了一个永远准时的客服。今天下午三点,一个老客户在群里@我,问一个关于 n8n 工作流里 OpenAI 函数调用传参格式的问题。搁两年前,我肯定秒回,然后陷入长达半小时的“手把手”教学,最后对方可能还觉得我没讲清楚。现在?我直接把问题复制粘贴进我自己搭的客服系统,三秒后,一段带着具体代码示例、参数说明和常见错误排查的回复就生成了,我检查了一下,复制,发送。整个过程不到十秒,客户满意,我情绪毫无波动。
这种平静,是用过去三年无数次深夜调试和交付泥潭换来的。2019年那会儿,我带着三个人做外包,最大的噩梦就是客服。客户不分昼夜地提问,从“这个按钮怎么点不了”到“你们这个逻辑是不是有问题”,每一个问题都是一次情绪抽水。团队里的小孩要么回复太慢被投诉,要么回复错了背锅,最后全堆到我这儿。我成了那个24小时在线的救火队长,身体垮了,脾气爆了,赚的那点钱全交医院和按摩店了。那时候我就发誓,一定要把这部分最消耗人的“情绪劳动”给自动化掉,但当时的技术栈,顶多做个关键词匹配的问答库,稍微复杂点的问题就抓瞎,还得人上。
真正的转机是 RAG 技术栈的成熟,尤其是去年以来,向量数据库、嵌入模型、重排序这些组件都平民化了。我用的方案不复杂但有效:用 FastAPI 搭了个后端,前端就是个极简的输入框。核心流程是,用户问题进来,先用一个轻量级的意图分类模型(我微调了 BGE 的一个小模型)判断是不是需要查知识库,如果是,就走 RAG 管道。知识库是我过去几年积累的所有文档、聊天记录、代码片段,用 Unstructured 库预处理后,切成大小不等的块,用 text-embedding-3-small 做成向量,塞进 Qdrant。检索环节我下了狠功夫,不是简单做余弦相似度。我先用查询扩展,拿原始问题让 GPT-4 生成三个相关的变体问题,四个问题一起去做向量检索,召回 top 20 的片段。这还没完,再用一个交叉编码器(cross-encoder)对这20个片段做精排,选出相关性最高的3-5个。最后,把这几个片段和原始问题一起,构造一个严格的提示词,扔给 GPT-4-turbo 生成最终答案。提示词里我锁死了:“仅基于提供的上下文信息回答,如果信息不足,直接说‘根据现有资料无法确认’,严禁编造。”
这里面的魔鬼细节太多了。比如分块策略,一开始我用固定的 512 个 token 长度,结果经常把一段完整操作步骤拦腰切断,检索出来的片段前言不搭后语。后来改用了基于语义的分割,优先在句号、段落结束处切,并且允许少量重叠,效果立竿见影。再比如重排序模型,直接用开源的 bge-reranker-large,虽然推理慢点,但准确率比单纯看向量距离高出一个档次,这点延迟在客服场景里完全可接受。最难搞的是拒答,就是当知识库里真的没有答案时,不能让 AI 胡说。我设置了两道防线:一是检索出的片段,经过重排序后,如果最高分低于一个阈值,直接触发“无法回答”;二是在给 GPT 的指令里反复强调,并且让它在生成答案后,自我评估一下答案在上下文中是否有明确依据。
这个系统跑起来之后,我算了一笔账。它帮我拦截了大概70%的重复性、事实性咨询。剩下的30%,要么是特别复杂的定制化需求(这本来就是该收费的),要么是知识库真的没有覆盖到的盲区(这正好提示我该补充哪些文档)。我的时间被解放出来,去研究更前沿的 AI 智能体工作流设计,去写更深的教程。更重要的是,我的情绪账户不再被这些琐碎问题持续扣款。我不再需要因为一个重复了十遍的问题而烦躁,也不再需要因为半夜被吵醒而充满怨气。API 不会累,不会情绪化,不会请假,它就在那里,永远以相同的标准、相同的速度提供服务。
这就是超级个体的尊严。尊严不是来自于你能多快回复消息,而是来自于你有多大的能力,把那些消耗你的、低价值的重复劳动,封装成一段沉默但精准运行的代码。你不再是人肉客服,你是系统的设计者和守护者。当客户得到秒回且准确的答案时,他们不会知道背后是 RAG 管道在高速运转,他们只会觉得你专业、可靠。而这种“可靠”的印象,才是个人 IP 最坚实的底座。情绪内耗是效率的黑洞,而技术,是填平这个黑洞最硬的砂石。














