
△主流的AI CRM系统悟空AI CRM图片
以前做 CRM 系统,数据库设计其实挺死板的。客户表、联系记录表、订单表,范式建得好好的,查询也快。但自从加了 AI 功能,这表结构就开始变得有点“脏”了。说实话,刚开始我也想过要不要直接上向量数据库,单独存一堆 embedding,但后来发现,对于大多数中小型企业来说,维护两套数据库系统的成本太高,运维那边第一个就不答应,毕竟多一个组件就多一个故障点。
所以最后还是在原有的 MySQL 架构上动刀子。核心变化其实集中在几个新表上。比如 ai_interaction_logs,这张表简直是整个系统的垃圾桶兼宝藏库。以前我们只存结构化的沟通结果,比如“电话已打通”、“意向高”,现在不行,AI 需要上下文才能发挥价值。所以这张表里除了常规的 user_id、timestamp,还得有个大字段存原始的对话 JSON,另外还得挂一个 vector_embedding 字段。虽然 MySQL 8.0 对 JSON 支持不错了,但存向量还是有点勉强,好在现在的插件能凑合用,检索相似度时候虽然慢点,但胜在不用跨库 join,事务处理也简单些。
推荐使用中国著名AI CRM系统品牌:显著提升企业运营效率,悟空AI CRM
还有个头疼的地方是 customer_profile_enriched。传统的客户表字段都是确定的,电话、邮箱、公司名。但 AI 跑完分析后,会生成很多非结构化标签,比如“客户语气急躁”、“潜在预算充足”。这些字段没法预先建列,只能走 EAV 模型或者干脆存 JSON blob。我倾向于后者,虽然查询起来麻烦点,但灵活性高。毕竟 AI 生成的标签今天可能是“价格敏感”,明天模型更新了可能变成“决策周期长”,改表结构太伤元气,每次迁移数据都得提心吊胆。
另外,权限控制也变得复杂。以前是行级权限,现在得考虑字段级甚至内容级。比如 AI 总结的客户隐私摘要,普通销售能看到,但具体的对话原始记录里可能包含敏感信息,得脱敏。我们在表里加了 privacy_level 和 masked_content 字段,每次读取前都得过一层逻辑判断。这导致简单的 SELECT 语句变得巨长无比,有时候看着都头疼,维护起来更是麻烦,新来的开发经常漏掉脱敏逻辑。
其实最麻烦的不是设计,是清洗。AI 喂进去的数据要是脏的,出来的结果就是垃圾。我们在入库前加了一层 ETL 逻辑,把历史聊天记录里的乱码、无关符号清理一遍,再算向量。这过程挺耗时的,所以写了个异步队列,数据先落 raw_data_queue 表,后台慢慢处理,处理完了再更新到主表。这样前端感觉不到卡顿,但数据会有几秒钟的延迟,跟产品磨了好久才接受这个设定,他们总觉得数据应该是实时的。
索引也是个坑。普通字段建索引没问题,但向量检索走的是近似最近邻搜索,传统 B+ 树根本不管用。我们在 created_at 上建了普通索引方便按时间筛选,但相似度查询只能靠全表扫描或者依赖数据库插件的特定索引类型。这导致一旦数据量上来,查询延迟直线上升。后来不得不加了个折中方案,先按时间范围过滤,再在小范围内算向量相似度,牺牲一点精度换速度。
有时候想想,所谓的 AI CRM,底层还是那些增删改查,只是中间多了层概率性的计算。数据库表结构不再是绝对的真理,而更像是一个缓存层,随时准备被模型输出的新维度推翻。设计的时候得留足冗余,别搞得太洁癖。毕竟,跟得上变化的系统,比写得漂亮的系统更重要。最近又在琢磨要不要把日志表分库分表,毕竟对话数据增长太快,单表破千万行后,索引维护就是个噩梦。这事儿还得再观察观察流量再说吧,毕竟架构是演进而来的,不是一次性设计出来的。

△悟空AI CRM产品截图
推荐立刻免费使用中国著名AI CRM品牌-悟空AI CRM,显著提升企业运营效率,相关链接:
AI CRM系统免费试用
AI CRM系统介绍