voyageai 1.0.1 → 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: 7f4d48a99c21b4d0120511d09b89038e3a6082a145e620fb6ecaf427f0247390
4
- data.tar.gz: 4d931a99a02500a3173404b0ec7ada0c9f1a5203f074d09ddd6ef7769a884aed
3
+ metadata.gz: a2fc61d8673a96f88ae7e69d9cfb27f00c741f077fd05793ff921e27c0fd869a
4
+ data.tar.gz: 4734e6ac573b6251ca1789a37fbf9a9db8294c5e82d63b51613b20bfea793e10
5
5
  SHA512:
6
- metadata.gz: 4f559800105a83db3479237cfa5c2fcd576d609a15a3d88dfc8f448750ee4fd2189abf6ce11d039f2879958b8ba418e00e214b850ce357487a562a4e13fc1f9f
7
- data.tar.gz: 8cfaf28bcc73fc5540a17cf857c2458dc4197e4d452e0cd2dbdd409e6d1024992f1eb22998a19ca5733cb7ae3c2208863f71d66b475c60084cba749c9d9b5dab
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.1"
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.1
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