Embedding HTTP 调用与响应归一(两种线上形态)
OpenAI 兼容 POST {base}/embeddings
body {:model .. :input ["a" "b"] :dimensions n? :encoding_format ..}
resp {:data [{:index 0 :embedding [..]} ..] :model .. :usage {:prompt_tokens ..}}
覆盖:OpenAI / 智谱 / SiliconFlow / Ollama / Gemini(兼容端点) / Mistral / xAI …
DashScope 原生 POST .../services/embeddings/text-embedding/text-embedding
body {:model .. :input {:texts [..]} :parameters {:dimension n :text_type ..}}
resp {:output {:embeddings [{:text_index 0 :embedding [..]}]} :usage {:total_tokens n}}
两条路的公共约定:
:batch-size),usage 逐片累加Embedding HTTP 调用与响应归一(两种线上形态)
1. **OpenAI 兼容** `POST {base}/embeddings`
body {:model .. :input ["a" "b"] :dimensions n? :encoding_format ..}
resp {:data [{:index 0 :embedding [..]} ..] :model .. :usage {:prompt_tokens ..}}
覆盖:OpenAI / 智谱 / SiliconFlow / Ollama / Gemini(兼容端点) / Mistral / xAI …
2. **DashScope 原生** `POST .../services/embeddings/text-embedding/text-embedding`
body {:model .. :input {:texts [..]} :parameters {:dimension n :text_type ..}}
resp {:output {:embeddings [{:text_index 0 :embedding [..]}]} :usage {:total_tokens n}}
两条路的公共约定:
- 返回向量与入参 texts **同序等长**(按服务端返回的 index 重排,不假定顺序)
- 超批自动切片(`:batch-size`),usage 逐片累加
- 失败一律抛规范错误(D5),与 chat 路径同一套词汇(batched batch-size texts call-chunk)把 texts 按 batch-size 切片,逐片调 call-chunk,结果按原序拼回。
参数:
把 texts 按 batch-size 切片,逐片调 call-chunk,结果按原序拼回。
参数:
- batch-size: 每片最大条数(nil / <=0 视为不切)
- call-chunk: (fn [chunk] {:embeddings [..] :usage {..} :model ..})(build-params {:keys [model dimensions encoding-format user extra-body]} texts)OpenAI 兼容 embeddings 请求体(字段一律「存在才发送」)
OpenAI 兼容 embeddings 请求体(字段一律「存在才发送」) - :dimensions 输出维度(text-embedding-3 系列 / bge 等支持降维) - :encoding-format "float"(默认)| "base64" - :user 终端用户标识 - :extra-body 私有字段逃生通道,直接 merge 进请求体
(call-dashscope-embeddings api-url api-key config texts)调用 DashScope 原生 text-embedding 端点(自动切片;单次上限官方为 10 条)
config 额外支持 :dimensions(→ parameters.dimension)与 :text-type("query" | "document",→ parameters.text_type)。
调用 DashScope 原生 text-embedding 端点(自动切片;单次上限官方为 10 条) config 额外支持 :dimensions(→ parameters.dimension)与 :text-type("query" | "document",→ parameters.text_type)。
(call-embeddings api-url api-key config texts)调用 OpenAI 兼容 embeddings 端点(自动切片)
参数:
返回:{:embeddings [[..] ..] :model .. :usage {..} :provider ..}
调用 OpenAI 兼容 embeddings 端点(自动切片)
参数:
- api-url: 完整端点 URL(如 https://api.openai.com/v1/embeddings)
- api-key: API Key(Bearer)
- config: {:model .. :dimensions .. :batch-size .. :timeout .. :retry ..
:extra-headers {..} :provider-name :openai}
- texts: 字符串列表
返回:{:embeddings [[..] ..] :model .. :usage {..} :provider ..}cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |