既然不想招客服,我就写了个“自进化”回复机器人

既然不想招客服,我就写了个“自进化”回复机器人。这项目说白了,就是穷,就是抠,就是被2019年那波扩张搞怕了。当时招了俩客服,工资社保加起来一万多,结果呢?80%的问题都是重复的:“怎么安装?”“密码忘了怎么办?”“支持XX功能吗?”我他妈自己看着后台那些一模一样的提问都烦,还得付钱让人去复制粘贴。2020年断尾求生,第一刀就砍了客服岗,但问题总得解决,不然用户流失更可怕。

所以思路很粗暴:用技术替代人力,而且这次要更聪明点,不能只是关键词匹配。我管它叫“自进化”,核心就两点:一、基于用户真实对话数据训练;二、能自己判断回答的好坏,然后迭代。听起来很AI对吧?其实2021年那会儿,大模型还没现在这么普及,我用的还是最土的办法——规则引擎+语义相似度计算+一个不断增长的问答知识库。

数据库表结构是核心。我设计了四张主表。第一张 `qa_pairs`,存标准问答对,这是知识库的种子。字段很简单:`id`, `question`(原始问题文本), `answer`, `category_id`, `created_at`。初期我手动录了大概200条高频问题。

第二张 `user_dialogs`,记录所有真实的用户对话。每条记录包括:`session_id`(会话标识), `user_query`(用户输入), `matched_qa_id`(系统匹配到的标准问答ID,可为空), `system_reply`(系统实际回复), `user_feedback`(用户后续行为标识,比如是否继续追问、是否点击“有帮助”)。这张表是金矿,所有“进化”的原料都来自这里。

第三张 `similarity_mapping`,这是“自进化”的关键。当用户输入一个问题,系统会用TF-IDF加余弦相似度去匹配 `qa_pairs` 里的问题。如果匹配度超过阈值(比如0.7),就直接返回答案;如果低于阈值但高于另一个下限(比如0.4),系统会返回一个相近的答案,并记录这次匹配关系——`source_qa_id`, `target_user_query`, `similarity_score`。这意味着,系统发现了一个“新问法”对应一个“老答案”。

第四张 `feedback_loops`,负责闭环。系统每次回复后,会监测用户后续行为:如果用户收到回复后会话结束(没再追问),就给这次匹配+1分;如果用户紧接着追问或点了“未解决”,就-1分。同时,我写了个定时任务,每天凌晨跑一次,分析 `similarity_mapping` 表里那些得分高、出现频率高的“新问法”,自动把它们作为新的 `question` 变体,关联到原有的 `qa_pairs` 里。这就完成了第一次“进化”:知识库自己学会了同一种答案的多种问法。

技术实现上全是坑。语义相似度计算,一开始用Jieba分词加scikit-learn,线上响应慢,还得缓存。用户输入千奇百怪,“安装不了”和“无法安装”算相似,但“为啥装不上”就得靠规则预处理归一化。最头疼的是负反馈循环,有一次因为一个关键问题匹配错了,导致一连串用户都点“未解决”,系统那天的自动进化差点把正确的问答对给覆盖掉,吓得我赶紧加了人工审核开关。

现在回头看,这东西就是个粗糙的专家系统雏形,离真正的AI差得远。但它在2021年确实帮我扛住了90%的客服压力,成本几乎是零。更重要的是,它让我彻底明白了一件事:所谓智能,在业务里,往往就是从“记录一切”开始的。你不需要一开始就搞懂多深的算法,先把数据流设计好,让数据能流动起来,能产生闭环,迭代就会自然发生。

当时每天盯着后台,看那些自动新增的问答变体,有种在养电子宠物的感觉。它吃进去的是用户的唠叨,吐出来的是稍微规整一点的知识。这大概就是做产品最原始的快乐:用一堆IF-THEN规则和数据库表,笨拙地模拟一个会学习的生命。

© 版权声明
THE END
喜欢就支持一下吧
点赞71 分享