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 +4 -4
- data/README.md +19 -4
- data/lib/voyageai/client.rb +7 -1
- data/lib/voyageai/embed.rb +9 -4
- data/lib/voyageai/version.rb +1 -1
- metadata +1 -2
- data/lib/voyageai/embedding.rb +0 -37
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a2fc61d8673a96f88ae7e69d9cfb27f00c741f077fd05793ff921e27c0fd869a
|
4
|
+
data.tar.gz: 4734e6ac573b6251ca1789a37fbf9a9db8294c5e82d63b51613b20bfea793e10
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
42
|
+
embed = voyageai.embed(input)
|
26
43
|
embed.model # "..."
|
27
44
|
embed.usage # "#<VoyageAI::Usage total_tokens=...>"
|
28
|
-
embed.embeddings.
|
29
|
-
embedding.index # "#<VoyageAI::Embedding index=... embedding=...>
|
30
|
-
end
|
45
|
+
embed.embeddings # [[0.0, ...], ...]
|
31
46
|
```
|
data/lib/voyageai/client.rb
CHANGED
@@ -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
|
data/lib/voyageai/embed.rb
CHANGED
@@ -15,7 +15,7 @@ module VoyageAI
|
|
15
15
|
attr_accessor :usage
|
16
16
|
|
17
17
|
# @!attribute [rw] embeddings
|
18
|
-
# @return [Array<
|
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
|
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
|
data/lib/voyageai/version.rb
CHANGED
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.
|
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
|
data/lib/voyageai/embedding.rb
DELETED
@@ -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
|