首页 / 嵌入与检索 API

嵌入与检索 API

苏姆卡皮 · OpenAI 兼容 AI API 网关 · Base URL https://sub.sumcapi.top/v1

嵌入(Embeddings)是把文本变成向量的一次调用——知识库召回、相似度去重、聚类与推荐都依赖它。苏姆卡皮通过 /v1/embeddings 提供统一的 OpenAI 兼容入口。

嵌入与检索 API

什么时候需要它

接口形状

curl https://sub.sumcapi.top/v1/embeddings \
  -H "Authorization: Bearer sk-你的密钥" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "text-embedding-3-large",
    "input": ["幂等设计要点", "指数退避与抖动", "缓存命中与成本"]
  }'
from openai import OpenAI

client = OpenAI(base_url="https://sub.sumcapi.top/v1", api_key="sk-你的密钥")
r = client.embeddings.create(model="text-embedding-3-large",
                             input=["示例文本 A", "示例文本 B"])
print(len(r.data[0].embedding), r.usage.total_tokens)

要点:input 支持字符串与字符串数组,一次批量比逐条调用省往返;返回的 usage.total_tokens 是计费依据。

选型:维度不是越大越好

档位适合代价
轻量嵌入(低维)百万级条目、召回后仍有精排语义分辨率略低
标准嵌入(高维)长文档、专业术语、跨语言召回向量存储与检索成本更高
重排模型Top-K 精排,显著提升命中率每次多一跳延迟与费用

维度翻倍通常意味着向量存储与检索成本同步上涨。先用轻量档跑通链路,再按召回质量决定是否升档。

切片与索引实践

  1. 按语义切片:以标题或段落为边界,300–800 token 一档,保留 10–15% 重叠,避免句子被切断。
  2. 带上上下文头:切片前拼一小段"该内容来自 X 文档的 Y 章节",召回质量提升明显。
  3. 版本化索引:文档更新时写入新索引再切换别名,避免召回结果半新半旧。
  4. 错峰批量:全量重建索引会产生大量 token 消耗,安排在业务低谷时段并分批提交。
  5. 混合检索:向量与关键词双路召回再融合排序,对专有名词与型号更友好。

计费与限流

下一步

常见问题

不同厂商的向量可以混在同一个库里吗?

不建议。不同模型的向量维度与语义空间不互通,混用会让相似度失去可比性。换嵌入模型等于重建索引,请为每个知识库固定一种模型。

多大的资料才需要向量检索?

几十条以内直接塞进上下文更准;上千条起向量检索开始划算;上万条建议「关键词召回 + 向量重排」两段式,兼顾召回率与成本。

嵌入请求很慢怎么办?

先看是不是单条同步调用:批量接口一次提交数十条,往返次数下降最明显。其次是切片长度,300~800 token 的块通常比超长块更稳。

知识库更新后旧的怎么办?

metadata 存文档版本或更新时间,检索后按版本过滤,再异步重算新向量;直接原地替换容易在重建期间出现空洞。