vector_amp 0.2.0 → 0.3.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 +16 -0
- data/lib/vector_amp/dataset.rb +10 -1
- data/lib/vector_amp/datasets.rb +36 -2
- data/lib/vector_amp/metadata_schema.rb +20 -0
- data/lib/vector_amp/version.rb +1 -1
- data/lib/vector_amp.rb +1 -0
- metadata +3 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 7147209a61689dee14e2d37581f33cad58fb5291543edb086fcafdf841e71c0a
|
|
4
|
+
data.tar.gz: c399a9373b4820d6c141362b29e2b81bc34de71a02ecb0d69c7780febdbd3674
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 6b2f983acc42db9c33801bcbe726537975af6d6ec9eab12a542a860ac5836fa417e07bb35ddfd6e4f7a55f0b6311c4ee5793d192427e5182c5fff11aae9849c4
|
|
7
|
+
data.tar.gz: 2d720c1922917177c98cf7ddab94b9f2f20ef0654e31f673d47f4283459cca5c9808851875bf2a28a40ff9f6d63a7634bd852b0a74539453c6e7dff9d4dd58b1
|
data/README.md
CHANGED
|
@@ -153,6 +153,20 @@ client.org_secrets.put_openai_api_key(
|
|
|
153
153
|
)
|
|
154
154
|
```
|
|
155
155
|
|
|
156
|
+
Declare typed metadata at creation, then merge fields or replace the complete schema:
|
|
157
|
+
|
|
158
|
+
```ruby
|
|
159
|
+
schema = [
|
|
160
|
+
VectorAmp::MetadataSchema.field(:category, VectorAmp::MetadataSchema::STRING),
|
|
161
|
+
VectorAmp::MetadataSchema.field(:price, VectorAmp::MetadataSchema::F32)
|
|
162
|
+
]
|
|
163
|
+
dataset = client.datasets.create(name: "products", metadata_schema: schema)
|
|
164
|
+
dataset.patch_metadata_schema([VectorAmp::MetadataSchema.field(:inventory, VectorAmp::MetadataSchema::U32)])
|
|
165
|
+
dataset.replace_metadata_schema(schema) # [] removes all declared fields
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
Canonical types are `STRING`, `U32`, `I32`, `I64`, `F32`, and `F64`.
|
|
169
|
+
|
|
156
170
|
### Source documents
|
|
157
171
|
|
|
158
172
|
Dataset document listing is cursor-based: pass `next_cursor` into the next request and do not assume offsets or totals. Downloads return retained original bytes and follow API/storage redirects.
|
|
@@ -360,6 +374,8 @@ equivalent `datasetObj.<m>(...)` on a returned `VectorAmp::Dataset`.
|
|
|
360
374
|
| Method | Required | Optional (defaults) |
|
|
361
375
|
|---|---|---|
|
|
362
376
|
| `create(name:)` | `name` | `dim` (inferred), `embedding` (vectoramp/VectorAmp-Embedding-4B), `metric` ("cosine"), `hybrid`, `filters`, `metadata_schema`, `tuning`, `metadata` |
|
|
377
|
+
| `patch_metadata_schema(id, schema)` | `id`, `schema` | — |
|
|
378
|
+
| `replace_metadata_schema(id, schema)` | `id`, `schema` | — |
|
|
363
379
|
| `list` | — | `limit` (50), `offset` (0) |
|
|
364
380
|
| `get(id)` | `id` | — |
|
|
365
381
|
| `delete(id)` | `id` | — |
|
data/lib/vector_amp/dataset.rb
CHANGED
|
@@ -95,13 +95,22 @@ module VectorAmp
|
|
|
95
95
|
service.delete(id)
|
|
96
96
|
end
|
|
97
97
|
|
|
98
|
+
# Add or update typed metadata fields, retaining omitted fields.
|
|
99
|
+
def patch_metadata_schema(schema)
|
|
100
|
+
service.patch_metadata_schema(id, schema)
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
# Replace the complete typed metadata schema.
|
|
104
|
+
def replace_metadata_schema(schema)
|
|
105
|
+
service.replace_metadata_schema(id, schema)
|
|
106
|
+
end
|
|
107
|
+
|
|
98
108
|
# Fetch stats for this dataset.
|
|
99
109
|
# @return [Hash] dataset statistics.
|
|
100
110
|
def stats
|
|
101
111
|
service.stats(id)
|
|
102
112
|
end
|
|
103
113
|
|
|
104
|
-
|
|
105
114
|
# List retained source documents for this dataset using cursor pagination.
|
|
106
115
|
# @param limit [Integer, nil] maximum documents to return.
|
|
107
116
|
# @param cursor [String, nil] cursor from a previous response's `next_cursor`.
|
data/lib/vector_amp/datasets.rb
CHANGED
|
@@ -59,7 +59,7 @@ module VectorAmp
|
|
|
59
59
|
# @param metric [String] distance metric; defaults to `cosine`.
|
|
60
60
|
# @param hybrid [Boolean, nil] enable hybrid (dense + sparse) search; sends `hybrid: true`.
|
|
61
61
|
# @param filters [Hash, nil] optional filter schema/config.
|
|
62
|
-
# @param metadata_schema [Hash, nil] optional metadata schema.
|
|
62
|
+
# @param metadata_schema [Array<Hash>, Hash, nil] optional metadata schema.
|
|
63
63
|
# @param tuning [Hash, nil] optional SABLE tuning parameters.
|
|
64
64
|
# @param metadata [Hash, nil] optional dataset metadata.
|
|
65
65
|
# @return [Dataset] created dataset.
|
|
@@ -85,7 +85,7 @@ module VectorAmp
|
|
|
85
85
|
index_type: "sable",
|
|
86
86
|
hybrid: hybrid,
|
|
87
87
|
filters: filters,
|
|
88
|
-
|
|
88
|
+
schema: normalize_metadata_schema(metadata_schema),
|
|
89
89
|
tuning: tuning,
|
|
90
90
|
metadata: metadata
|
|
91
91
|
)
|
|
@@ -115,6 +115,21 @@ module VectorAmp
|
|
|
115
115
|
create(name: name, embedding: Embedding.openai(size, secret_ref: secret_ref), **options)
|
|
116
116
|
end
|
|
117
117
|
|
|
118
|
+
# Add or update typed metadata fields, retaining omitted fields.
|
|
119
|
+
# @param dataset_id [String] dataset id.
|
|
120
|
+
# @param schema [Array<Hash>] fields with `name` and canonical `type`.
|
|
121
|
+
# @return [Dataset] updated dataset.
|
|
122
|
+
def patch_metadata_schema(dataset_id, schema)
|
|
123
|
+
update_metadata_schema(dataset_id, schema, "merge")
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
# Replace the complete typed metadata schema.
|
|
127
|
+
# @param dataset_id [String] dataset id.
|
|
128
|
+
# @param schema [Array<Hash>] complete field list; may be empty.
|
|
129
|
+
# @return [Dataset] updated dataset.
|
|
130
|
+
def replace_metadata_schema(dataset_id, schema)
|
|
131
|
+
update_metadata_schema(dataset_id, schema, "replace")
|
|
132
|
+
end
|
|
118
133
|
|
|
119
134
|
# List retained source documents for a dataset using cursor pagination.
|
|
120
135
|
# @param dataset_id [String] dataset id.
|
|
@@ -268,6 +283,25 @@ module VectorAmp
|
|
|
268
283
|
end
|
|
269
284
|
end
|
|
270
285
|
|
|
286
|
+
def normalize_metadata_schema(schema)
|
|
287
|
+
return schema unless schema.is_a?(Hash)
|
|
288
|
+
|
|
289
|
+
schema.map do |name, config|
|
|
290
|
+
raise ArgumentError, "metadata schema field #{name.inspect} must be a Hash" unless config.is_a?(Hash)
|
|
291
|
+
|
|
292
|
+
{ name: name.to_s }.merge(config)
|
|
293
|
+
end
|
|
294
|
+
end
|
|
295
|
+
|
|
296
|
+
def update_metadata_schema(dataset_id, schema, mode)
|
|
297
|
+
response = @transport.request(
|
|
298
|
+
:patch,
|
|
299
|
+
"/datasets/#{dataset_id}/schema",
|
|
300
|
+
body: { schema: schema, mode: mode }
|
|
301
|
+
)
|
|
302
|
+
wrap_dataset(response)
|
|
303
|
+
end
|
|
304
|
+
|
|
271
305
|
def wrap_dataset(data)
|
|
272
306
|
Dataset.new(data, service: self, client: @client)
|
|
273
307
|
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module VectorAmp
|
|
4
|
+
# Helpers and canonical scalar types for dataset metadata schemas.
|
|
5
|
+
module MetadataSchema
|
|
6
|
+
STRING = "string"
|
|
7
|
+
U32 = "u32"
|
|
8
|
+
I32 = "i32"
|
|
9
|
+
I64 = "i64"
|
|
10
|
+
F32 = "f32"
|
|
11
|
+
F64 = "f64"
|
|
12
|
+
TYPES = [STRING, U32, I32, I64, F32, F64].freeze
|
|
13
|
+
|
|
14
|
+
def self.field(name, type)
|
|
15
|
+
raise ArgumentError, "unsupported metadata schema type: #{type.inspect}" unless TYPES.include?(type)
|
|
16
|
+
|
|
17
|
+
{ name: name.to_s, type: type }
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
data/lib/vector_amp/version.rb
CHANGED
data/lib/vector_amp.rb
CHANGED
|
@@ -5,6 +5,7 @@ require_relative "vector_amp/client"
|
|
|
5
5
|
require_relative "vector_amp/embedding"
|
|
6
6
|
require_relative "vector_amp/error"
|
|
7
7
|
require_relative "vector_amp/org_secrets"
|
|
8
|
+
require_relative "vector_amp/metadata_schema"
|
|
8
9
|
require_relative "vector_amp/source"
|
|
9
10
|
|
|
10
11
|
module VectorAmp
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: vector_amp
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.3.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- VectorAmp
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-07-
|
|
11
|
+
date: 2026-07-20 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: minitest
|
|
@@ -114,6 +114,7 @@ files:
|
|
|
114
114
|
- lib/vector_amp/error.rb
|
|
115
115
|
- lib/vector_amp/ingestion.rb
|
|
116
116
|
- lib/vector_amp/intelligence.rb
|
|
117
|
+
- lib/vector_amp/metadata_schema.rb
|
|
117
118
|
- lib/vector_amp/org_secrets.rb
|
|
118
119
|
- lib/vector_amp/schedules.rb
|
|
119
120
|
- lib/vector_amp/source.rb
|