向量与Embedding
797 字约 3 分钟
domain/aiai/foundations
2026-07-24
1. 核心结论
- Embedding 是将文本、图像等数据转换为稠密向量的技术,使计算机能够理解和比较语义
- 语义相似的文本在向量空间中距离更近,这是语义搜索和 RAG 的基础
- 不同模型生成的 embedding 不能混用,需要匹配对应的 embedding 模型
- 向量相似度计算常用余弦相似度、点积、欧氏距离等方法
- Embedding 质量直接影响 RAG 系统的检索效果
2. 基础概念
Embedding:将离散对象(如单词、句子)映射到连续向量空间的技术。
向量空间(Vector Space):embedding 所在的多维空间,每个维度代表一个潜在特征。
余弦相似度(Cosine Similarity):衡量两个向量方向相似度的指标,范围 [-1, 1]。
语义搜索(Semantic Search):基于向量相似度而非关键词匹配的搜索方式。
Dense vs Sparse:Dense embedding 是稠密向量,Sparse 是稀疏向量(如 BM25)。
Dimension:embedding 向量的维度,常见为 256-4096 维。
3. 工作原理
Embedding 生成流程:
- 文本输入:将文本送入 embedding 模型
- Tokenization:将文本切分为 token
- 编码器处理:通过 Transformer 编码器提取语义表示
- 池化:将 token 级别的表示聚合为句子级别向量(Mean Pooling、CLS Pooling)
- 归一化:对向量进行 L2 归一化,便于余弦相似度计算
相似度计算:
- 余弦相似度:cos(θ) = A·B / (||A|| × ||B||),最常用
- 点积:A·B,归一化后等价于余弦相似度
- 欧氏距离:||A - B||,距离越小越相似
- 曼哈顿距离:|A - B| 各维度差值绝对值之和
主流 Embedding 模型:
- OpenAI text-embedding-3-small/large
- Cohere embed 系列
- BGE(BAAI General Embedding)
- Jina Embeddings
- Nomic Embed
4. 实战场景
- RAG 系统:文档向量化存储,检索相关片段
- 语义搜索:超越关键词匹配的搜索体验
- 推荐系统:用户和物品的向量表示
- 聚类分析:自动发现文本主题
- 去重检测:识别相似或重复内容
- 异常检测:偏离正常向量分布的样本
5. 常见误区
- 混用不同模型的 embedding:不同模型的向量空间不兼容
- 忽视 embedding 维度:高维度表达能力强但存储成本高
- 认为 embedding 能理解一切:embedding 只能捕捉训练数据中的语义
- 不使用归一化:未归一化的向量不能用点积代替余弦相似度
- 忽视多语言支持:不是所有 embedding 模型都支持多语言
6. 进阶方向
- 多模态 embedding(图文、音视频)
- 稀疏-稠密混合检索
- 动态 embedding 与上下文感知
- 向量量化与压缩(PQ、SQ)
- 对比学习与 embedding 优化
- 领域自适应 embedding
7. 推荐资料
- OpenAI Embeddings Docs - https://platform.openai.com/docs/guides/embeddings
- Sentence Transformers - https://www.sbert.net/
- BGE Embedding - https://github.com/FlagOpen/FlagEmbedding
- Pinecone Vector Database Guide - https://www.pinecone.io/learn/series/vector-database/
- Cohere Embeddings - https://docs.cohere.com/docs/cohere-embed