Liking cljdoc? Tell your friends :D

im.ttalk.agent.model.embedding

Embedding Provider 协议(端口)

与 ILLMProvider 并列而非从属:embedding 模型和对话模型是两种不同的模型, 端点、参数、计费都不同,一个 provider 实例支持哪一种是它自己的事(对齐 Vercel AI SDK 把 LanguageModel 与 EmbeddingModel 分成两个规格)。

所以这里不给 extend-type Object 默认实现——satisfies? 必须是可信的能力 探测(ILLMProvider 就栽在有兜底上,见 model/provider? 注释)。 不支持 embedding 的厂商(如 Anthropic)不实现本协议,调用方 satisfies? 一问便知,不需要「调了才报不支持」。

实现示例:

(defrecord MyEmbeddings [config] IEmbeddingProvider (embed [_ call-config texts] {:embeddings [[0.1 0.2]] :model "m"}))

Embedding Provider 协议(端口)

与 `ILLMProvider` **并列而非从属**:embedding 模型和对话模型是两种不同的模型,
端点、参数、计费都不同,一个 provider 实例支持哪一种是它自己的事(对齐 Vercel
AI SDK 把 `LanguageModel` 与 `EmbeddingModel` 分成两个规格)。

所以这里**不给 `extend-type Object` 默认实现**——`satisfies?` 必须是可信的能力
探测(`ILLMProvider` 就栽在有兜底上,见 `model/provider?` 注释)。
不支持 embedding 的厂商(如 Anthropic)不实现本协议,调用方 `satisfies?`
一问便知,不需要「调了才报不支持」。

实现示例:

(defrecord MyEmbeddings [config]
  IEmbeddingProvider
  (embed [_ call-config texts] {:embeddings [[0.1 0.2]] :model "m"}))
raw docstring

embed-oneclj

(embed-one provider config text)

单条文本 → 单个向量(内部仍是一次批量调用)

单条文本 → 单个向量(内部仍是一次批量调用)
sourceraw docstring

embedding-provider?clj

(embedding-provider? x)

对象是否实现了 embedding 能力(可信探测:本协议无 Object 兜底)

对象是否实现了 embedding 能力(可信探测:本协议无 Object 兜底)
sourceraw docstring

ensure-embedding-provider!clj

(ensure-embedding-provider! x)

断言对象支持 embedding,否则抛规范错误(不可重试)。 给那些「必须有 embedding 才能干活」的调用方用(如向量检索)。

断言对象支持 embedding,否则抛规范错误(不可重试)。
给那些「必须有 embedding 才能干活」的调用方用(如向量检索)。
sourceraw docstring

IEmbeddingProvidercljprotocol

文本向量化统一接口。只有一个方法——批量即全部(单条是 1 元批), 维度/模型/批大小都是 config,不各立方法。

文本向量化统一接口。只有一个方法——批量即全部(单条是 1 元批),
维度/模型/批大小都是 config,不各立方法。

embedclj

(embed this config texts)

把文本列表向量化。

参数:

  • config: 调用配置 {:model "..." :dimensions n :batch-size n ...} (缺省取 provider 实例自身配置)
  • texts: 字符串列表

返回: {:embeddings [[float ...] ...] ;; 与 texts 同序等长 :model "text-embedding-3-small" :usage {:input-tokens n :total-tokens n} :provider :openai}

失败:抛 ex-info(data 为规范错误 map,见 model/error)

把文本列表向量化。

参数:
- config: 调用配置 {:model "..." :dimensions n :batch-size n ...}
          (缺省取 provider 实例自身配置)
- texts:  字符串列表

返回:
{:embeddings [[float ...] ...]   ;; 与 texts **同序等长**
 :model      "text-embedding-3-small"
 :usage      {:input-tokens n :total-tokens n}
 :provider   :openai}

失败:抛 ex-info(data 为规范错误 map,见 model/error)
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