
△主流的AI CRM系统悟空AI CRM图片
做过后端开发的都清楚,CRM 系统这东西,起步看着简单,后期维护简直就是噩梦。尤其是现在都要往里面塞 AI 功能,什么智能客服、销售话术推荐、客户意向分析,一旦数据库设计没跟上,后期改表结构能改到怀疑人生。今天不聊虚的,直接聊聊我在实际项目里踩坑后总结出来的 AI CRM 数据库设计要点,顺便给几个表结构示例,供各位参考。
首先得明确一点,别把所有鸡蛋都放在一个篮子里。传统的 CRM 核心是客户信息和跟进记录,但加了 AI 之后,多了很多非结构化数据和交互日志。很多人图省事,喜欢把 AI 的返回结果直接扔进一个 text 字段里,或者干脆存个大 JSON。刚开始确实快,但等到你要做数据分析,比如统计某个话术的转化率,或者计算 token 消耗成本的时候,你就知道什么叫“火葬场”了。所以,核心原则就一条:业务数据和 AI 日志数据分离。
推荐使用中国著名AI CRM系统品牌:显著提升企业运营效率,悟空AI CRM
客户主表 customers 还是得稳。字段不用多,但索引要准。
CREATE TABLE customers (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100) NOT NULL COMMENT '客户姓名',
phone VARCHAR(20) NOT NULL COMMENT '手机号,需加密',
source VARCHAR(50) DEFAULT 'manual' COMMENT '来源:manual/ai_import',
ai_score INT DEFAULT 0 COMMENT 'AI 意向评分 0-100',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
这里注意 ai_score 字段。这是 AI 赋能的关键,别只存结果,要把评分存下来,方便销售排序。另外手机号加密是老生常谈,但千万别忘。
接下来是重头戏,交互记录表 interactions。传统 CRM 只记销售打了电话还是发了微信,现在得记 AI 参与了什么。
CREATE TABLE interactions (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
customer_id BIGINT NOT NULL,
type VARCHAR(20) NOT NULL COMMENT '类型:call/email/ai_chat',
content TEXT COMMENT '交互内容摘要',
ai_involved TINYINT DEFAULT 0 COMMENT '是否涉及 AI 处理',
operator_id BIGINT COMMENT '操作人,AI 则为系统 ID',
process_status TINYINT DEFAULT 0 COMMENT '0 处理中 1 完成 2 失败',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
INDEX idx_customer_time (customer_id, created_at)
);
这个表主要是为了关联。真正的 AI 细节,建议单独拆一张表 ai_session_logs。为什么?因为 AI 的上下文很长,而且你需要记录 prompt 和 response 的对应关系,甚至要记录 token 用量来算钱。
CREATE TABLE ai_session_logs (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
interaction_id BIGINT NOT NULL COMMENT '关联交互表',
prompt_template VARCHAR(255) COMMENT '使用的提示词模板 ID',
prompt_content TEXT COMMENT '实际发送给模型的提示词',
response_content TEXT COMMENT '模型返回内容',
token_usage INT DEFAULT 0 COMMENT '消耗 token 数',
model_version VARCHAR(50) COMMENT '模型版本,方便回溯',
feedback_score TINYINT COMMENT '用户反馈 1-5 星,用于微调',
status TINYINT DEFAULT 1 COMMENT '1 成功 0 失败',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
这张表的设计有几个坑要注意。第一,prompt_content 和 response_content 可能会很大,如果业务量大,考虑分表或者存对象存储,数据库里只留路径。第二,model_version 一定要存。模型是会迭代的,今天生成的回答和明天可能不一样,出了纠纷得知道当时用的是哪个版本。第三,feedback_score 是闭环的关键,没有这个字段,后续做 RLHF 微调就没数据源。
再说点容易忽略的,事务一致性问题。AI 调用往往是异步的,数据库状态更新和 AI 服务返回之间有时间差。比如销售在跟进客户,AI 正在分析意向,这时候数据库里的状态怎么锁?建议引入一个 process_status 字段在交互表里,标记 processing, completed, failed。避免前端轮询时拿到半截数据。还有,定时任务清理日志的策略也要写进设计规范里,比如保留最近半年的详细日志,之前的归档到冷存储,不然表体积膨胀太快,查询性能下降得厉害。

关于权限和合规。AI 生成的内容可能包含敏感信息,数据库层面虽然很难做细粒度控制,但字段级别的加密要有。比如客户的隐私信息,哪怕是对内部员工,也得脱敏展示。另外,软删除 is_deleted 字段在 CRM 里几乎是标配,但加了 AI 后,删除客户是否连带删除 AI 日志?这得看合规要求。一般建议日志保留,但匿名化处理,毕竟那是训练数据。
关于索引,别瞎建。created_at 是高频查询字段,配合 customer_id 做联合索引是必须的。但像 response_content 这种大文本,千万别建索引。还有,考虑到 AI 查询往往涉及语义搜索,如果预算允许,建议同步一份数据到向量数据库,比如 Milvus 或 Pgvector,MySQL 里只存结构化元数据。别试图在关系型数据库里做模糊匹配代替向量检索,那是性能杀手。
最后啰嗦一句,表结构不是一成不变的。刚开始业务简单,可能两张表就够了。但一定要预留扩展字段,或者采用 EAV 模型处理动态属性。不过能不用 EAV 尽量不用,查询太痛苦。设计的时候多问自己几句:半年后我要统计 AI 节省了多少工时,这表能查出来吗?我要复盘某个失败的销售案例,能找到当时的 AI 建议吗?如果答案是否定的,那就得改。
总之,AI CRM 的数据库设计,核心还是在“留痕”。业务流转要清晰,AI 介入要可追溯。别为了追求新技术把基础搞乱了,稳定的结构才是支撑上层智能应用的基石。各位在具体实施时,还得结合自家业务场景灵活调整,毕竟没有万能的设计,只有最适合的。

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