Embedding 接口是把一段文本变成一串数字向量,用来做语义搜索、聚类去重和 RAG 召回。调用方式跟聊天接口差不多:把文本发过去,接口返回向量。
最短流程:拿到服务地址和密钥,按接口要求的字段把文本发过去,再从返回结果里取出向量数组存起来,留到之后比对。
import os, requests
url = os.environ["EMBEDDING_BASE_URL"] + "/embeddings" # 兼容 OpenAI 格式的服务地址
headers = {"Authorization": f"Bearer {os.environ['EMBEDDING_API_KEY']}"}
data = {
"model": os.environ["EMBEDDING_MODEL"],
"input": ["报销流程怎么走", "差旅费怎么报"], # 支持批量
}
r = requests.post(url, headers=headers, json=data, timeout=30)
r.raise_for_status()
items = sorted(r.json()["data"], key=lambda x: x["index"]) # 按 index 对齐输入顺序
vecs = [i["embedding"] for i in items]
print(len(vecs), len(vecs[0]))
坑一:一次提交太多条文本,或者单条文本太长,接口会报错,或被悄悄截断,所以长文档要先切块再调用。坑二:换了模型之后,向量空间就变了,旧库里的向量不能直接和新向量比较相似度,要么整库重算,要么保留原模型。