Liking cljdoc? Tell your friends :D

im.ttalk.agent.provider.embeddings

Embedding Provider 实现与工厂

与对话 provider 分开:embedding 模型是另一种模型(另一个端点、另一套参数、 另一份计费),所以它是独立实例而不是给 ILLMProvider 加方法——对齐 Vercel AI SDK 的 openai.embedding(...) 与 openai.chat(...) 两条线。好处是能力探测不撒谎: (emb/embedding-provider? p) 为真,就是真能 embed;Anthropic 这种没有 embedding 服务的厂商,这里根本没有条目。

内置(create-provider 第一参数): :openai / :zhipu / :siliconflow / :ollama / :gemini / :mistral / :dashscope / :openai-compat(任意兼容端点,:base-url 必填)/ :mock(确定性假向量,测试用)

(require '[im.ttalk.agent.provider.embeddings :as emb])

(def e (emb/create-provider :openai))                      ;; 取 OPENAI_API_KEY
(emb/embed e {} ["你好" "世界"])
;; => {:embeddings [[...] [...]] :model "text-embedding-3-small"
;;     :usage {:input-tokens 8 :total-tokens 8} :provider :openai}

(emb/embed-one e {:dimensions 256} "只要一条")

;; 自建 / 私有兼容端点
(emb/create-provider :openai-compat
  {:base-url "https://my-gw.internal/v1" :api-key "..." :model "bge-m3"})

调用时的 config 覆盖实例 config:{:model :dimensions :batch-size :timeout :retry :encoding-format :user :extra-headers :extra-body}(DashScope 另有 :text-type)。

Embedding Provider 实现与工厂

**与对话 provider 分开**:embedding 模型是另一种模型(另一个端点、另一套参数、
另一份计费),所以它是独立实例而不是给 `ILLMProvider` 加方法——对齐 Vercel AI SDK
的 `openai.embedding(...)` 与 `openai.chat(...)` 两条线。好处是**能力探测不撒谎**:
`(emb/embedding-provider? p)` 为真,就是真能 embed;Anthropic 这种没有 embedding
服务的厂商,这里根本没有条目。

内置(`create-provider` 第一参数):
:openai / :zhipu / :siliconflow / :ollama / :gemini / :mistral / :dashscope /
:openai-compat(任意兼容端点,:base-url 必填)/ :mock(确定性假向量,测试用)

```clojure
(require '[im.ttalk.agent.provider.embeddings :as emb])

(def e (emb/create-provider :openai))                      ;; 取 OPENAI_API_KEY
(emb/embed e {} ["你好" "世界"])
;; => {:embeddings [[...] [...]] :model "text-embedding-3-small"
;;     :usage {:input-tokens 8 :total-tokens 8} :provider :openai}

(emb/embed-one e {:dimensions 256} "只要一条")

;; 自建 / 私有兼容端点
(emb/create-provider :openai-compat
  {:base-url "https://my-gw.internal/v1" :api-key "..." :model "bge-m3"})
```

调用时的 config 覆盖实例 config:`{:model :dimensions :batch-size :timeout
:retry :encoding-format :user :extra-headers :extra-body}`(DashScope 另有
:text-type)。
raw docstring

builtin-embeddingsclj

内置 embedding 端点:{provider {:kind :base-url :endpoint :env-key :model :batch-size}}

:kind —— :openai-compat(缺省)/ :dashscope(原生形状)/ :mock 没有条目 = 该厂商没有(公开的)embedding 服务,别硬凑一个。

内置 embedding 端点:{provider {:kind :base-url :endpoint :env-key :model :batch-size}}

:kind —— :openai-compat(缺省)/ :dashscope(原生形状)/ :mock
没有条目 = 该厂商没有(公开的)embedding 服务,别硬凑一个。
sourceraw docstring

create-providerclj

(create-provider provider-type)
(create-provider provider-type opts)

创建 embedding provider

参数:

  • provider-type: builtin-embeddings 的键(:openai / :dashscope / :mock / …)
  • opts: 覆盖项 {:api-key :base-url :endpoint :model :dimensions :batch-size :timeout :retry :extra-headers :extra-body}

校验(创建即失败,不拖到调用时):未知类型、缺 :base-url、缺 api-key。

创建 embedding provider

参数:
- provider-type: builtin-embeddings 的键(:openai / :dashscope / :mock / …)
- opts: 覆盖项 {:api-key :base-url :endpoint :model :dimensions :batch-size
                :timeout :retry :extra-headers :extra-body}

校验(创建即失败,不拖到调用时):未知类型、缺 :base-url、缺 api-key。
sourceraw docstring

embedclj

(embed provider texts)
(embed provider config texts)

批量向量化。config 缺省 {}(用实例自身配置)。

批量向量化。config 缺省 {}(用实例自身配置)。
sourceraw docstring

embed-oneclj

(embed-one provider text)
(embed-one provider config text)

单条向量化 → 向量本身

单条向量化 → 向量本身
sourceraw docstring

supported-providersclj

(supported-providers)

支持的 embedding provider 列表

支持的 embedding provider 列表
sourceraw docstring

cljdoc builds & hosts documentation for Clojure/Script libraries

Keyboard shortcuts
Ctrl+kJump to recent docs
←Move to previous article
→Move to next article
Ctrl+/Jump to the search field
× close