Module: RubyLLM::Providers::VertexAI::Embeddings

Included in:
RubyLLM::Providers::VertexAI
Defined in:
lib/ruby_llm/providers/vertexai/embeddings.rb

Overview

Embeddings methods for the Vertex AI implementation

Class Method Summary collapse

Class Method Details

.embedding_url(model:) ⇒ Object



10
11
12
# File 'lib/ruby_llm/providers/vertexai/embeddings.rb', line 10

def embedding_url(model:)
  "projects/#{@config.vertexai_project_id}/locations/#{@config.vertexai_location}/publishers/google/models/#{model}:predict" # rubocop:disable Layout/LineLength
end

.parse_embedding_response(response, model:, text:) ⇒ Object



22
23
24
25
26
27
28
# File 'lib/ruby_llm/providers/vertexai/embeddings.rb', line 22

def parse_embedding_response(response, model:, text:)
  predictions = response.body['predictions']
  vectors = predictions&.map { |p| p.dig('embeddings', 'values') }
  vectors = vectors.first if vectors&.length == 1 && !text.is_a?(Array)

  Embedding.new(vectors:, model:, input_tokens: 0)
end

.render_embedding_payload(text, model:, dimensions:) ⇒ Object

rubocop:disable Lint/UnusedMethodArgument



14
15
16
17
18
19
20
# File 'lib/ruby_llm/providers/vertexai/embeddings.rb', line 14

def render_embedding_payload(text, model:, dimensions:) # rubocop:disable Lint/UnusedMethodArgument
  {
    instances: [text].flatten.map { |t| { content: t.to_s } }
  }.tap do |payload|
    payload[:parameters] = { outputDimensionality: dimensions } if dimensions
  end
end