【小目标】
这一节点回答:知识在机器里以什么形式存在? 也就是"怎么把人类的知识存进去,让模型能用上"。这是检索、推理、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万"这种明确属性
- 所以真实产品里常做混合:向量召回 + 元数据过滤(价格/品牌等精确字段先筛一遍)+ 图谱补充关系查询