Skip to content

Commit da241fa

Browse files
Release v0.0.9
* Bump version to 0.0.9 for development * refactor: rename `.query()` method to `.search()` for semantic clarity * Delete: old test files and update numbering of remaining files * test: expand test coverage and update for latest API changes * 📄 docs(changelog): update for v0.0.9 release * Add: latest uv.lock file for reproducible Python dependency management * 📄 docs(changelog): update for v0.0.9 release
1 parent a468ded commit da241fa

26 files changed

Lines changed: 737 additions & 191 deletions

CHANGELOG.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,20 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
---
99

10+
## [0.0.9] - 2025-07-10
11+
12+
### Added
13+
- `search()` is a more accurate and industry-standard term for vector similarity retrieval.
14+
15+
### Changed
16+
- ⚠️ Breaking Changes - Renamed `HNSWIndex.query()``HNSWIndex.search()` to better reflect its role as a k-nearest neighbor (KNN) similarity search method.
17+
- Updated all internal references, tests, and examples to reflect the new `.search()` method name.
18+
19+
### Removed
20+
- All usages of `.query()` must be replaced with `.search()`.
21+
22+
---
23+
1024
## [0.0.8] - 2025-07-10
1125

1226
### Added

README.md

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ print(add_result.summary())
126126
query_vector = [0.1, 0.2, 0.3, 0.1, 0.4, 0.2, 0.6, 0.7]
127127

128128
# Query with no filter (all documents)
129-
results = index.query(vector=query_vector, filter=None, top_k=2)
129+
results = index.search(vector=query_vector, filter=None, top_k=2)
130130
print("\n--- Query Results Output - Raw ---")
131131
print(results)
132132

@@ -300,7 +300,7 @@ Query the index using a new vector and retrieve the top-k nearest neighbors. You
300300

301301
```python
302302
print("\n--- Query returning two most similar results ---")
303-
results = index.query(vector=query_vector, top_k=2)
303+
results = index.search(vector=query_vector, top_k=2)
304304
print(results)
305305
```
306306

@@ -318,7 +318,7 @@ This filters on the given metadata after conducting the similarity search.
318318

319319
```python
320320
print("\n--- Querying with filter: author = 'Alice' ---")
321-
results = index.query(vector=query_vector, filter={"author": "Alice"}, top_k=5)
321+
results = index.search(vector=query_vector, filter={"author": "Alice"}, top_k=5)
322322
print(results)
323323
```
324324

@@ -337,7 +337,7 @@ You can optionally return the stored embedding vectors alongside metadata and si
337337

338338
```python
339339
print("\n--- Querying with filter and returning embedding vectors ---")
340-
results = index.query(vector=query_vector, filter={"split": "test"}, top_k=2, return_vector=True)
340+
results = index.search(vector=query_vector, filter={"split": "test"}, top_k=2, return_vector=True)
341341
print(results)
342342
```
343343

@@ -429,7 +429,7 @@ print(index.list(number=5)) # Shows first 5 records
429429
ZeusDB allows you to remove a vector and its associated metadata from the index using the .remove_point(id) method. This performs a <u>logical deletion</u>, meaning:
430430
- The vector is deleted from internal storage.
431431
- The metadata is removed.
432-
- The vector ID is no longer accessible via .contains(), .get_vector(), or .query().
432+
- The vector ID is no longer accessible via .contains(), .get_vector(), or .search().
433433

434434
```python
435435
# Remove the point using its ID
@@ -530,31 +530,31 @@ filter = {
530530
"year": {"gte": 2024}
531531
}
532532

533-
results = index.query(vector=query_embedding, filter=filter, top_k=5)
533+
results = index.search(vector=query_embedding, filter=filter, top_k=5)
534534
```
535535

536536
#### ✔️ Find documents by specific authors
537537
```python
538538
filter = {"author": {"in": ["Alice", "Bob", "Charlie"]}}
539-
results = index.query(vector=query_embedding, filter=filter, top_k=5)
539+
results = index.search(vector=query_embedding, filter=filter, top_k=5)
540540
```
541541

542542
#### ✔️ Find AI-related content
543543
```python
544544
filter = {"tags": {"contains": "ai"}}
545-
results = index.query(vector=query_embedding, filter=filter, top_k=5)
545+
results = index.search(vector=query_embedding, filter=filter, top_k=5)
546546
```
547547

548548
#### ✔️ Find documents in price range
549549
```python
550550
filter = {"price": {"gte": 20.0, "lte": 40.0}}
551-
results = index.query(vector=query_embedding, filter=filter, top_k=5)
551+
results = index.search(vector=query_embedding, filter=filter, top_k=5)
552552
```
553553

554554
#### ✔️ Find documents with specific file types
555555
```python
556556
filter = {"filename": {"endswith": ".pdf"}}
557-
results = index.query(vector=query_embedding, filter=filter, top_k=5)
557+
results = index.search(vector=query_embedding, filter=filter, top_k=5)
558558
```
559559

560560

benchmarks/17.new_query_data_with_metadata.py renamed to benchmarks/10.new_query_data_with_metadata.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939

4040
# Query all records
4141
query_vector = np.random.rand(384).tolist()
42-
all_results = index.query(query_vector, top_k=10)
42+
all_results = index.search(query_vector, top_k=10)
4343
print("\n--- Top 10 results (raw no filter) ---")
4444
print(all_results)
4545
print(type(all_results))
@@ -48,15 +48,15 @@
4848
print(f"{i+1}. ID: {result['id']}, Score: {result['score']:.4f}, Batch: {result['metadata']['batch']}")
4949

