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
- .embedding_url(model:) ⇒ Object
- .parse_embedding_response(response, model:, text:) ⇒ Object
-
.render_embedding_payload(text, model:, dimensions:) ⇒ Object
rubocop:disable Lint/UnusedMethodArgument.
Class Method Details
.embedding_url(model:) ⇒ Object
10 11 12 |
# File 'lib/ruby_llm/providers/vertexai/embeddings.rb', line 10 def (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 (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 (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 |