实体变向量,读懂 Embedding 核心直觉

在计算机眼里,“苹果”和“水果”只是两个互不相干的编号,字符串层面毫无关系。Embedding 要解决的正是这道鸿沟:把每个实体映射成一串实数,让语义相近的东西在向量空间里彼此靠近。一旦语义变成几何,检索、去重、聚类、推荐就都成了“算距离”。
一、为什么计算机看不懂“实体”
1. 字符串本身没有语义
计算机处理离散符号的基本方式,是给每个词分配整数 ID:“苹果”是词表第 10247 号,“水果”是第 35810 号。两个编号之间没有任何数值关系——它们只是抽屉编号,不是坐标。
靠字符串判断相似更不靠谱:“苹果”与“苹果树”字符高度重合且语义相关,但“苹果”与“平果”只差一个字却毫无关系。字符层面的相似度与语义层面的相似度根本不是一回事。
2. one-hot 的死路
最朴素的方案是 one-hot:词表多大向量多长,每个词只有自己那维是 1。10 万词的词表就是 10 万维稀疏向量,存储与计算都吃不消。更要命的是任意两个词的 one-hot 向量点积恒为 0、余弦相似度也恒为 0,模型看不出“苹果”和“水果”比“苹果”和“混凝土”更近。one-hot 只解决了“区分彼此”,而检索、推荐、聚类需要的是“表达关联”。
3. 我们需要的是“语义距离”
人判断两个实体是否相关,靠的是语义距离:苹果离水果近,离混凝土远。把每个实体映射成实数向量并让语义相近者彼此靠近,“相关性”就从语言学问题变成可计算的几何题。这就是 Embedding(嵌入):把离散符号嵌入连续向量空间,用几何结构承载语义结构。
二、Embedding 的核心直觉
1. 一个通俗类比:地图坐标
把 Embedding 想象成给每座城市分配经纬度:北京和天津的坐标挨得近,北京和三亚离得远。经纬度只是两串数字,但数字之间的距离忠实承载了真实的地理关系——不必预先存储“谁挨着谁”的大表,直接算距离就能回答“北京附近有哪些城市”。Embedding 做的是同一件事,只不过它的“地理”是语义;区别在于地图坐标是测量的,而 Embedding 的坐标是训练出来的。
2. 向量空间里的“语义地理”
在这个空间里,同义词向量几乎重合,同类实体(“苹果”“香蕉”“橙子”)聚成一簇,水果簇与电子产品簇分处两区。
更有价值的是空间还具有结构。经典例子是向量运算:“国王”减“男人”加“女人”最接近“女王”,“中国”减“北京”加“巴黎”落在“法国”附近。这说明模型学到的不只是“谁和谁近”,而是把“性别”“首都”这类语义关系编码成了向量之间的方向——同一种关系表现为同一个方向的平移。
3. 距离即相似,相似即检索
语义一旦变成几何,很多能力就顺理成章:找相似等于找最近邻,聚类等于在空间里切块,去重等于判断距离是否小于阈值。过去靠关键词和规则做不好的“意思相同但说法不同”,在向量空间里成了同一件事。
三、向量从哪来
1. 不是写规则,是训练出来的
Embedding 不是人给每个词填数字,而是模型在大规模语料上训练出来的。依据是分布假说:一个词的含义由它经常与谁共同出现所决定。训练目标很朴素——用上下文预测中心词,或反过来。为让预测更准,每个词的向量在反向传播中被不断微调;由于“苹果”和“水果”大量出现在相似上下文里,模型自然把它们调到相近位置。向量里每个数字都是任务压力“逼”出来的,不是设计出来的。
2. 静态向量时代:Word2Vec 与 GloVe
Word2Vec(Mikolov 等,2013)用浅层神经网络学词向量,有 CBOW 与 Skip-gram 两种结构,常见维度 100 到 300。GloVe(Pennington 等,2014)直接对词—词共现矩阵做分解,把共现统计压缩成稠密向量,小语料上更稳。共同局限是“一词一向量”:无论“苹果”出现在“吃了一个苹果”还是“苹果发布新机”里,向量都一样,多义词只能得到一个被平均过的折中位置。
3. 上下文相关:BERT 之后
ELMo、BERT 及其后的预训练模型改变了这一点:模型接收整句话,经多层 Transformer 编码后,为每个 token 输出与上下文相关的向量。同一个“苹果”在“我买了一个苹果”和“苹果发布了新手机”里向量不同,后者更靠近“华为”“发布会”。代价是向量不再能查表得到,需要一次前向推理;收益是对歧义、指代、领域术语的处理能力大幅提升。
4. 句向量与图向量的延伸
思路不局限于词:句向量(Sentence-BERT 及对比学习模型)把整段文本压成一个向量,服务检索与去重;图 Embedding(DeepWalk、Node2Vec、TransE、TransR 等)把节点与关系映射到向量空间,让结构相似的节点位置接近,用于链接预测与实体对齐。共同点是先定义“什么样的两个东西算相似”,把它写成训练目标,再用向量空间编码出来。
四、怎么度量相似、维度与可视化
1. 余弦相似度与一个算例
余弦相似度衡量两个向量的夹角:cos(θ) = (a · b) / (|a| · |b|),取值在 −1 到 1 之间,1 表示同向,0 正交,−1 反向。它只看方向,不看长度。
算例:设 a = (1, 2, 2),b = (2, 1, 2)。点积为 1×2 + 2×1 + 2×2 = 8;|a| = √(1+4+4) = 3,|b| = √(4+1+4) = 3;于是 cos = 8 / 9 ≈ 0.889,夹角约 27 度。在语义检索的口径里,这属于“高度相似”。
2. 欧氏距离与取舍
欧氏距离 d = √(Σ (a(i) − b(i))²) 衡量绝对位置差,既受方向也受长度影响。设 d = (2, 4, 4) = 2a,方向与 a 完全相同:余弦相似度为 1.0,欧氏距离却是 √(1+4+4) = 3。
文本场景中向量长度常与文本长度、词频相关,而语义相似与长短无关——长文和摘要意思相同、长度差很多。因此语义检索几乎都用余弦,或等价地归一化后用内积:归一化后两者数值相同,且便于向量库高速检索。只有模长本身有意义(例如异常检测中把模长当置信度)时才用欧氏距离。
3. 维度:256、768、1536
句向量常见 384、768、1024、1536 维,BERT-base 的 token 向量是 768 维,早期 Word2Vec 多为 100 到 300 维。维度不是越高越好:维度高则表达力强,但存储与检索开销线性上升;数据不足时还易出现“距离集中”——所有样本两两距离趋于相同,近邻失去意义。经验上,千万级以下语料做检索 256 到 768 维够用。存储可粗算:100 万条 768 维 float32 向量约需 3.07 GB,加索引后再增 20% 到 30%。
4. 降维只为看图:t-SNE 与 UMAP
人眼只能看二维三维,PCA、t-SNE、UMAP 可以把 768 维压到 2 维并保持邻近关系,投影出来常能看到清晰聚簇。但降维是有损投影:它丢失距离信息与全局结构,t-SNE 的簇间距离甚至不具可比性。它的用途只有一个——人看图和定性检查。真正的检索、聚类、去重必须在原始维度上做,绝不能拿二维坐标算相似度。
五、用在哪、它不能干什么、怎么落地
1. 六个典型场景
以图搜图:上传沙发照片,系统找最近邻返回款式相近的沙发,不再依赖打不全的人工标签。
语义检索:搜“手机发热怎么修”,能召回写的是“设备温度过高处理方法”的文档,关键词一个不重合而向量很近,这正是倒排索引做不到的。
推荐去重:把商品压成物品向量,召回用户附近的物品做推荐;题库里两道题换了数字换了说法,字面不同而向量距离极小,据此判为重复题。
聚类归纳:几万条客服工单做句向量聚类,自动聚成十几个主题簇再人工命名,比先定体系再标快得多。
实体对齐:把“北大”与“北京大学”的向量比对,结合图 Embedding 判断同一实体,是知识融合的关键一步。
2. 它不能干什么
不是精确匹配:向量检索是近似最近邻检索(ANN),Top-K 靠索引近似得出,召回率常在 95% 到 99% 之间;涉及金额、编号、法条等必须精确的场景仍要走结构化字段与倒排索引。
相似不等于同义:向量近只说明两者常出现在相似语境,推不出同一个东西。“猫”和“狗”很近却是不同动物,“买”和“卖”方向相反却语境重合;判断蕴含、反义、因果要靠 NLI 模型或规则补。
域外数据不可靠:通用新闻语料训练的模型直接编码医疗病历、古籍、法律条文,近邻关系会失真,须用领域语料微调并用领域评测集验证。
规模检索必须有向量库:百万级以上要上向量数据库(FAISS、Milvus、Elasticsearch dense vector 等)并建 HNSW 索引,否则查询延迟会从毫秒级退化到秒级。
3. 实践里怎么落地
第一步文本清洗与切分:统一编码、去水印页眉页脚;长文档按 300 到 500 字滑窗切块,块间保留 10% 到 15% 重叠避免语义被切断;原文与向量一并存好以便溯源。切分策略对召回率的影响常比换模型还大。
第二步选模型:优先选在中文语料上训练且支持中文的句向量模型;候选模型要在 500 到 1000 条业务数据上做人工评测,构造“查询—应召回”样例对比较 Top-10 召回率,不照抄公开榜单。
第三步建库与评测:入库前统一归一化;索引参数要实测(HNSW 的 M 与 efConstruction 影响召回率、内存与构建时间);上线后监控 Top-10 召回率、查询延迟、存储占用。召回不达标时排查顺序应是切分策略、模型域适配、索引参数——多数“向量检索不准”的根因在前两步。
六、总结
Embedding 的核心直觉只有一句:把离散符号变成实数向量,让语义相近者在空间里彼此靠近。它不是人工写规则,而是模型在预测上下文的任务压力下学出来的;从 Word2Vec、GloVe 的一词一向量,到 BERT 之后的上下文相关向量,再到句向量与图向量,形式在变、机制不变。用的时候要守住边界:语义相似用余弦,降维只用来看图、检索仍用原向量,向量检索是近似的、相似不等于同义、域外数据要先适配。
一句话总结:Embedding 把实体映射成实数向量,让语义相近者在空间里彼此靠近;向量由模型在语料上训练得来,用余弦相似度度量(如 (1,2,2) 与 (2,1,2) 的余弦约 0.889),支撑检索、去重、聚类与实体对齐,但相似不等于同义。
关于我们
本文由 北京海天雷鹰科技有限公司 整理发布。
公司成立于 2001 年,专注档案整理与数字化、试题结构化录入、期刊校对、数据标注等一站式数据服务 20 余年。针对标准文档形近字符识别、复杂公式排版、多层级档案规整、题库结构化加工等行业难点形成成熟作业方案,适配科研院所、教育机构、企事业单位的批量数据处理需求。
累计完成数十万份专业文档数字化、题库结构化加工项目,服务过多家科研机构、院校及企事业单位。核心团队 20 年以上行业经验,建立多层级质检审核机制,数据成果准确率稳定可控;持有 ISO 9001/27001 等体系认证、多项自主软件著作权、企业信用 AAA 等级。
如果您有档案数字化、试题录入、数据标注、EPUB电子书等方面的需求,欢迎联系我们:
- 电话:010-84907553
- 邮箱:736232918@qq.com
- 官网:www.beijingocr.com
本文为原创科普内容,如需转载请注明出处。关注我们,持续分享数据服务行业的实战经验与行业洞察。
