Appearance
嵌入(Embedding)是让计算机理解"语义"的关键技术,也是 RAG、语义搜索、向量检索的地基。本笔记讲清 Embedding 是什么、怎么做语义检索。
什么是 Embedding
Embedding 是把文本映射成高维向量(一串数字),让语义相近的内容在向量空间中距离更近。
"猫" → [0.1, 0.8, -0.3, ...] (几百到几千维的向量)
"猫咪" → [0.12, 0.79, -0.31, ...] ← 语义相近,向量相近
"汽车" → [0.7, -0.2, 0.5, ...] ← 语义远,向量远为什么有用:传统关键词搜索按字面匹配,搜"猫咪"找不到"猫"。向量检索按语义匹配,能理解"意思相近"。
相似度衡量
向量之间的"距离"用相似度函数衡量:
| 指标 | 说明 |
|---|---|
| 余弦相似度(Cosine) | 最常用,衡量方向一致性,取值 -1~1 |
| 内积(Dot Product) | 常用于归一化向量 |
| 欧氏距离(L2) | 绝对距离 |
余弦相似度越高,语义越相近。这是向量检索"找到最相关文档"的数学基础。
向量检索流程(在 RAG 中的应用)
1. 离线:把文档切成块 → Embedding → 存入向量数据库(建索引)
2. 在线:查询文本 → Embedding → 在向量库找余弦相似度最高的 N 块
3. 返回最相关的块作为上下文 → 交给 LLM 生成向量数据库
专门存储和检索向量的数据库:
| 工具 | 特点 |
|---|---|
| Chroma | 轻量、Python 友好,入门首选 |
| FAISS | Meta 开源,高性能相似度搜索 |
| pgvector | PostgreSQL 扩展,业务库集成方便 |
| Qdrant / Milvus | 企业级向量库 |
核心洞察
- Embedding 把"语义"变成"可计算的数字",是 RAG、语义搜索、推荐系统、知识库检索的共同地基
- 未来 Claude Code 接 Obsidian(Vault PKM 等)就是靠 Embedding + 向量检索理解知识库
- 提示词、Agent、MCP 解决"怎么用",Embedding 解决"怎么找到对的资料"
一句话总结
Embedding 把语义变成可计算的向量,检索靠余弦相似度而非字面匹配(搜「猫咪」也能命中「猫」);它解决的是"怎么找到对的资料"。
关联概念
- 应用:AI基础概念-RAG检索增强生成(检索地基)
- 基础:AI基础概念-大语言模型与Token
- 未来:_session-state(Claude Code 接知识库的 MCP 方案)