zeusdb-vector-database 0.0.2__tar.gz → 0.0.4__tar.gz

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.

Potentially problematic release.


This version of zeusdb-vector-database might be problematic. Click here for more details.

@@ -6,6 +6,9 @@ This product includes software developed by:
6
6
  - The Python Software Foundation (https://www.python.org/psf/)
7
7
  - The Rust Project Developers (https://www.rust-lang.org/)
8
8
  - The PyO3 Project (https://pyo3.rs/)
9
+ - Jean-pierreBoth (https://crates.io/crates/hnsw_rs/)
10
+
11
+ Third-party components may be licensed under their respective terms. See LICENSES/ for full license texts.
9
12
 
10
13
  Licensed under the Apache License, Version 2.0 (the "License");
11
14
  you may not use this file except in compliance with the License.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: zeusdb-vector-database
3
- Version: 0.0.2
3
+ Version: 0.0.4
4
4
  Classifier: Programming Language :: Rust
5
5
  Classifier: Programming Language :: Python :: Implementation :: CPython
6
6
  Requires-Dist: numpy>=2.2.6,<3.0.0
@@ -17,14 +17,17 @@ Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
17
17
  Project-URL: Repository, https://github.com/zeusdb/zeusdb-vector-database
18
18
  Project-URL: Bug Tracker, https://github.com/zeusdb/zeusdb-vector-database/issues
19
19
 
20
- # ZeusDB Vector Database
20
+ <p align="center" width="100%">
21
+ <img src="https://github.com/user-attachments/assets/ad21baec-6f4c-445c-b423-88a081ca2b97" alt="zeusdb-vector-database-logo-cropped" />
22
+ <h1 align="center">ZeusDB Vector Database</h1>
23
+ </p>
21
24
 
22
25
  <!-- <h2 align="center">Fast, Rust-powered vector database for similarity search</h2> -->
23
26
  <!--**Fast, Rust-powered vector database for similarity search** -->
24
27
 
25
28
  <!-- badges: start -->
26
29
 
27
- <div align="left">
30
+ <div align="center">
28
31
  <table>
29
32
  <tr>
30
33
  <td><strong>Meta</strong></td>
@@ -57,6 +60,8 @@ ZeusDB leverages the HNSW (Hierarchical Navigable Small World) algorithm for spe
57
60
 
58
61
  🔥 High-performance Rust backend
59
62
 
63
+ 📥 Supports multiple input formats using a single, easy-to-use Python method
64
+
60
65
  🗂️ Metadata-aware filtering at query time
61
66
 
62
67
  🐍 Simple and intuitive Python API
@@ -70,13 +75,17 @@ ZeusDB leverages the HNSW (Hierarchical Navigable Small World) algorithm for spe
70
75
 
71
76
  | Metric | Description |
72
77
  |--------|--------------------------------------|
73
- | cosine | Cosine distance (1 - Cosine Similiarity) |
78
+ | cosine | Cosine Distance (1 - Cosine Similiarity) |
74
79
  <!--
75
80
  | l2 | Euclidean distance |
76
81
  | dot | Dot product |
77
82
 
78
83
  -->
79
84
 
85
+ Scores vs Distances:
86
+ - Similarity Scores (higher = more similar)
87
+ - Distances (lower = more similar)
88
+
80
89
  <br/>
81
90
 
82
91
  ## 📦 Installation
@@ -123,31 +132,104 @@ vdb = VectorDatabase()
123
132
  # Initialize and set up the database resources
124
133
  index = vdb.create_index_hnsw(dim = 8, space = "cosine", M = 16, ef_construction = 200, expected_size=5)
125
134
 
126
- # Upload vector records
127
- vectors = {
128
- "doc_001": ([0.1, 0.2, 0.3, 0.1, 0.4, 0.2, 0.6, 0.7], {"author": "Alice"}),
129
- "doc_002": ([0.9, 0.1, 0.4, 0.2, 0.8, 0.5, 0.3, 0.9], {"author": "Bob"}),
130
- "doc_003": ([0.11, 0.21, 0.31, 0.15, 0.41, 0.22, 0.61, 0.72], {"author": "Alice"}),
131
- "doc_004": ([0.85, 0.15, 0.42, 0.27, 0.83, 0.52, 0.33, 0.95], {"author": "Bob"}),
132
- "doc_005": ([0.12, 0.22, 0.33, 0.13, 0.45, 0.23, 0.65, 0.71], {"author": "Alice"}),
133
- }
135
+ # Upload vector records using the unified `add()` method
136
+ records = [
137
+ {"id": "doc_001", "values": [0.1, 0.2, 0.3, 0.1, 0.4, 0.2, 0.6, 0.7], "metadata": {"author": "Alice"}},
138
+ {"id": "doc_002", "values": [0.9, 0.1, 0.4, 0.2, 0.8, 0.5, 0.3, 0.9], "metadata": {"author": "Bob"}},
139
+ {"id": "doc_003", "values": [0.11, 0.21, 0.31, 0.15, 0.41, 0.22, 0.61, 0.72], "metadata": {"author": "Alice"}},
140
+ {"id": "doc_004", "values": [0.85, 0.15, 0.42, 0.27, 0.83, 0.52, 0.33, 0.95], "metadata": {"author": "Bob"}},
141
+ {"id": "doc_005", "values": [0.12, 0.22, 0.33, 0.13, 0.45, 0.23, 0.65, 0.71], "metadata": {"author": "Alice"}},
142
+ ]
134
143
 
135
- for doc_id, (vec, meta) in vectors.items():
136
- index.add_point(doc_id, vec, metadata=meta)
144
+ result = index.add(records)
137
145
 
138
146
  # Perform a similarity search and print the top 2 results
139
147
  # Query Vector
140
148
  query_vec = [0.1, 0.2, 0.3, 0.1, 0.4, 0.2, 0.6, 0.7]
141
149
 
142
150
  # Query with no filter (all documents)
143
- print("\n--- Querying without filter (all documents) ---")
144
151
  results = index.query(vector=query_vec, filter=None, top_k=2)
145
- for doc_id, score in results:
146
- print(f"{doc_id} (score={score:.4f})")
152
+ print("\n--- Raw Results Format ---")
153
+ print(results)
154
+
155
+ print("\n--- Formatted Results ---")
156
+ for i, res in enumerate(results, 1):
157
+ print(f"{i}. ID: {res['id']}, Score: {res['score']:.4f}, Metadata: {res['metadata']}")
158
+ ```
159
+
160
+ *Results Output:*
161
+ ```
162
+ --- Raw Results Format ---
163
+ [{'id': 'doc_001', 'score': 0.0, 'metadata': {'author': 'Alice'}}, {'id': 'doc_003', 'score': 0.0009883458260446787, 'metadata': {'author': 'Alice'}}]
164
+
165
+ --- Formatted Results ---
166
+ 1. ID: doc_001, Score: 0.0000, Metadata: {'author': 'Alice'}
167
+ 2. ID: doc_003, Score: 0.0010, Metadata: {'author': 'Alice'}
147
168
  ```
148
169
 
149
170
  <br/>
150
171
 
172
+ ### ➕ Adding Vectors – Multiple Formats Supported
173
+
174
+ ZeusDB Vector Database supports multiple intuitive ways to insert data using index.add(...). All formats accept optional metadata per record.
175
+
176
+ #### ✅ Format 1 – Single Object
177
+
178
+ ```python
179
+ index.add({
180
+ "id": "doc1",
181
+ "values": [0.1, 0.2],
182
+ "metadata": {"text": "hello"}
183
+ })
184
+
185
+ print(result.summary()) # ✅ 1 inserted, ❌ 0 errors
186
+ print(result.is_success()) # True
187
+ ```
188
+
189
+ #### ✅ Format 2 – List of Objects
190
+
191
+ ```python
192
+ index.add([
193
+ {"id": "doc1", "values": [0.1, 0.2], "metadata": {"text": "hello"}},
194
+ {"id": "doc2", "values": [0.3, 0.4], "metadata": {"text": "world"}}
195
+ ])
196
+
197
+ print(result.summary()) # ✅ 2 inserted, ❌ 0 errors
198
+ print(result.vector_shape) # (2, 2)
199
+ print(result.errors) # []
200
+ ```
201
+
202
+ #### ✅ Format 3 – Separate Arrays
203
+
204
+ ```python
205
+ index.add({
206
+ "ids": ["doc1", "doc2"],
207
+ "embeddings": [[0.1, 0.2], [0.3, 0.4]],
208
+ "metadatas": [{"text": "hello"}, {"text": "world"}]
209
+ })
210
+ print(result) # BatchResult(inserted=2, errors=0, shape=(2, 2))
211
+ ```
212
+
213
+ #### ✅ Format 4 – Using NumPy Arrays
214
+
215
+ ZeusDB also supports NumPy arrays as input for seamless integration with scientific and ML workflows.
216
+
217
+ ```python
218
+ import numpy as np
219
+
220
+ data = [
221
+ {"id": "doc2", "values": np.array([0.1, 0.2, 0.3, 0.4], dtype=np.float32), "metadata": {"type": "blog"}},
222
+ {"id": "doc3", "values": np.array([0.5, 0.6, 0.7, 0.8], dtype=np.float32), "metadata": {"type": "news"}},
223
+ ]
224
+
225
+ result = index.add(data)
226
+
227
+ print(result.summary()) # ✅ 2 inserted, ❌ 0 errors
228
+ ```
229
+
230
+ Each format is automatically parsed and validated internally, including support for NumPy arrays (np.ndarray). Errors and successes are returned in a structured BatchResult object for easy debugging and logging.
231
+
232
+ <br/>
151
233
 
152
234
  ### 🧰 Additional functionality
153
235
 
@@ -215,14 +297,15 @@ This pre-filters on the given metadata prior to conducting the similarity search
215
297
  ```python
216
298
  print("\n--- Querying with filter: author = 'Alice' ---")
217
299
  results = index.query(vector=query_vec, filter={"author": "Alice"}, top_k=5)
218
- for doc_id, score in results:
219
- print(f"{doc_id} (score={score:.4f})")
300
+ print(results)
220
301
  ```
221
302
  *Output*
222
303
  ```
223
- doc_001 (score=0.0000)
224
- doc_003 (score=0.0010)
225
- doc_005 (score=0.0011)
304
+ [
305
+ {'id': 'doc_001', 'score': 0.0, 'metadata': {'author': 'Alice'}},
306
+ {'id': 'doc_003', 'score': 0.0009883458260446787, 'metadata': {'author': 'Alice'}},
307
+ {'id': 'doc_005', 'score': 0.0011433829786255956, 'metadata': {'author': 'Alice'}}
308
+ ]
226
309
  ```
227
310
 
228
311
 
@@ -1,11 +1,14 @@
1
- # ZeusDB Vector Database
1
+ <p align="center" width="100%">
2
+ <img src="https://github.com/user-attachments/assets/ad21baec-6f4c-445c-b423-88a081ca2b97" alt="zeusdb-vector-database-logo-cropped" />
3
+ <h1 align="center">ZeusDB Vector Database</h1>
4
+ </p>
2
5
 
3
6
  <!-- <h2 align="center">Fast, Rust-powered vector database for similarity search</h2> -->
4
7
  <!--**Fast, Rust-powered vector database for similarity search** -->
5
8
 
6
9
  <!-- badges: start -->
7
10
 
8
- <div align="left">
11
+ <div align="center">
9
12
  <table>
10
13
  <tr>
11
14
  <td><strong>Meta</strong></td>
@@ -38,6 +41,8 @@ ZeusDB leverages the HNSW (Hierarchical Navigable Small World) algorithm for spe
38
41
 
39
42
  🔥 High-performance Rust backend
40
43
 
44
+ 📥 Supports multiple input formats using a single, easy-to-use Python method
45
+
41
46
  🗂️ Metadata-aware filtering at query time
42
47
 
43
48
  🐍 Simple and intuitive Python API
@@ -51,13 +56,17 @@ ZeusDB leverages the HNSW (Hierarchical Navigable Small World) algorithm for spe
51
56
 
52
57
  | Metric | Description |
53
58
  |--------|--------------------------------------|
54
- | cosine | Cosine distance (1 - Cosine Similiarity) |
59
+ | cosine | Cosine Distance (1 - Cosine Similiarity) |
55
60
  <!--
56
61
  | l2 | Euclidean distance |
57
62
  | dot | Dot product |
58
63
 
59
64
  -->
60
65
 
66
+ Scores vs Distances:
67
+ - Similarity Scores (higher = more similar)
68
+ - Distances (lower = more similar)
69
+
61
70
  <br/>
62
71
 
63
72
  ## 📦 Installation
@@ -104,31 +113,104 @@ vdb = VectorDatabase()
104
113
  # Initialize and set up the database resources
105
114
  index = vdb.create_index_hnsw(dim = 8, space = "cosine", M = 16, ef_construction = 200, expected_size=5)
106
115
 
107
- # Upload vector records
108
- vectors = {
109
- "doc_001": ([0.1, 0.2, 0.3, 0.1, 0.4, 0.2, 0.6, 0.7], {"author": "Alice"}),
110
- "doc_002": ([0.9, 0.1, 0.4, 0.2, 0.8, 0.5, 0.3, 0.9], {"author": "Bob"}),
111
- "doc_003": ([0.11, 0.21, 0.31, 0.15, 0.41, 0.22, 0.61, 0.72], {"author": "Alice"}),
112
- "doc_004": ([0.85, 0.15, 0.42, 0.27, 0.83, 0.52, 0.33, 0.95], {"author": "Bob"}),
113
- "doc_005": ([0.12, 0.22, 0.33, 0.13, 0.45, 0.23, 0.65, 0.71], {"author": "Alice"}),
114
- }
116
+ # Upload vector records using the unified `add()` method
117
+ records = [
118
+ {"id": "doc_001", "values": [0.1, 0.2, 0.3, 0.1, 0.4, 0.2, 0.6, 0.7], "metadata": {"author": "Alice"}},
119
+ {"id": "doc_002", "values": [0.9, 0.1, 0.4, 0.2, 0.8, 0.5, 0.3, 0.9], "metadata": {"author": "Bob"}},
120
+ {"id": "doc_003", "values": [0.11, 0.21, 0.31, 0.15, 0.41, 0.22, 0.61, 0.72], "metadata": {"author": "Alice"}},
121
+ {"id": "doc_004", "values": [0.85, 0.15, 0.42, 0.27, 0.83, 0.52, 0.33, 0.95], "metadata": {"author": "Bob"}},
122
+ {"id": "doc_005", "values": [0.12, 0.22, 0.33, 0.13, 0.45, 0.23, 0.65, 0.71], "metadata": {"author": "Alice"}},
123
+ ]
115
124
 
116
- for doc_id, (vec, meta) in vectors.items():
117
- index.add_point(doc_id, vec, metadata=meta)
125
+ result = index.add(records)
118
126
 
119
127
  # Perform a similarity search and print the top 2 results
120
128
  # Query Vector
121
129
  query_vec = [0.1, 0.2, 0.3, 0.1, 0.4, 0.2, 0.6, 0.7]
122
130
 
123
131
  # Query with no filter (all documents)
124
- print("\n--- Querying without filter (all documents) ---")
125
132
  results = index.query(vector=query_vec, filter=None, top_k=2)
126
- for doc_id, score in results:
127
- print(f"{doc_id} (score={score:.4f})")
133
+ print("\n--- Raw Results Format ---")
134
+ print(results)
135
+
136
+ print("\n--- Formatted Results ---")
137
+ for i, res in enumerate(results, 1):
138
+ print(f"{i}. ID: {res['id']}, Score: {res['score']:.4f}, Metadata: {res['metadata']}")
139
+ ```
140
+
141
+ *Results Output:*
142
+ ```
143
+ --- Raw Results Format ---
144
+ [{'id': 'doc_001', 'score': 0.0, 'metadata': {'author': 'Alice'}}, {'id': 'doc_003', 'score': 0.0009883458260446787, 'metadata': {'author': 'Alice'}}]
145
+
146
+ --- Formatted Results ---
147
+ 1. ID: doc_001, Score: 0.0000, Metadata: {'author': 'Alice'}
148
+ 2. ID: doc_003, Score: 0.0010, Metadata: {'author': 'Alice'}
128
149
  ```
129
150
 
130
151
  <br/>
131
152
 
153
+ ### ➕ Adding Vectors – Multiple Formats Supported
154
+
155
+ ZeusDB Vector Database supports multiple intuitive ways to insert data using index.add(...). All formats accept optional metadata per record.
156
+
157
+ #### ✅ Format 1 – Single Object
158
+
159
+ ```python
160
+ index.add({
161
+ "id": "doc1",
162
+ "values": [0.1, 0.2],
163
+ "metadata": {"text": "hello"}
164
+ })
165
+
166
+ print(result.summary()) # ✅ 1 inserted, ❌ 0 errors
167
+ print(result.is_success()) # True
168
+ ```
169
+
170
+ #### ✅ Format 2 – List of Objects
171
+
172
+ ```python
173
+ index.add([
174
+ {"id": "doc1", "values": [0.1, 0.2], "metadata": {"text": "hello"}},
175
+ {"id": "doc2", "values": [0.3, 0.4], "metadata": {"text": "world"}}
176
+ ])
177
+
178
+ print(result.summary()) # ✅ 2 inserted, ❌ 0 errors
179
+ print(result.vector_shape) # (2, 2)
180
+ print(result.errors) # []
181
+ ```
182
+
183
+ #### ✅ Format 3 – Separate Arrays
184
+
185
+ ```python
186
+ index.add({
187
+ "ids": ["doc1", "doc2"],
188
+ "embeddings": [[0.1, 0.2], [0.3, 0.4]],
189
+ "metadatas": [{"text": "hello"}, {"text": "world"}]
190
+ })
191
+ print(result) # BatchResult(inserted=2, errors=0, shape=(2, 2))
192
+ ```
193
+
194
+ #### ✅ Format 4 – Using NumPy Arrays
195
+
196
+ ZeusDB also supports NumPy arrays as input for seamless integration with scientific and ML workflows.
197
+
198
+ ```python
199
+ import numpy as np
200
+
201
+ data = [
202
+ {"id": "doc2", "values": np.array([0.1, 0.2, 0.3, 0.4], dtype=np.float32), "metadata": {"type": "blog"}},
203
+ {"id": "doc3", "values": np.array([0.5, 0.6, 0.7, 0.8], dtype=np.float32), "metadata": {"type": "news"}},
204
+ ]
205
+
206
+ result = index.add(data)
207
+
208
+ print(result.summary()) # ✅ 2 inserted, ❌ 0 errors
209
+ ```
210
+
211
+ Each format is automatically parsed and validated internally, including support for NumPy arrays (np.ndarray). Errors and successes are returned in a structured BatchResult object for easy debugging and logging.
212
+
213
+ <br/>
132
214
 
133
215
  ### 🧰 Additional functionality
134
216
 
@@ -196,14 +278,15 @@ This pre-filters on the given metadata prior to conducting the similarity search
196
278
  ```python
197
279
  print("\n--- Querying with filter: author = 'Alice' ---")
198
280
  results = index.query(vector=query_vec, filter={"author": "Alice"}, top_k=5)
199
- for doc_id, score in results:
200
- print(f"{doc_id} (score={score:.4f})")
281
+ print(results)
201
282
  ```
202
283
  *Output*
203
284
  ```
204
- doc_001 (score=0.0000)
205
- doc_003 (score=0.0010)
206
- doc_005 (score=0.0011)
285
+ [
286
+ {'id': 'doc_001', 'score': 0.0, 'metadata': {'author': 'Alice'}},
287
+ {'id': 'doc_003', 'score': 0.0009883458260446787, 'metadata': {'author': 'Alice'}},
288
+ {'id': 'doc_005', 'score': 0.0011433829786255956, 'metadata': {'author': 'Alice'}}
289
+ ]
207
290
  ```
208
291
 
209
292
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "zeusdb-vector-database"
3
- version = "0.0.2"
3
+ version = "0.0.4"
4
4
  description = "Blazing-fast vector DB with real-time similarity search and metadata filtering."
5
5
  readme = "README.md"
6
6
  authors = [
@@ -1,7 +1,7 @@
1
1
  """
2
2
  ZeusDB Vector Database Module
3
3
  """
4
- __version__ = "0.0.2"
4
+ __version__ = "0.0.4"
5
5
 
6
6
  from .vector_database import VectorDatabase # imports the VectorDatabase class from the vector_database.py file
7
7
 
@@ -382,6 +382,16 @@ dependencies = [
382
382
  "libc",
383
383
  ]
384
384
 
385
+ [[package]]
386
+ name = "matrixmultiply"
387
+ version = "0.3.10"
388
+ source = "registry+https://github.com/rust-lang/crates.io-index"
389
+ checksum = "a06de3016e9fae57a36fd14dba131fccf49f74b40b7fbdb472f96e361ec71a08"
390
+ dependencies = [
391
+ "autocfg",
392
+ "rawpointer",
393
+ ]
394
+
385
395
  [[package]]
386
396
  name = "memchr"
387
397
  version = "2.7.5"
@@ -423,6 +433,21 @@ dependencies = [
423
433
  "windows",
424
434
  ]
425
435
 
436
+ [[package]]
437
+ name = "ndarray"
438
+ version = "0.16.1"
439
+ source = "registry+https://github.com/rust-lang/crates.io-index"
440
+ checksum = "882ed72dce9365842bf196bdeedf5055305f11fc8c03dee7bb0194a6cad34841"
441
+ dependencies = [
442
+ "matrixmultiply",
443
+ "num-complex",
444
+ "num-integer",
445
+ "num-traits",
446
+ "portable-atomic",
447
+ "portable-atomic-util",
448
+ "rawpointer",
449
+ ]
450
+
426
451
  [[package]]
427
452
  name = "nix"
428
453
  version = "0.26.4"
@@ -436,6 +461,24 @@ dependencies = [
436
461
  "pin-utils",
437
462
  ]
438
463
 
464
+ [[package]]
465
+ name = "num-complex"
466
+ version = "0.4.6"
467
+ source = "registry+https://github.com/rust-lang/crates.io-index"
468
+ checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495"
469
+ dependencies = [
470
+ "num-traits",
471
+ ]
472
+
473
+ [[package]]
474
+ name = "num-integer"
475
+ version = "0.1.46"
476
+ source = "registry+https://github.com/rust-lang/crates.io-index"
477
+ checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f"
478
+ dependencies = [
479
+ "num-traits",
480
+ ]
481
+
439
482
  [[package]]
440
483
  name = "num-traits"
441
484
  version = "0.2.19"
@@ -455,6 +498,22 @@ dependencies = [
455
498
  "libc",
456
499
  ]
457
500
 
501
+ [[package]]
502
+ name = "numpy"
503
+ version = "0.25.0"
504
+ source = "registry+https://github.com/rust-lang/crates.io-index"
505
+ checksum = "29f1dee9aa8d3f6f8e8b9af3803006101bb3653866ef056d530d53ae68587191"
506
+ dependencies = [
507
+ "libc",
508
+ "ndarray",
509
+ "num-complex",
510
+ "num-integer",
511
+ "num-traits",
512
+ "pyo3",
513
+ "pyo3-build-config",
514
+ "rustc-hash",
515
+ ]
516
+
458
517
  [[package]]
459
518
  name = "once_cell"
460
519
  version = "1.21.3"
@@ -635,6 +694,12 @@ dependencies = [
635
694
  "getrandom",
636
695
  ]
637
696
 
697
+ [[package]]
698
+ name = "rawpointer"
699
+ version = "0.2.1"
700
+ source = "registry+https://github.com/rust-lang/crates.io-index"
701
+ checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3"
702
+
638
703
  [[package]]
639
704
  name = "rayon"
640
705
  version = "1.10.0"
@@ -693,6 +758,12 @@ version = "0.8.5"
693
758
  source = "registry+https://github.com/rust-lang/crates.io-index"
694
759
  checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
695
760
 
761
+ [[package]]
762
+ name = "rustc-hash"
763
+ version = "2.1.1"
764
+ source = "registry+https://github.com/rust-lang/crates.io-index"
765
+ checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d"
766
+
696
767
  [[package]]
697
768
  name = "same-file"
698
769
  version = "1.0.6"
@@ -1029,8 +1100,9 @@ dependencies = [
1029
1100
 
1030
1101
  [[package]]
1031
1102
  name = "zeusdb-vector-database"
1032
- version = "0.0.2"
1103
+ version = "0.0.4"
1033
1104
  dependencies = [
1034
1105
  "hnsw_rs",
1106
+ "numpy",
1035
1107
  "pyo3",
1036
1108
  ]
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "zeusdb-vector-database"
3
- version = "0.0.2"
3
+ version = "0.0.4"
4
4
  edition = "2021"
5
5
  resolver = "2" # <-- Avoid compiling unnecessary features from dependencies.
6
6
 
@@ -12,6 +12,7 @@ crate-type = ["cdylib"]
12
12
  [dependencies]
13
13
  pyo3 = { version = "0.25.1", features = ["extension-module"] }
14
14
  hnsw_rs = "0.3.2"
15
+ numpy = "0.25.0"
15
16
 
16
17
  [profile.release]
17
18
  lto = true # <-- Enable Link-Time Optimization