Embedding 接口调用

Alexer 发布于 阅读:14 AI栈

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]))

坑一:一次提交太多条文本,或者单条文本太长,接口会报错,或被悄悄截断,所以长文档要先切块再调用。坑二:换了模型之后,向量空间就变了,旧库里的向量不能直接和新向量比较相似度,要么整库重算,要么保留原模型。

AI 开发 RAG 模型部署