【核心理解-6】知识表示与向量:文字怎么变成"数学"

· 分类:核心理解

这一节点回答:知识在机器里以什么形式存在

【小目标】

这一节点回答:知识在机器里以什么形式存在? 也就是"怎么把人类的知识存进去,让模型能用上"。这是检索、推理、RAG 的理论底座——先搞懂"存成什么样",才能理解"怎么取出来"和"怎么用"。

这里最关键的一句判断:知识表示有两大主流范式,各有边界,谁也替代不了谁。 向量嵌入擅长"模糊语义相似",知识图谱擅长"精确关系推理"。多数真实场景是二者搭配使用,而不是二选一。

对做产品的人来说,这一层直接影响你对 RAG、知识库、智能问答的选型判断——知道了两种表示的边界,你就不会拿着向量去做精确关系查询,也不会硬用图谱去做开放语义检索。

【方法论】

一句话结论:知识表示 = 向量嵌入(语义相近) + 知识图谱(实体-关系)。二者各有所长,按需选用或组合。

知识表示(存成什么形态)
   ├── 向量嵌入(语义空间)—— 语义相近则向量近
   │     优点:无需标注关系、对开放语义友好
   │     缺点:不精确、难表达明确关系
   └── 知识图谱(结构关系)—— 节点=实体、边=关系
         优点:语义精、可多跳、可解释
         缺点:构建贵、维护难、开放域难覆盖

① 向量嵌入(Embedding)——"意思像不像"

  • 把文本/实体映射成高维数字向量,语义相近则向量近
  • 怎么衡量"近"?用余弦相似度或向量距离——越接近 1 越相似,越接近 0 越不相关
  • 优点:
    • 不需要人工标注关系,只要有文本就能生成向量
    • 对开放语义友好——用户换个说法也能命中("充电快" vs "快充")
    • 实现简单,成熟工具多(向量数据库一大把)
  • 缺点:
    • 不精确:相近≠同义,可能命中语义相关但实际不对的结果
    • 很难表达"实体间明确的关系"——你知道"张三"和"李四"的向量近,但不知道他们是"同事"还是"夫妻"
    • 可解释性差——"为什么这两个相似"说不清楚,只能看相似度分数

② 知识图谱(Knowledge Graph)——"是什么关系"

  • 以节点=实体、边=关系存储结构化知识的网络结构
  • 最小单元是三元组(主语-谓词-宾语),如:(张三,工作于,字节跳动)
  • 优点:
    • 语义精确:实体和关系都是明确定义的,不会含糊
    • 支持多跳推理——"张三的同事的部门是什么?"可以沿图谱边一步步推
    • 可解释:答案怎么来的,沿着边就能追溯
  • 缺点:
    • 构建贵:需要先设计本体(schema),再做信息抽取,还要人工校验
    • 维护难:知识更新了,图谱也要跟着更新
    • 开放域难全覆盖——总有你没定义的实体和关系

③ 怎么选(产品决策表)

需求 首选 原因
开放语义相似 / 模糊检索 向量嵌入 对口语化、同义改写友好
精确关系查询 / 多跳 知识图谱 关系明确、可追溯
可解释性要求高 知识图谱 沿边追溯,答案路径清晰
数据量大、没人力标 向量嵌入 无需标注,直接生成
大型领域 / 都要 图谱 + 向量双索引 各取所长,混合检索

现实情况:多数客服/文档问答以向量为主,图谱作补充(产品参数、实体关系强的场景加图谱)。

【知识点】

  • 两大表示范式:向量嵌入(语义相近)和知识图谱(结构关系),各有边界,谁也替代不了谁。
  • 向量嵌入 = "模糊相似":语义近则向量近,适合开放检索,但不精确、不可解释。
  • 知识图谱 = "精确关系":实体-关系-实体的三元组结构,支持多跳推理、可解释,但构建贵、维护难。
  • 选型看需求:要模糊检索用向量,要精确关系用图谱,都要就双索引。
  • 多数产品以向量为主、图谱为辅:文档问答/客服 FAQ 向量就够了,涉及复杂实体关系时再加图谱。
  • 表示是检索和推理的基础:先有"怎么存",才有"怎么取"(检索)和"怎么推"(推理)——三者是递进关系。

