Embedding(向量嵌入)是将文本、图片等非结构化数据转换为固定长度的数字向量的技术。这些向量捕捉了数据的语义信息——意思相近的文本,向量距离也近。这是语义搜索、RAG、推荐系统的基础技术。
// 文本 → 向量
"猫" → [0.2, 0.8, 0.1, ...] (1536维)
"狗" → [0.3, 0.7, 0.2, ...] (1536维)
"汽车" → [0.9, 0.1, 0.8, ...] (1536维)
// 向量距离
距离("猫", "狗") = 0.15 ← 很近,语义相似
距离("猫", "汽车") = 0.85 ← 很远,语义不同
| 模型 | 维度 | 特点 |
|---|---|---|
| OpenAI text-embedding-3 | 1536/3072 | 高质量,商业API |
| BGE-M3 | 1024 | 开源,多语言 |
| Jina Embeddings | 768 | 开源,速度快 |
| Cohere Embed | 1024 | 商业,多模态 |
// RAG工作流程
1. 索引阶段:
文档 → 分块 → Embedding → 存入向量数据库
2. 检索阶段:
用户问题 → Embedding → 向量搜索 → 找到最相关的文档块
3. 生成阶段:
相关文档 + 用户问题 → LLM → 生成回答
// 代码示例
const embedding = await openai.embeddings.create({
model: "text-embedding-3-small",
input: "什么是Agent Loop?"
})
// 返回: [0.0234, -0.0156, 0.0891, ...] (1536维)
// 余弦相似度 (最常用)
cosine_sim(A, B) = (A·B) / (|A| × |B|)
// 值域: [-1, 1],越接近1越相似
// 欧氏距离
euclidean_dist(A, B) = √(Σ(Ai - Bi)²)
// 值越小越相似
// 实际应用
查询: "OpenClaw怎么用?"
文档1: "OpenClaw使用教程" → 相似度: 0.92 ✓
文档2: "Python安装指南" → 相似度: 0.23 ✗
更多内容请访问 妙趣AI首页