乐于分享
好东西不私藏

底层数据烂了,再牛的AI工具也白搭

底层数据烂了,再牛的AI工具也白搭

心理咨询的AI智能体,我把它拆成了四种:
  • 咨询客服智能体
  • 诊断智能体
  • 报告智能体
  • 情绪沟通智能体
难度从上往下递增。今天聊聊最让我头疼的——诊断智能体。
一开始,我想得特别天真。
Neo4j嘛,图数据库,天生为”逻辑关系”而生。我的想法很简单:把专家经验喂进去,用Cypher写几条查询,它自动就能织成一张完美的知识网,直接用就完了。
我甚至已经想好了技术路线:专家经验→LLM抽取三元组→批量导入Neo4j→Agent查询推理→输出诊断结论。多优雅,多丝滑。
结果呢?
现实给了我一记闷棍。
那些专家沉淀了十几年的教育诊断经验,全是非结构化的文字、笔记、口述记录。我试过直接用GPT-4做三元组抽取,结果惨不忍睹——
同一个”亲子冲突”,它一会儿抽成实体,一会儿抽成关系;”焦虑”和”焦虑情绪”被识别成两个不同节点;更离谱的是,”妈妈过度控制”和”母亲管教过严”明明是一回事,图谱里硬生生变成了两条孤立的路径。
没有结构化的底层数据,知识图谱就是一团乱麻。 再牛的工具,喂进去的是垃圾,吐出来的还是垃圾。这就是经典的GIGO——Garbage In, Garbage Out。
没有捷径,只能开启苦行僧模式。
分表,分列,分模块,手动做第一批底层数据。

01

步:定义本体(Ontology)
这是整张图谱的骨架,决定了后面所有数据往哪里放、怎么连。
节点类型我定了五大类:
  • 成员节点:父、母、子,以及其他关键抚养人
  • 行为现象节点:厌学、逃课、亲子冲突、沉迷游戏等
  • 心理状态节点:焦虑、自卑、无力感、愤怒等
  • 养育风格节点:控制型、溺爱型、忽视型、民主型
  • 核心信念节点:比如”我不够好””我必须完美””没人理解我”
关系类型定了六种:
  • TRIGGERS(触发):控制型养育 → 触发 → 孩子逆反
  • RELIEVES(缓解):共情式沟通 → 缓解 → 焦虑
  • ALLIES_WITH(结盟):母亲 → 结盟 → 孩子(对抗父亲)
  • OPPOSES(对抗):父亲 → 对抗 → 孩子
  • PROJECTS(投射):父母未完成心愿 → 投射 → 孩子学业期待
  • CORRELATES(共现):厌学 → 常共现 → 社交退缩
每一条关系还要挂属性:强度(1-5)、出现频率、置信度、数据来源。不挂这些,后面Agent做推理时根本分不清主次。

02

步:实体抽取和归一化
这一步最要命。
绣花式梳理
从专家笔记里手动提取每一个实体,逐个定义关系。不是简单地”提取关键词”,而是要理解语境。比如专家写”这孩子就是犟”,你得判断这是在描述”对抗行为”还是”独立人格特质”,差一层意思,挂到图谱上就是完全不同的节点。
地毯式去噪
实体归一化(Entity Resolution)是最耗时的环节。同一个概念,不同专家有不同说法:”学习动力不足””不想学””厌学情绪””对学习没兴趣”,这些在图谱里必须收敛到同一个标准节点上。我建了一张同义词映射表,光”厌学”这一个概念,就收录了十几种表述。
高精度打标
每个节点都要打元数据标签:适用年龄段、适用场景、严重程度分级、关联的DSM-5或ICD-11编码(如果有的话)。这些标签是Agent后续做语义检索和精准匹配的关键。没有标签,Agent就是在图谱里”盲人摸象”。

03

步:写入和验证
用Cypher批量写入Neo4j后,还不算完。我写了一套验证脚本:
  1. 孤立节点检测:有没有节点没挂任何关系?如果有,要么是遗漏,要么是噪声
  2. 环路检测:A触发B,B触发C,C又触发A——这种循环在心理诊断里可能是真实的,但也可能是数据错误,必须逐条人工确认
  3. 关系一致性校验:同一对节点之间不能既是”触发”又是”缓解”,除非挂了不同的条件属性
说实话,这个过程我不止一次想放弃。
每天对着密密麻麻的数据表,反复校对、反复修正,感觉自己不是在做AI,是在做苦力。
但后来我想明白了一件事:
所谓”人工智能”,底层全是无数次”人工”的堆叠。
没有扎实的数据清洗,再高级的图谱也是空中楼阁。地基不牢,上面盖得再漂亮,一推就倒。
变化才是永恒。先把第一批数据老老实实做好,后面才有资格谈批量处理,谈自动化,谈规模化。
急不来的。