Class: LittleGhost::Embeddings::Response
- Inherits:
-
Data
- Object
- Data
- LittleGhost::Embeddings::Response
- Defined in:
- lib/little_ghost/embeddings/response.rb,
lib/little_ghost/embeddings/response.rb
Overview
Carries validated embedding vectors without provider response objects.
Vectors are finite, consistently sized, frozen, and ordered like the corresponding Request inputs. LittleGhost raises ProtocolError instead of returning an invalid or partial provider response.
Instance Attribute Summary collapse
-
#metadata ⇒ Object
readonly
Returns the value of attribute metadata.
-
#usage ⇒ Object
readonly
Returns the value of attribute usage.
-
#vectors ⇒ Object
readonly
Returns the value of attribute vectors.
Instance Method Summary collapse
-
#dimensions ⇒ Object
Number of numeric values in each vector.
-
#initialize(vectors:, usage: Usage.new, metadata: {}) ⇒ Response
constructor
Validates finite, consistently sized numeric vectors and freezes them.
Constructor Details
#initialize(vectors:, usage: Usage.new, metadata: {}) ⇒ Response
Validates finite, consistently sized numeric vectors and freezes them.
7 8 9 10 11 12 13 14 15 16 17 18 19 |
# File 'lib/little_ghost/embeddings/response.rb', line 7 def initialize(vectors:, usage: Usage.new, metadata: {}) values = Array(vectors) unless !values.empty? && values.all? { |vector| vector.is_a?(Array) && !vector.empty? } raise ProtocolError, "Embedding provider returned no vectors" end dimensions = values.first.length unless values.all? { |vector| vector.length == dimensions && vector.all? { |number| number.is_a?(Numeric) && (!number.respond_to?(:finite?) || number.finite?) } } raise ProtocolError, "Embedding provider returned invalid vectors" end frozen_vectors = values.map { |vector| vector.map(&:to_f).freeze }.freeze super(vectors: frozen_vectors, usage:, metadata: .to_h.merge(dimensions:).freeze) end |
Instance Attribute Details
#metadata ⇒ Object (readonly)
Returns the value of attribute metadata
5 6 7 |
# File 'lib/little_ghost/embeddings/response.rb', line 5 def @metadata end |
#usage ⇒ Object (readonly)
Returns the value of attribute usage
5 6 7 |
# File 'lib/little_ghost/embeddings/response.rb', line 5 def usage @usage end |
#vectors ⇒ Object (readonly)
Returns the value of attribute vectors
5 6 7 |
# File 'lib/little_ghost/embeddings/response.rb', line 5 def vectors @vectors end |
Instance Method Details
#dimensions ⇒ Object
Number of numeric values in each vector.
22 |
# File 'lib/little_ghost/embeddings/response.rb', line 22 def dimensions = .fetch(:dimensions) |