5050
# Query only "large" batch records
51-
large_results = index.query(query_vector, filter={"batch": "large"}, top_k=5)
51+
large_results = index.search(query_vector, filter={"batch": "large"}, top_k=5)
5252
print("\n--- Top 5 'large' batch results - raw ---")
5353
print(large_results)
5454
print("\n--- Top 5 'large' batch results ---")
5555
for i, result in enumerate(large_results):
5656
print(f"{i+1}. ID: {result['id']}, Score: {result['score']:.4f}, Batch: {result['metadata']['batch']}")
5757

5858
# Query only "small" batch records
59-
small_results = index.query(query_vector, filter={"batch": "small"}, top_k=5)
59+
small_results = index.search(query_vector, filter={"batch": "small"}, top_k=5)
6060
print("\n--- Top 5 'small' batch results ---")
6161
for i, result in enumerate(small_results):
6262
print(f"{i+1}. ID: {result['id']}, Score: {result['score']:.4f}, Batch: {result['metadata']['batch']}")

benchmarks/18.new_query_data_return_vector.py renamed to benchmarks/11.new_query_data_return_vector.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232

3333
# Query with top_k=2 and return_vector=True
3434
query_vector = np.random.rand(4).tolist()
35-
results = index.query(query_vector, top_k=2, return_vector=True)
35+
results = index.search(query_vector, top_k=2, return_vector=True)
3636

3737
print("\n--- Top 2 Results (with vectors) - raw ---")
3838
print(results)
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
query_vector = [0.1, 0.2, 0.3, 0.1, 0.4, 0.2, 0.6, 0.7]
2828

2929
# Query with no filter (all documents)
30-
results = index.query(vector=query_vector, filter=None, top_k=2)
30+
results = index.search(vector=query_vector, filter=None, top_k=2)
3131
print("\n--- Query Results Output - Raw ---")
3232
print(results)
3333

@@ -36,7 +36,7 @@
3636
print(f"{i}. ID: {res['id']}, Score: {res['score']:.4f}, Metadata: {res['metadata']}")
3737

3838
print("\n--- Querying with filter: author = 'Alice' ---")
39-
results2 = index.query(vector=query_vector, filter={"author": "Alice"}, top_k=5)
39+
results2 = index.search(vector=query_vector, filter={"author": "Alice"}, top_k=5)
4040
print(results2)
4141

4242

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,12 @@
2020
print("--- Add Results Summary ---")
2121
print(add_result_cos.summary())
2222

23-
results_cos = index_cos.query(vector=query_vector, filter=None, top_k=2)
23+
results_cos = index_cos.search(vector=query_vector, filter=None, top_k=2)
2424
print("\n--- Top 2 Neighbors (No Filter) ---")
2525
for i, res in enumerate(results_cos, 1):
2626
print(f"{i}. ID: {res['id']}, Score: {res['score']:.4f}, Metadata: {res['metadata']}")
2727

28-
results_cos_filtered = index_cos.query(vector=query_vector, filter={"author": "Alice"}, top_k=5)
28+
results_cos_filtered = index_cos.search(vector=query_vector, filter={"author": "Alice"}, top_k=5)
2929
print("\n--- Top 5 Neighbors (Filter: author = 'Alice') ---")
3030
for i, res in enumerate(results_cos_filtered, 1):
3131
print(f"{i}. ID: {res['id']}, Score: {res['score']:.4f}, Metadata: {res['metadata']}")
@@ -40,12 +40,12 @@
4040
print("--- Add Results Summary ---")
4141
print(add_result_l2.summary())
4242

43-
results_l2 = index_l2.query(vector=query_vector, filter=None, top_k=2)
43+
results_l2 = index_l2.search(vector=query_vector, filter=None, top_k=2)
4444
print("\n--- Top 2 Neighbors (No Filter) ---")
4545
for i, res in enumerate(results_l2, 1):
4646
print(f"{i}. ID: {res['id']}, Score: {res['score']:.4f}, Metadata: {res['metadata']}")
4747

48-
results_l2_filtered = index_l2.query(vector=query_vector, filter={"author": "Alice"}, top_k=5)
48+
results_l2_filtered = index_l2.search(vector=query_vector, filter={"author": "Alice"}, top_k=5)
4949
print("\n--- Top 5 Neighbors (Filter: author = 'Alice') ---")
5050
for i, res in enumerate(results_l2_filtered, 1):
5151
print(f"{i}. ID: {res['id']}, Score: {res['score']:.4f}, Metadata: {res['metadata']}")
@@ -60,12 +60,12 @@
6060
print("--- Add Results Summary ---")
6161
print(add_result_l1.summary())
6262

63-
results_l1 = index_l1.query(vector=query_vector, filter=None, top_k=2)
63+
results_l1 = index_l1.search(vector=query_vector, filter=None, top_k=2)
6464
print("\n--- Top 2 Neighbors (No Filter) ---")
6565
for i, res in enumerate(results_l1, 1):
6666
print(f"{i}. ID: {res['id']}, Score: {res['score']:.4f}, Metadata: {res['metadata']}")
6767

68-
results_l1_filtered = index_l1.query(vector=query_vector, filter={"author": "Alice"}, top_k=5)
68+
results_l1_filtered = index_l1.search(vector=query_vector, filter={"author": "Alice"}, top_k=5)
6969
print("\n--- Top 5 Neighbors (Filter: author = 'Alice') ---")
7070
for i, res in enumerate(results_l1_filtered, 1):
7171
print(f"{i}. ID: {res['id']}, Score: {res['score']:.4f}, Metadata: {res['metadata']}")
File renamed without changes.

0 commit comments

Comments
 (0)