voyageai 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
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