Module: RubyLLM::Providers::Perplexity::Embeddings

Included in:
ChatCompletions
Defined in:
lib/ruby_llm/providers/perplexity/embeddings.rb

Overview

Embeddings methods of the Perplexity API integration

Class Method Summary collapse

Class Method Details

.decode_embedding(embedding) ⇒ Object



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

def decode_embedding(embedding)
  return embedding unless embedding.is_a?(String)

  Base64.decode64(embedding).unpack('c*')
end

.embedding_urlObject



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

def embedding_url(...)
  'v1/embeddings'
end

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

Perplexity serves base64-encoded signed int8 vectors.



15
16
17
18
19
20
21
22
# File 'lib/ruby_llm/providers/perplexity/embeddings.rb', line 15

def parse_embedding_response(response, model:, text:)
  data = response.body
  input_tokens = data.dig('usage', 'prompt_tokens')
  vectors = Array(data['data']).map { |vector| decode_embedding(vector['embedding']) }
  vectors = vectors.first if vectors.length == 1 && !text.is_a?(Array)

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