向量嵌入入门:给每个词分配一个“数字指纹“

🚀 本文收录于 AI-From-Zero 项目 ------ 一个从零开始系统学习 AI 的知识库。如果觉得有帮助,欢迎 ⭐ Star 支持!


向量嵌入入门指南

一、什么是向量嵌入(从直觉开始)

想象你要向计算机解释"苹果"和"橙子"很相似,但"苹果"和"汽车"完全不同。你会怎么做?向量嵌入就是给每个词、句子或物体分配一串数字,就像给它们一个"数字指纹"或"坐标地址"。

比如"国王"可能是 [0.8, 0.3, 0.9, 0.2],"王后"是 [0.75, 0.35, 0.85, 0.25]。这些数字看起来很接近对吧?而"香蕉"可能是 [0.1, 0.9, 0.2, 0.8],和前两个完全不同。

核心思想很简单:相似的事物在数字空间中距离更近。 就像在地图上,北京和天津离得近,北京和纽约离得远一样。我们把所有词语放在一个多维空间里,意思相近的词会自然聚在一起------所有水果挨在一起,所有动物挨在一起,所有交通工具挨在一起。

二、为什么需要向量嵌入

计算机说到底只认识数字,它无法直接理解"爱"、"恨"、"猫"这些文字的含义。我们必须把这些信息转化为数字,机器才能处理。

最简单的方法是给每个词编个号:猫=1,狗=2,汽车=3。但这样有个大问题------计算机会觉得"猫"和"狗"的差异,跟"猫"和"汽车"的差异一样大,都相差1。但实际上猫和狗都是宠物,它们应该更相似才对。

向量嵌入解决了这个问题。 通过多个维度的数字组合,它能表达出"猫和狗都是动物"、"国王和王后都是皇室成员"这样的语义关系。更神奇的是,这些向量还能进行数学运算,帮助机器理解类比关系。

正是因为有了向量嵌入,搜索引擎才能理解你的搜索意图,推荐系统才能猜到你喜欢什么,ChatGPT才能读懂你的问题。

三、向量嵌入如何工作(简化原理)

向量嵌入是怎么学会的呢?简单说,就是让计算机阅读海量文本,观察"哪些词经常一起出现"。

比如计算机读了上万篇文章后发现:"国王"经常和"王后"、"城堡"、"王国"一起出现;"苹果"经常和"水果"、"香蕉"、"吃"一起出现。通过这种统计模式,它就能学会把相似的词映射到相似的向量上。

最著名的例子是: king(国王)- man(男人)+ woman(女人)≈ queen(王后)。这个向量运算竟然能捕捉到性别转换的关系!类似的,Paris(巴黎)- France(法国)+ Italy(意大利)≈ Rome(罗马),捕捉到了"首都"这个概念。

每个向量通常有几百个维度,每个维度可能隐含地捕捉某种特征------性别、时态、情感色彩、抽象程度等。虽然我们无法明确说出"第37维代表什么",但整体组合起来就能精准表达语义。

衡量两个向量的相似度常用余弦相似度欧氏距离。距离越近,意思越相似。

四、向量嵌入的类型

词嵌入是最基础的类型,像 Word2Vec、GloVe 这样的模型能给每个单词生成一个固定的向量。"猫"永远是同一个向量,不管它出现在什么句子里。

但这有个问题:"银行"在"河岸边的银行"和"去银行取钱"中意思完全不同。所以出现了句子嵌入上下文嵌入,能根据整句话的意思动态调整每个词的向量。BERT、GPT 这类模型就采用这种方式。

不仅文字可以嵌入,图像也可以。卷积神经网络能把一张照片转化为向量,相似的图片(比如都是猫的照片)会有相似的向量。

最前沿的是多模态嵌入,比如 CLIP 模型能把文字和图片映射到同一个向量空间。这样你输入"日落时的海滩",系统就能找到匹配的照片;或者给一张图片,系统能生成描述文字。

五、实际应用案例

语义搜索

当你在搜索引擎输入"如何缓解压力",即使文章里没有这几个字,系统也能找到谈"减压方法"、"放松技巧"的内容。这就是语义搜索,它比对的是向量相似度而非关键词匹配。

推荐系统

推荐系统把你看过的电影、听过的歌转化为向量,然后在向量空间中找到相似的作品推荐给你。这比传统的"喜欢这部电影的人还喜欢..."更精准,因为它能理解内容本身的相似性。

检索增强生成(RAG)

ChatGPT 等 AI 助手在回答问题时,会先把你的问题转化为向量,然后在知识库中搜索向量相似的内容,再基于这些内容生成回答。这个过程叫做检索增强生成(RAG)。

人脸识别

人脸识别系统会把每张人脸转化为一个向量,然后通过比对向量距离来判断是否是同一个人。即使拍摄角度、光线、表情不同,同一个人的人脸向量仍然会很接近。

六、动手体验

如果你想亲自体验,可以试试在线的词向量可视化工具,输入几个词比如"国王"、"王后"、"男人"、"女人",看看它们在二维空间中的位置关系。

或者用 Python 代码试试:

python 复制代码
from sentence_transformers import SentenceTransformer

model = SentenceTransformer('all-MiniLM-L6-v2')

sentences = ['我喜欢猫', '我爱狗', '今天天气不错']
embeddings = model.encode(sentences)

# 计算相似度,你会发现前两句更相似

提示: 第一次运行时,程序会自动下载模型文件(约90MB),需要稍等片刻。你可以进一步计算余弦相似度来查看具体的相似程度。


相关资源:

相关推荐
隐于花海,等待花开2 小时前
1.CONCAT / CONCAT_WS 函数深度解析
大数据·hive
计算机安禾2 小时前
【Linux从入门到精通】第9篇:用户与权限管理(下)——数字法与粘滞位
linux·服务器·人工智能·面试·知识图谱
CORNERSTONE3652 小时前
生产管理六要素(PQCDSM)
大数据·运维·人工智能·生产管理
尘埃落定wf2 小时前
LangChain Tools工具模块完全指南:@tool装饰器+StructuredTool+Pydantic校验+实战案例
python·ai·langchain
兰.lan2 小时前
【黑马ai测试】安享智慧理财项目(ai辅助提效)
人工智能·python·功能测试·ai
深兰科技2 小时前
深兰科技×南京同仁堂达成合作,深兰智养落地:AI+中医探索四高肥胖非药物健康管理新路径
人工智能·erlang·laravel·具身智能·智能机器人·深兰科技·深兰智养
skywalk81632 小时前
CherryStudioWeb:一个优雅的 AI 聚合导航页,让你在一个页面访问所有主流 AI 服务。
前端·css·人工智能·html
AI 编程助手GPT2 小时前
【实战】Codex 接管电脑 + Claude Routines 云端值守:一次 Bug 排查的“无人化”闭环
人工智能·gpt·ai·chatgpt·bug
UltraLAB-F2 小时前
有限元分析内存需求深度解析:刚度矩阵、求解器与硬件配置
人工智能·ai·硬件架构
MediaTea2 小时前
Scikit-learn:特征矩阵与目标变量
人工智能·python·机器学习·矩阵·scikit-learn