Embedding 嵌入
将文本、图像等非结构化数据转换为高维向量表示的技术
简介
Embedding(嵌入)是一种将非结构化数据(文本、图像、音频等)转换为高维向量表示的技术。在向量空间中,语义相似的内容会被映射到相近的位置,这使得计算机能够理解和计算数据之间的语义关系。
核心原理
向量空间表示
- 每个数据点被映射为一个高维空间中的向量
- 向量维度通常在 128 到 4096 之间
- 语义相似的内容在向量空间中距离更近
相似度计算方法
| 方法 | 说明 | 适用场景 |
|---|---|---|
| 余弦相似度 | 计算两个向量夹角的余弦值 | 文本相似度匹配 |
| 欧氏距离 | 计算向量之间的直线距离 | 图像特征匹配 |
| 点积 | 直接计算向量对应元素乘积之和 | 大规模检索优化 |
在 AI 中的关键应用
1. RAG 检索增强生成
RAG 技术的核心组件之一:
- 文档向量化:将知识库文档切分后转换为向量
- 问题向量化:用户提问也转换为相同空间的向量
- 相似度检索:在向量库中找到最相关的文档片段
- 大模型综合:基于检索到的相关内容生成回答
标准 RAG 工作流:
企业文档 → 文本切分 → Embedding 向量化 → 向量数据库存储
↓
用户提问 → Embedding 向量化 → 检索相似文档 → 大模型综合回答
2. 搜索和推荐系统
- 基于语义的搜索引擎
- 个性化推荐算法
- 相似内容发现
3. 聚类和分类
- 无监督文本聚类
- 内容分类打标签
- 异常检测
主流 Embedding 模型
| 模型 | 提供商 | 特点 |
|---|---|---|
| text-embedding-3-large | OpenAI / 百炼兼容接口 | 通用性好,百炼接口输出 1024 维 |
| text-embedding-ada-002 | OpenAI | 应用广泛,通用性好 |
| bge-large-zh | 智源 | 中文效果优秀 |
| m3e | 魔搭社区 | 多语言多任务 |
| LLaMA Embedding | Meta | 开源可本地化 |
不同素材中的观点
来自 2026-05-31-woshipm-100rmb-production-rag:
- 向量维度一致性是生产 RAG 最隐蔽的故障源:通义千问 text-embedding-3-large 经百炼接口实际输出 1024 维,若 Milvus Schema 按 OpenAI 默认写成 3072 维,Milvus 可能仍能插入但检索静默返回 0 条——无报错。上线检查清单第一项必须是”Embedding 模型输出维度 == 向量库 Schema dim”,且变更模型后必须重建集合
- 不同模型的 COSINE 分数分布差异巨大:通义 v3 直接 search Top5 分数仅 0.26–0.45,若参照 OpenAI 经验设定阈值 0.7 则全部被过滤。正确做法是上线前用独立脚本测自家模型在自家语料上的分数区间,不能照搬任何外部经验值
- LangChain 接入国内 Embedding API 的配置陷阱:
@langchain/openai的baseUrl参数会被忽略,必须使用configuration: { baseURL: '...' }写法,否则请求静默打到 api.openai.com 超时或返回异常向量
实用信息
最佳实践
- 选择合适维度:平衡精度和性能,常用 768 或 1024 维
- 统一模型:查询和文档必须使用相同的 Embedding 模型
- 文本预处理:去除噪声,保证输入质量
- 批量处理:批量向量化提高效率
常见问题
- 冷启动问题:新领域数据需要重新微调模型
- 语义漂移:不同语境下同词不同义
- 长文本处理:需要合理的切分策略