chroma-db 0.6.0 → 0.7.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/Gemfile.lock +57 -45
- data/README.md +4 -1
- data/lib/.rbnext/2.7/chroma/api_operations/request.rb +2 -1
- data/lib/.rbnext/2.7/chroma/resources/collection.rb +1 -17
- data/lib/.rbnext/2.7/chroma/resources/database.rb +0 -11
- data/lib/.rbnext/3.1/chroma/api_operations/request.rb +2 -1
- data/lib/.rbnext/3.1/chroma/resources/collection.rb +1 -17
- data/lib/chroma/api_operations/request.rb +2 -1
- data/lib/chroma/resources/collection.rb +1 -17
- data/lib/chroma/resources/database.rb +0 -11
- data/lib/chroma/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 860772eeeda54b7057681aa0d82bf1d1737501c6d699645d74f0df907e2881d0
|
|
4
|
+
data.tar.gz: 66acb245e05333fdf2c2abae27823d8963f7c75c7186b0922ae83265cdb577ca
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: '09c0a28cc809673c658558f95bb3fa85bc6e4845eb95b076105b4aa0e083693663e0fab386e534ae674848fc0007944b135e8a85d48a4bd616a5a105b7592b31'
|
|
7
|
+
data.tar.gz: b1037adef96c371cbc794580000e40ea1017085093889f248019095f80c82f18d74ca6a5394703f81f873d6366d9a99aebae56dbe6391c4e34274b56d794ccae
|
data/Gemfile.lock
CHANGED
|
@@ -1,91 +1,103 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
chroma-db (0.
|
|
4
|
+
chroma-db (0.7.0)
|
|
5
5
|
dry-monads (~> 1.6)
|
|
6
6
|
ruby-next (>= 0.15.0)
|
|
7
7
|
|
|
8
8
|
GEM
|
|
9
9
|
remote: https://rubygems.org/
|
|
10
10
|
specs:
|
|
11
|
-
|
|
11
|
+
abbrev (0.1.2)
|
|
12
|
+
addressable (2.8.6)
|
|
12
13
|
public_suffix (>= 2.0.2, < 6.0)
|
|
13
14
|
ast (2.4.2)
|
|
14
|
-
|
|
15
|
-
|
|
15
|
+
bigdecimal (3.1.7)
|
|
16
|
+
concurrent-ruby (1.2.3)
|
|
17
|
+
crack (1.0.0)
|
|
18
|
+
bigdecimal
|
|
16
19
|
rexml
|
|
17
|
-
diff-lcs (1.5.
|
|
18
|
-
dry-core (1.0.
|
|
20
|
+
diff-lcs (1.5.1)
|
|
21
|
+
dry-core (1.0.1)
|
|
19
22
|
concurrent-ruby (~> 1.0)
|
|
20
23
|
zeitwerk (~> 2.6)
|
|
21
24
|
dry-monads (1.6.0)
|
|
22
25
|
concurrent-ruby (~> 1.0)
|
|
23
26
|
dry-core (~> 1.0, < 2)
|
|
24
27
|
zeitwerk (~> 2.6)
|
|
25
|
-
hashdiff (1.0
|
|
26
|
-
json (2.
|
|
28
|
+
hashdiff (1.1.0)
|
|
29
|
+
json (2.7.2)
|
|
27
30
|
language_server-protocol (3.17.0.3)
|
|
28
|
-
lint_roller (1.
|
|
29
|
-
minitest (5.
|
|
30
|
-
|
|
31
|
-
|
|
31
|
+
lint_roller (1.1.0)
|
|
32
|
+
minitest (5.22.3)
|
|
33
|
+
paco (0.2.3)
|
|
34
|
+
parallel (1.24.0)
|
|
35
|
+
parser (3.3.0.5)
|
|
32
36
|
ast (~> 2.4.1)
|
|
33
|
-
|
|
37
|
+
racc
|
|
38
|
+
psych (5.1.2)
|
|
34
39
|
stringio
|
|
35
|
-
public_suffix (5.0.
|
|
40
|
+
public_suffix (5.0.5)
|
|
41
|
+
racc (1.7.3)
|
|
36
42
|
rainbow (3.1.1)
|
|
37
|
-
rake (13.
|
|
38
|
-
rbs (3.
|
|
39
|
-
|
|
43
|
+
rake (13.2.1)
|
|
44
|
+
rbs (3.4.4)
|
|
45
|
+
abbrev
|
|
46
|
+
rdoc (6.6.3.1)
|
|
40
47
|
psych (>= 4.0.0)
|
|
41
|
-
regexp_parser (2.
|
|
42
|
-
|
|
43
|
-
|
|
48
|
+
regexp_parser (2.9.0)
|
|
49
|
+
require-hooks (0.2.2)
|
|
50
|
+
rexml (3.2.6)
|
|
51
|
+
rubocop (1.62.1)
|
|
44
52
|
json (~> 2.3)
|
|
53
|
+
language_server-protocol (>= 3.17.0)
|
|
45
54
|
parallel (~> 1.10)
|
|
46
|
-
parser (>= 3.
|
|
55
|
+
parser (>= 3.3.0.2)
|
|
47
56
|
rainbow (>= 2.2.2, < 4.0)
|
|
48
57
|
regexp_parser (>= 1.8, < 3.0)
|
|
49
58
|
rexml (>= 3.2.5, < 4.0)
|
|
50
|
-
rubocop-ast (>= 1.
|
|
59
|
+
rubocop-ast (>= 1.31.1, < 2.0)
|
|
51
60
|
ruby-progressbar (~> 1.7)
|
|
52
61
|
unicode-display_width (>= 2.4.0, < 3.0)
|
|
53
|
-
rubocop-ast (1.
|
|
54
|
-
parser (>= 3.
|
|
55
|
-
rubocop-performance (1.
|
|
56
|
-
rubocop (>= 1.
|
|
57
|
-
rubocop-ast (>=
|
|
58
|
-
ruby-next (0.
|
|
59
|
-
|
|
60
|
-
|
|
62
|
+
rubocop-ast (1.31.2)
|
|
63
|
+
parser (>= 3.3.0.4)
|
|
64
|
+
rubocop-performance (1.20.2)
|
|
65
|
+
rubocop (>= 1.48.1, < 2.0)
|
|
66
|
+
rubocop-ast (>= 1.30.0, < 2.0)
|
|
67
|
+
ruby-next (1.0.2)
|
|
68
|
+
paco (~> 0.2)
|
|
69
|
+
require-hooks (~> 0.2)
|
|
70
|
+
ruby-next-core (= 1.0.2)
|
|
71
|
+
ruby-next-parser (>= 3.2.2.0)
|
|
61
72
|
unparser (~> 0.6.0)
|
|
62
|
-
ruby-next-core (0.
|
|
63
|
-
ruby-next-parser (3.
|
|
73
|
+
ruby-next-core (1.0.2)
|
|
74
|
+
ruby-next-parser (3.2.2.0)
|
|
64
75
|
parser (>= 3.0.3.1)
|
|
65
76
|
ruby-progressbar (1.13.0)
|
|
66
77
|
sdoc (2.6.1)
|
|
67
78
|
rdoc (>= 5.0)
|
|
68
|
-
standard (1.
|
|
79
|
+
standard (1.35.1)
|
|
69
80
|
language_server-protocol (~> 3.17.0.2)
|
|
70
81
|
lint_roller (~> 1.0)
|
|
71
|
-
rubocop (~> 1.
|
|
82
|
+
rubocop (~> 1.62.0)
|
|
72
83
|
standard-custom (~> 1.0.0)
|
|
73
|
-
standard-performance (~> 1.
|
|
74
|
-
standard-custom (1.0.
|
|
84
|
+
standard-performance (~> 1.3)
|
|
85
|
+
standard-custom (1.0.2)
|
|
75
86
|
lint_roller (~> 1.0)
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
87
|
+
rubocop (~> 1.50)
|
|
88
|
+
standard-performance (1.3.1)
|
|
89
|
+
lint_roller (~> 1.1)
|
|
90
|
+
rubocop-performance (~> 1.20.2)
|
|
91
|
+
stringio (3.1.0)
|
|
92
|
+
unicode-display_width (2.5.0)
|
|
93
|
+
unparser (0.6.13)
|
|
82
94
|
diff-lcs (~> 1.3)
|
|
83
|
-
parser (>= 3.
|
|
84
|
-
webmock (3.
|
|
95
|
+
parser (>= 3.3.0)
|
|
96
|
+
webmock (3.23.0)
|
|
85
97
|
addressable (>= 2.8.0)
|
|
86
98
|
crack (>= 0.3.2)
|
|
87
99
|
hashdiff (>= 0.4.0, < 2.0.0)
|
|
88
|
-
zeitwerk (2.6.
|
|
100
|
+
zeitwerk (2.6.13)
|
|
89
101
|
|
|
90
102
|
PLATFORMS
|
|
91
103
|
arm64-darwin-22
|
data/README.md
CHANGED
|
@@ -41,7 +41,7 @@ For a complete example, please refer to the Jupyter Noterbook [Chroma gem](https
|
|
|
41
41
|
|
|
42
42
|
## Requirements
|
|
43
43
|
- Ruby 2.7.8 or newer
|
|
44
|
-
- Chroma Database 0.
|
|
44
|
+
- Chroma Database 0.4.24 or later running as a client/server model.
|
|
45
45
|
|
|
46
46
|
For Chroma database 0.3.22 or older, please use version 0.3.0 of this gem.
|
|
47
47
|
|
|
@@ -61,6 +61,7 @@ To use the Jupyter Noterbook [Chroma gem](https://github.com/mariochavez/chroma/
|
|
|
61
61
|
$ gem install iruby
|
|
62
62
|
$ iruby register --force
|
|
63
63
|
|
|
64
|
+
**NOTE: ** Notebook has an example on how to create embeddings using [Ollama](https://ollama.com) and [Nomic embed text](https://ollama.com/library/nomic-embed-text) with a simple Ruby HTTP client.
|
|
64
65
|
## Development
|
|
65
66
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
|
66
67
|
|
|
@@ -68,6 +69,8 @@ To install this gem onto your local machine, run `bundle exec rake install`.
|
|
|
68
69
|
|
|
69
70
|
To generate Rdoc documentation for the gem, run `bundle exec rake rdoc`.
|
|
70
71
|
|
|
72
|
+
## Rails integration
|
|
73
|
+
If you are looking for a solution to embed your ActiveRecord models into ChromaDB, look at [Cromable gem](https://github.com/AliOsm/chromable)
|
|
71
74
|
## Contributing
|
|
72
75
|
Bug reports and pull requests are welcome on GitHub at https://github.com/mariochavez/chroma. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [code of conduct](https://github.com/mariochavez/chroma/blob/main/CODE_OF_CONDUCT.md).
|
|
73
76
|
|
|
@@ -44,7 +44,7 @@ module Chroma
|
|
|
44
44
|
|
|
45
45
|
request = build_request(method, uri, params)
|
|
46
46
|
|
|
47
|
-
use_ssl =
|
|
47
|
+
use_ssl = uri.scheme == "https"
|
|
48
48
|
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: use_ssl) do |http|
|
|
49
49
|
Chroma::Util.log_debug("Sending a request", {method: method, uri: uri, params: params})
|
|
50
50
|
http.request(request)
|
|
@@ -125,6 +125,7 @@ module Chroma
|
|
|
125
125
|
|
|
126
126
|
request.content_type = "application/json"
|
|
127
127
|
request.body = params.to_json if params.size > 0
|
|
128
|
+
request.basic_auth(uri.user, uri.password) if !uri.user.nil?
|
|
128
129
|
|
|
129
130
|
request
|
|
130
131
|
end
|
|
@@ -180,7 +180,7 @@ module Chroma
|
|
|
180
180
|
# Embedding.new(id: "Array#fetch", embeddings: [9.8, 2.3, 2.9], metadata: {url: "https://..."}),
|
|
181
181
|
# Embedding.new(id: "Array#select", embeddings: [5.6, 3.1, 4.7], metadata: {url: "https://..."})
|
|
182
182
|
# ]
|
|
183
|
-
# collection.upsert()
|
|
183
|
+
# collection.upsert(embeddings)
|
|
184
184
|
#
|
|
185
185
|
# Returns true with success or raises a Chroma::Error on failure.
|
|
186
186
|
def upsert(embeddings = [])
|
|
@@ -237,22 +237,6 @@ module Chroma
|
|
|
237
237
|
end
|
|
238
238
|
end
|
|
239
239
|
|
|
240
|
-
# Creates an index for the collection.
|
|
241
|
-
#
|
|
242
|
-
# Examples:
|
|
243
|
-
#
|
|
244
|
-
# collection = Chroma::Resource::Collection.get("ruby-documentation")
|
|
245
|
-
# collection.create_index
|
|
246
|
-
#
|
|
247
|
-
# Returns true on success or raise a Chroma::Error on failure.
|
|
248
|
-
def create_index
|
|
249
|
-
result = self.class.execute_request(:post, "#{Chroma.api_url}/collections/#{id}/create_index")
|
|
250
|
-
|
|
251
|
-
return true if result.success?
|
|
252
|
-
|
|
253
|
-
self.class.raise_failure_error(result)
|
|
254
|
-
end
|
|
255
|
-
|
|
256
240
|
# Create a new collection on the database.
|
|
257
241
|
#
|
|
258
242
|
# name - The name of the collection. Name needs to be between 3-63 characters, starts and ends
|
|
@@ -29,17 +29,6 @@ module Chroma
|
|
|
29
29
|
raise_failure_error(result)
|
|
30
30
|
end
|
|
31
31
|
|
|
32
|
-
# Persist Chroma database data.
|
|
33
|
-
#
|
|
34
|
-
# Resturn true on success or raise a Chroma::Error on failure.
|
|
35
|
-
def self.persist
|
|
36
|
-
result = execute_request(:post, "#{Chroma.api_url}/persist")
|
|
37
|
-
|
|
38
|
-
return result.success.body if result.success?
|
|
39
|
-
|
|
40
|
-
raise_failure_error(result)
|
|
41
|
-
end
|
|
42
|
-
|
|
43
32
|
# Check the heartbeat of the Chroma database server.
|
|
44
33
|
#
|
|
45
34
|
# Return a Hash with a timestamp.
|
|
@@ -44,7 +44,7 @@ module Chroma
|
|
|
44
44
|
|
|
45
45
|
request = build_request(method, uri, params)
|
|
46
46
|
|
|
47
|
-
use_ssl =
|
|
47
|
+
use_ssl = uri.scheme == "https"
|
|
48
48
|
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: use_ssl) do |http|
|
|
49
49
|
Chroma::Util.log_debug("Sending a request", {method: method, uri: uri, params: params})
|
|
50
50
|
http.request(request)
|
|
@@ -117,6 +117,7 @@ module Chroma
|
|
|
117
117
|
|
|
118
118
|
request.content_type = "application/json"
|
|
119
119
|
request.body = params.to_json if params.size > 0
|
|
120
|
+
request.basic_auth(uri.user, uri.password) if !uri.user.nil?
|
|
120
121
|
|
|
121
122
|
request
|
|
122
123
|
end
|
|
@@ -180,7 +180,7 @@ module Chroma
|
|
|
180
180
|
# Embedding.new(id: "Array#fetch", embeddings: [9.8, 2.3, 2.9], metadata: {url: "https://..."}),
|
|
181
181
|
# Embedding.new(id: "Array#select", embeddings: [5.6, 3.1, 4.7], metadata: {url: "https://..."})
|
|
182
182
|
# ]
|
|
183
|
-
# collection.upsert()
|
|
183
|
+
# collection.upsert(embeddings)
|
|
184
184
|
#
|
|
185
185
|
# Returns true with success or raises a Chroma::Error on failure.
|
|
186
186
|
def upsert(embeddings = [])
|
|
@@ -237,22 +237,6 @@ module Chroma
|
|
|
237
237
|
end
|
|
238
238
|
end
|
|
239
239
|
|
|
240
|
-
# Creates an index for the collection.
|
|
241
|
-
#
|
|
242
|
-
# Examples:
|
|
243
|
-
#
|
|
244
|
-
# collection = Chroma::Resource::Collection.get("ruby-documentation")
|
|
245
|
-
# collection.create_index
|
|
246
|
-
#
|
|
247
|
-
# Returns true on success or raise a Chroma::Error on failure.
|
|
248
|
-
def create_index
|
|
249
|
-
result = self.class.execute_request(:post, "#{Chroma.api_url}/collections/#{id}/create_index")
|
|
250
|
-
|
|
251
|
-
return true if result.success?
|
|
252
|
-
|
|
253
|
-
self.class.raise_failure_error(result)
|
|
254
|
-
end
|
|
255
|
-
|
|
256
240
|
# Create a new collection on the database.
|
|
257
241
|
#
|
|
258
242
|
# name - The name of the collection. Name needs to be between 3-63 characters, starts and ends
|
|
@@ -44,7 +44,7 @@ module Chroma
|
|
|
44
44
|
|
|
45
45
|
request = build_request(method, uri, params)
|
|
46
46
|
|
|
47
|
-
use_ssl =
|
|
47
|
+
use_ssl = uri.scheme == "https"
|
|
48
48
|
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl:) do |http|
|
|
49
49
|
Chroma::Util.log_debug("Sending a request", {method:, uri:, params:})
|
|
50
50
|
http.request(request)
|
|
@@ -117,6 +117,7 @@ module Chroma
|
|
|
117
117
|
|
|
118
118
|
request.content_type = "application/json"
|
|
119
119
|
request.body = params.to_json if params.size > 0
|
|
120
|
+
request.basic_auth(uri.user, uri.password) if !uri.user.nil?
|
|
120
121
|
|
|
121
122
|
request
|
|
122
123
|
end
|
|
@@ -180,7 +180,7 @@ module Chroma
|
|
|
180
180
|
# Embedding.new(id: "Array#fetch", embeddings: [9.8, 2.3, 2.9], metadata: {url: "https://..."}),
|
|
181
181
|
# Embedding.new(id: "Array#select", embeddings: [5.6, 3.1, 4.7], metadata: {url: "https://..."})
|
|
182
182
|
# ]
|
|
183
|
-
# collection.upsert()
|
|
183
|
+
# collection.upsert(embeddings)
|
|
184
184
|
#
|
|
185
185
|
# Returns true with success or raises a Chroma::Error on failure.
|
|
186
186
|
def upsert(embeddings = [])
|
|
@@ -237,22 +237,6 @@ module Chroma
|
|
|
237
237
|
end
|
|
238
238
|
end
|
|
239
239
|
|
|
240
|
-
# Creates an index for the collection.
|
|
241
|
-
#
|
|
242
|
-
# Examples:
|
|
243
|
-
#
|
|
244
|
-
# collection = Chroma::Resource::Collection.get("ruby-documentation")
|
|
245
|
-
# collection.create_index
|
|
246
|
-
#
|
|
247
|
-
# Returns true on success or raise a Chroma::Error on failure.
|
|
248
|
-
def create_index
|
|
249
|
-
result = self.class.execute_request(:post, "#{Chroma.api_url}/collections/#{id}/create_index")
|
|
250
|
-
|
|
251
|
-
return true if result.success?
|
|
252
|
-
|
|
253
|
-
self.class.raise_failure_error(result)
|
|
254
|
-
end
|
|
255
|
-
|
|
256
240
|
# Create a new collection on the database.
|
|
257
241
|
#
|
|
258
242
|
# name - The name of the collection. Name needs to be between 3-63 characters, starts and ends
|
|
@@ -29,17 +29,6 @@ module Chroma
|
|
|
29
29
|
raise_failure_error(result)
|
|
30
30
|
end
|
|
31
31
|
|
|
32
|
-
# Persist Chroma database data.
|
|
33
|
-
#
|
|
34
|
-
# Resturn true on success or raise a Chroma::Error on failure.
|
|
35
|
-
def self.persist
|
|
36
|
-
result = execute_request(:post, "#{Chroma.api_url}/persist")
|
|
37
|
-
|
|
38
|
-
return result.success.body if result.success?
|
|
39
|
-
|
|
40
|
-
raise_failure_error(result)
|
|
41
|
-
end
|
|
42
|
-
|
|
43
32
|
# Check the heartbeat of the Chroma database server.
|
|
44
33
|
#
|
|
45
34
|
# Return a Hash with a timestamp.
|
data/lib/chroma/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: chroma-db
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.7.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Mario Alberto Chávez
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2024-04-13 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: dry-monads
|
|
@@ -107,7 +107,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
107
107
|
- !ruby/object:Gem::Version
|
|
108
108
|
version: '0'
|
|
109
109
|
requirements: []
|
|
110
|
-
rubygems_version: 3.
|
|
110
|
+
rubygems_version: 3.5.9
|
|
111
111
|
signing_key:
|
|
112
112
|
specification_version: 4
|
|
113
113
|
summary: Ruby client for Chroma DB.
|