Module: SmartPrompt::SiliconFlow::Embed

Included in:
SmartPrompt::SiliconFlowAdapter
Defined in:
lib/smart_prompt/adapters/siliconflow/embed.rb

Overview

Embeddings (BAAI/bge-m3 default; Qwen3-Embedding supports custom dimensions).

Instance Method Summary collapse

Instance Method Details

#embeddings(text, model) ⇒ Object

BAAI/bge-m3 (default, fixed 1024 dims) or Qwen3-Embedding (custom dimensions). ‘dimensions` is only honored when set in config (Qwen3-Embedding series only). Returns the first embedding vector.



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/smart_prompt/adapters/siliconflow/embed.rb', line 8

def embeddings(text, model)
  model_name = model || @config["embedding_model"] || @config["model"]
  SmartPrompt.logger.info "SiliconFlowAdapter: embeddings model=#{model_name}"

  body = { "model" => model_name, "input" => text.is_a?(Array) ? text : [text.to_s] }
  body["dimensions"] = @config["dimensions"] if @config["dimensions"]
  body["encoding_format"] = @config["encoding_format"] if @config["encoding_format"]

  response =
    begin
      http_post_json("#{@base_url}/embeddings", body)
    rescue LLMAPIError, Error
      raise
    rescue => e
      raise LLMAPIError, "Failed to call SiliconFlow embeddings: #{e.message}"
    end

  items = response["data"]
  unless items.is_a?(Array) && items.any? && items[0]["embedding"]
    raise LLMAPIError, "No embedding vector in SiliconFlow response: #{response.inspect}"
  end
  items[0]["embedding"]
end