既然不想招客服,我就写了个基于私有知识库的机器人。今天端午节,朋友圈全是晒粽子晒出游的,我坐在电脑前,把最后一段关于向量相似度匹配的代码调通了。窗外一点声音都没有,这种安静反而让我脑子特别清楚。去年这时候,我可能还在公司群里发红包,安抚那些因为节假日排班闹情绪的客服,现在想想,真他妈累。
2019年扩张那会儿,觉得人多就是力量,招了五个客服,租了个小办公室。结果呢?管理成本高得吓人。光是培训他们熟悉产品,回答标准话术,就耗掉我两个月。更可怕的是情绪劳动,客户骂街,客服受气,最后全变成我的事。那段时间我像个救火队长,白天处理客诉,晚上算流水,发现赚的钱全填进人力成本和我的精神内耗里了。规模是个陷阱,尤其对我们这种做定制化软件服务的来说,每接一个新客户,就等于背上一个长期的、个性化的售后包袱。人一多,流程就复杂,自由就没了。我当时最怀念的,居然是2017年一个人在家通宵写爬虫的日子,虽然苦,但问题都在代码里,解决一个少一个。
所以今年断尾求生,砍掉所有需要多人协作的低毛利项目,回归个人交付。但老客户总得维护,新咨询总得回复。招人是不可能再招了,那就让机器干。技术栈选型就折腾了好久。最早想用规则引擎,if-else堆了几百条,发现根本覆盖不了客户千奇百怪的提问方式,维护成本比雇人还高。后来盯上了GPT-3的API,效果是好,但一是贵,二是担心数据隐私,客户问的都是他们业务系统的内部逻辑,我可不敢把对话记录扔到OpenAI的服务器上。
最后定的方案是本地化向量检索+轻量级模型。核心就两步:第一,把历史客服对话记录、产品文档、常见问题解答这些“私有知识”全部用sentence-transformers切成块,转换成向量,存进本地的FAISS索引里。第二,当用户提问时,先把问题也转成向量,去索引里快速搜出最相关的3-5个知识片段,把这些片段和问题一起拼接成提示词,喂给一个本地跑的、参数量小很多的模型(比如ChatGLM-6B的INT4量化版)去生成回答。这样,知识库在我自己手里,模型也在本地跑,数据不出域。回答的准确性靠高质量的私有知识库保证,语言的流畅性靠小模型来润色。
调优的过程全是坑。比如分块策略,按句子分还是按段落分?太碎了上下文不连贯,太长了向量检索精度下降。还有相似度阈值设多少?设高了,很多问题搜不到相关材料,模型就开始胡说八道;设低了,搜出来一堆不相关的片段,干扰模型判断。今天调通的最后一步,是给检索结果加了个重排序模块,先用BM25这种传统算法粗筛一遍,再用交叉编码器做精排,效果立竿见影。为了让回答更像真人,我还在提示词里埋了“语气亲切”、“必要时表达歉意”、“结尾可以加个表情符号”这样的指令。
搞完测试了一下,大部分常规问题都能准确、稳定地回答,语气比真客服还稳定,永远不会情绪化。虽然前期投入了将近一个月开发,但这是一次性的。以后知识库更新,无非就是往FAISS里加新的向量。服务器一个月几十块钱,抵不上原来客服工资的零头。最关键的是,它把我从那种重复、低效、耗神的即时响应中解放出来了。我现在只需要定期审核一下机器人生成的对话日志,优化知识库就行。
这种“小而美”才是可持续的。我不再需要追求团队有多少人,办公室有多大。我的产品就是我写的代码、我设计的系统,它们可以7×24小时工作,没有情绪,不会离职。规模幻觉破灭之后,反而找到了更扎实的生存方式。热闹是他们的,我守着我的服务器和代码,这种“掉线”的清醒,比任何节日聚餐都让我踏实。下一步,我打算把这套东西封装成一个SaaS工具,卖给那些跟我一样,被客服和琐碎咨询拖垮的小老板们。这或许才是真正的杠杆。














