Embeddings
Embeddings 用于将文本转换为向量,可用于语义搜索、推荐、聚类与去重。
把 Embeddings 想成“给文本贴坐标”。
原来靠关键词匹配像在通讯录里按名字找人;有了向量后,更像按“气质相近”找人,能抓到语义近似而不是字面重复。
这页适合谁?
- 准备做 RAG / 语义检索的工程师
- 想做推荐系统或文本去重的算法同学
- 需要在成本和效果之间做平衡的技术负责人
1. 基础调用(Python)
from openai import OpenAI
client = OpenAI()
response = client.embeddings.create(
model="text-embedding-3-small",
input="这是一段需要向量化的文本"
)
embedding = response.data[0].embedding
print(len(embedding))
2. Node.js 示例
import OpenAI from 'openai';
const client = new OpenAI();
const response = await client.embeddings.create({
model: 'text-embedding-3-small',
input: '这是一段需要向量化的文本'
});
const embedding = response.data[0].embedding;
console.log(embedding.length);
3. 典型用法
语义检索(最常见)
- 把文档分块并生成向量。
- 用户查询生成向量。
- 计算相似度并返回最接近的文档块。
简化流程示例
import numpy as np
def cosine_sim(a, b):
return np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b))
实战落地顺序(读者导向)
- 先用
text-embedding-3-small建立最小可用检索链路。 - 再优化分块策略(chunk size / overlap)提升召回质量。
- 最后才切换更大模型做 A/B,对比收益是否覆盖成本。
4. 选型建议
- text-embedding-3-small:性价比高,适合大多数检索场景。
- text-embedding-3-large:精度更高,适合对检索质量要求高的场景。
5. 常见注意事项
- 文本过长时先分块(chunking)。
- 对检索库进行向量归一化,便于相似度计算。
- 为向量库设置合适的维度与索引类型。
一句轻松总结:
向量化不是魔法棒,更像“给知识库装 GPS”。
路线规划(分块、索引、过滤)没做好,再好的地图也会带你绕远路。