voyageai 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bcd5e858654a8ebb7333cfad429f5aeb8aa2a0ba3fb23da3e70f48a7506143f7
4
- data.tar.gz: a3bd1eb7e07deb63f99486f9c3fc79b736f8f9521b354ef3215cecce3718aa29
3
+ metadata.gz: a2fc61d8673a96f88ae7e69d9cfb27f00c741f077fd05793ff921e27c0fd869a
4
+ data.tar.gz: 4734e6ac573b6251ca1789a37fbf9a9db8294c5e82d63b51613b20bfea793e10
5
5
  SHA512:
6
- metadata.gz: 82c44122fc6e8f1a6f16de5613b9c255204f35f476ddab38518273061ae0de2e86a6aa67d1e27ab2c669266e0a552e97e2ebb11b6a59eebd190cf815972d871b
7
- data.tar.gz: 915f40cb8faf4d4c8b1ae962b3350aa2d6e21090fbc52191553645116d5c8aca3740cd6d97e817894df20c331bcbaa546347330abae888f6932287a51e61c5a2
6
+ metadata.gz: d403d37213b6f9666fbafb58fbc82fcbb9752be9e5d29a9e88d34ea6a198f43d860e809e2d890906bf0c298254d9054fcace76d3e5e8e3f70620abd8d27ec791
7
+ data.tar.gz: f1ad0fcaf76b8a0a0296dc46507c46d6d9b7e2f47a21b6ca9e2d7e8140483c18ece161ff4570db71649c344679b7a92e80287648324a3700c720e00a7b6e2854
data/README.md CHANGED
@@ -10,6 +10,23 @@ gem install voyageai
10
10
 
11
11
  ## Usage
12
12
 
13
+ ### Generating Single Embedding
14
+
15
+ ```ruby
16
+ require 'voyageai'
17
+
18
+ input = 'A quick brown fox jumps over the lazy dog.'
19
+
20
+ voyageai = VoyageAI::Client.new(api_key: 'pa-...') # or configure ENV['VOYAGEAI_API_KEY']
21
+
22
+ embed = voyageai.emed(input)
23
+ embed.model # "..."
24
+ embed.usage # "#<VoyageAI::Usage total_tokens=...>"
25
+ embed.embedding # [0.0, ...]
26
+ ```
27
+
28
+ ### Generating Multiple Embeddings
29
+
13
30
  ```ruby
14
31
  require 'voyageai'
15
32
 
@@ -22,10 +39,8 @@ input = [
22
39
 
23
40
  voyageai = VoyageAI::Client.new(api_key: 'pa-...') # or configure ENV['VOYAGEAI_API_KEY']
24
41
 
25
- result = voyageai.embed(input)
42
+ embed = voyageai.embed(input)
26
43
  embed.model # "..."
27
44
  embed.usage # "#<VoyageAI::Usage total_tokens=...>"
28
- embed.embeddings.each do |embedding|
29
- embedding.index # "#<VoyageAI::Embedding index=... embedding=...>
30
- end
45
+ embed.embeddings # [[0.0, ...], ...]
31
46
  ```
@@ -33,7 +33,7 @@ module VoyageAI
33
33
  #
34
34
  # @return [Embedding]
35
35
  def embed(input, model: Model::VOYAGE)
36
- payload = { input: input, model: model }
36
+ payload = { input: arrayify(input), model: model }
37
37
  response = HTTP
38
38
  .accept(:json)
39
39
  .auth("Bearer #{@api_key}")
@@ -43,5 +43,11 @@ module VoyageAI
43
43
 
44
44
  Embed.parse(data: response.parse)
45
45
  end
46
+
47
+ private
48
+
49
+ def arrayify(input)
50
+ input.is_a?(Array) ? input : [input]
51
+ end
46
52
  end
47
53
  end
@@ -15,7 +15,7 @@ module VoyageAI
15
15
  attr_accessor :usage
16
16
 
17
17
  # @!attribute [rw] embeddings
18
- # @return [Array<Embedding>]
18
+ # @return [Array<Array<Float>>]
19
19
  attr_accessor :embeddings
20
20
 
21
21
  # @param data [Hash]
@@ -23,9 +23,7 @@ module VoyageAI
23
23
  def self.parse(data:)
24
24
  model = data["model"]
25
25
  usage = Usage.parse(data: data["usage"])
26
- embeddings = data["data"].map do |embedding_data|
27
- Embedding.parse(data: embedding_data)
28
- end
26
+ embeddings = data["data"].map { |embedding_data| embedding_data["embedding"] }
29
27
 
30
28
  Embed.new(model: model, usage: usage, embeddings: embeddings)
31
29
  end
@@ -43,5 +41,12 @@ module VoyageAI
43
41
  def inspect
44
42
  "#<#{self.class.name} model=#{@model.inspect} embeddings=#{@embeddings.inspect} usage=#{@usage.inspect}>"
45
43
  end
44
+
45
+ # @param index [Integer] optional
46
+ #
47
+ # @return [Array<Float>]
48
+ def embedding(index: 0)
49
+ @embeddings[index]
50
+ end
46
51
  end
47
52
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module VoyageAI
4
- VERSION = "1.0.0"
4
+ VERSION = "1.1.0"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: voyageai
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kevin Sylvestre
@@ -52,7 +52,6 @@ files:
52
52
  - lib/voyageai.rb
53
53
  - lib/voyageai/client.rb
54
54
  - lib/voyageai/embed.rb
55
- - lib/voyageai/embedding.rb
56
55
  - lib/voyageai/model.rb
57
56
  - lib/voyageai/usage.rb
58
57
  - lib/voyageai/version.rb
@@ -1,37 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module VoyageAI
4
- # An embedding returned by the VoyageAI API.
5
- #
6
- # @example
7
- # VoyageAI::Embedding.new(index: 0, embedding: [0.0, 1.0, 2.0, 3.0])
8
- class Embedding
9
- # @!attribute [rw] model
10
- # @return [Integer]
11
- attr_accessor :index
12
-
13
- # @!attribute [rw] embedding
14
- # @return [Array<Float>]
15
- attr_accessor :embedding
16
-
17
- # @param data [Hash]
18
- # @return [Embedding]
19
- def self.parse(data:)
20
- index = data["index"]
21
- embedding = data["embedding"]
22
- new(index:, embedding:)
23
- end
24
-
25
- # @param index [Integer]
26
- # @param embedding [Array<Float>]
27
- def initialize(index:, embedding:)
28
- @index = index
29
- @embedding = embedding
30
- end
31
-
32
- # @return [String]
33
- def inspect
34
- "#<#{self.class.name} index=#{index} embedding=#{embedding.inspect}>"
35
- end
36
- end
37
- end