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.
- {zeusdb_vector_database-0.0.2 → zeusdb_vector_database-0.0.4}/NOTICE +3 -0
- {zeusdb_vector_database-0.0.2 → zeusdb_vector_database-0.0.4}/PKG-INFO +105 -22
- {zeusdb_vector_database-0.0.2 → zeusdb_vector_database-0.0.4}/README.md +104 -21
- {zeusdb_vector_database-0.0.2 → zeusdb_vector_database-0.0.4}/pyproject.toml +1 -1
- {zeusdb_vector_database-0.0.2 → zeusdb_vector_database-0.0.4}/src/zeusdb_vector_database/__init__.py +1 -1
- {zeusdb_vector_database-0.0.2 → zeusdb_vector_database-0.0.4}/vdb-core/Cargo.lock +73 -1
- {zeusdb_vector_database-0.0.2 → zeusdb_vector_database-0.0.4}/vdb-core/Cargo.toml +2 -1
- zeusdb_vector_database-0.0.4/vdb-core/src/hnsw_index.rs +864 -0
- {zeusdb_vector_database-0.0.2 → zeusdb_vector_database-0.0.4}/vdb-core/src/lib.rs +1 -0
- zeusdb_vector_database-0.0.2/vdb-core/src/hnsw_index.rs +0 -344
- {zeusdb_vector_database-0.0.2 → zeusdb_vector_database-0.0.4}/LICENSE +0 -0
- {zeusdb_vector_database-0.0.2 → zeusdb_vector_database-0.0.4}/src/zeusdb_vector_database/py.typed +0 -0
- {zeusdb_vector_database-0.0.2 → zeusdb_vector_database-0.0.4}/src/zeusdb_vector_database/vector_database.py +0 -0
|
@@ -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.
|
|
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
|
-
|
|
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="
|
|
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
|
|
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
|
-
|
|
128
|
-
"doc_001":
|
|
129
|
-
"doc_002":
|
|
130
|
-
"doc_003":
|
|
131
|
-
"doc_004":
|
|
132
|
-
"doc_005":
|
|
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
|
-
|
|
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
|
-
|
|
146
|
-
|
|
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
|
-
|
|
219
|
-
print(f"{doc_id} (score={score:.4f})")
|
|
300
|
+
print(results)
|
|
220
301
|
```
|
|
221
302
|
*Output*
|
|
222
303
|
```
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
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
|
-
|
|
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="
|
|
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
|
|
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
|
-
|
|
109
|
-
"doc_001":
|
|
110
|
-
"doc_002":
|
|
111
|
-
"doc_003":
|
|
112
|
-
"doc_004":
|
|
113
|
-
"doc_005":
|
|
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
|
-
|
|
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
|
-
|
|
127
|
-
|
|
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
|
-
|
|
200
|
-
print(f"{doc_id} (score={score:.4f})")
|
|
281
|
+
print(results)
|
|
201
282
|
```
|
|
202
283
|
*Output*
|
|
203
284
|
```
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
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
|
|
|
@@ -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.
|
|
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.
|
|
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
|