【名词卡】

名词 一句话解释
Embedding / 向量嵌入 / 嵌入 把文本/实体映射成高维数字向量、语义相近则向量近;是语义检索/相似度的地基
Vector / 向量 一串数字,表示文本/实体在语义空间中的位置
Cosine Similarity / 余弦相似度 衡量两个向量相似程度的方法,值在 -1 到 1 之间,越接近 1 越相似
Vector Database / 向量数据库 专门存向量、按相似度快速检索的数据库,RAG/向量检索的存储载体
Knowledge Graph / 知识图谱 以节点=实体、边=关系存储结构化知识的网络结构;支撑精确关联/多跳/可解释问答
Triple / 三元组 知识图谱的最小构成单元(主语-谓词-宾语),如(张三,工作于,字节跳动)
Entity / 实体 图谱中的节点,表示真实世界中的事物(人、物、概念等)
Relation / 关系 图谱中的边,表示两个实体之间的联系(工作于、属于、位于等)
Ontology / 本体 图谱的 schema——定义有哪些实体类型、关系类型、属性,相当于"图谱的宪法"
TransE / 图谱嵌入 把图谱中的实体/关系也编码成向量以支持图谱推理与补全的经典方案

易混对比:

  • 向量嵌入 vs 知识图谱:向量"模糊语义相近"(适合检索)vs 图谱"精确关系"(适合多跳),各有边界
  • 实体 vs 关系:实体是"东西"(节点),关系是"联系"(边)
  • 向量数据库 vs 传统数据库:前者按相似度搜,后者按条件查

【练一练】

目标:亲手感受"向量 vs 图谱"的区别——拿同一个知识,分别用向量思路和图谱思路表示,看各自适合什么问题。

实验:假设你在做一个手机导购的知识库,有这些信息:

华为 P60,价格 4999 元,品牌华为,屏幕 6.67 英寸,电池 4800mAh,处理器骁龙 8+,拍照 5000 万像素。 iPhone 15,价格 5999 元,品牌苹果,屏幕 6.1 英寸,电池 3349mAh,处理器 A16,拍照 4800 万像素。 小米 13,价格 3999 元,品牌小米,屏幕 6.36 英寸,电池 4500mAh,处理器骁龙 8 Gen2,拍照 5400 万像素。

请你完成两个任务:

任务一(向量思路):

  • 把每款手机的描述写成一段自然语言文本(每段 2–3 句话)
  • 然后回答:如果用户问"拍照好的手机推荐",用向量检索,哪款手机最可能被命中?为什么?
  • 追问:如果用户问"4000 到 5000 元之间、拍照最好的华为手机",纯向量检索能准确回答吗?为什么?

任务二(图谱思路):

  • 画出一个简单的知识图谱(用文字描述节点和边就行)
    • 实体类型:手机、品牌、价格、处理器
    • 关系:品牌是、价格是、处理器是、像素是
  • 然后回答:上面那个"4000 到 5000 元之间、拍照最好的华为手机"的问题,用图谱能准确回答吗?怎么答?
  • 追问:如果用户问"拍照清晰的手机"(不出现"像素"这个词),图谱能直接命中吗?为什么?

对照思路(做完再看):

  • 向量检索对"拍照好"这种模糊语义友好,但对"价格在 X-Y 之间、品牌=华为"这种精确条件过滤不准——可能命中拍照好但超预算的
  • 图谱对精确条件过滤很准("价格在 4000-5000 且品牌=华为"可以精确筛选),但对"拍照好"这种模糊表达不行——它只认"像素 > 5000万"这种明确属性
  • 所以真实产品里常做混合:向量召回 + 元数据过滤(价格/品牌等精确字段先筛一遍)+ 图谱补充关系查询

相关文章