vecforge 0.2.0__tar.gz → 1.0.0__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.
- {vecforge-0.2.0/vecforge.egg-info → vecforge-1.0.0}/PKG-INFO +4 -4
- {vecforge-0.2.0 → vecforge-1.0.0}/README.md +2 -2
- {vecforge-0.2.0 → vecforge-1.0.0}/pyproject.toml +2 -2
- {vecforge-0.2.0 → vecforge-1.0.0}/vecforge/__init__.py +1 -1
- {vecforge-0.2.0 → vecforge-1.0.0}/vecforge/cli/main.py +1 -1
- {vecforge-0.2.0 → vecforge-1.0.0}/vecforge/search/cascade.py +3 -3
- {vecforge-0.2.0 → vecforge-1.0.0}/vecforge/search/hybrid.py +2 -1
- {vecforge-0.2.0 → vecforge-1.0.0}/vecforge/server/app.py +1 -1
- {vecforge-0.2.0 → vecforge-1.0.0}/vecforge/server/routes.py +1 -1
- {vecforge-0.2.0 → vecforge-1.0.0/vecforge.egg-info}/PKG-INFO +4 -4
- {vecforge-0.2.0 → vecforge-1.0.0}/LICENSE +0 -0
- {vecforge-0.2.0 → vecforge-1.0.0}/NOTICE +0 -0
- {vecforge-0.2.0 → vecforge-1.0.0}/setup.cfg +0 -0
- {vecforge-0.2.0 → vecforge-1.0.0}/vecforge/cli/__init__.py +0 -0
- {vecforge-0.2.0 → vecforge-1.0.0}/vecforge/core/__init__.py +0 -0
- {vecforge-0.2.0 → vecforge-1.0.0}/vecforge/core/bm25.py +0 -0
- {vecforge-0.2.0 → vecforge-1.0.0}/vecforge/core/embedder.py +0 -0
- {vecforge-0.2.0 → vecforge-1.0.0}/vecforge/core/indexer.py +0 -0
- {vecforge-0.2.0 → vecforge-1.0.0}/vecforge/core/reranker.py +0 -0
- {vecforge-0.2.0 → vecforge-1.0.0}/vecforge/core/storage.py +0 -0
- {vecforge-0.2.0 → vecforge-1.0.0}/vecforge/core/vault.py +0 -0
- {vecforge-0.2.0 → vecforge-1.0.0}/vecforge/exceptions.py +0 -0
- {vecforge-0.2.0 → vecforge-1.0.0}/vecforge/ingest/__init__.py +0 -0
- {vecforge-0.2.0 → vecforge-1.0.0}/vecforge/ingest/dispatcher.py +0 -0
- {vecforge-0.2.0 → vecforge-1.0.0}/vecforge/ingest/document.py +0 -0
- {vecforge-0.2.0 → vecforge-1.0.0}/vecforge/search/__init__.py +0 -0
- {vecforge-0.2.0 → vecforge-1.0.0}/vecforge/search/filters.py +0 -0
- {vecforge-0.2.0 → vecforge-1.0.0}/vecforge/security/__init__.py +0 -0
- {vecforge-0.2.0 → vecforge-1.0.0}/vecforge/security/audit.py +0 -0
- {vecforge-0.2.0 → vecforge-1.0.0}/vecforge/security/encryption.py +0 -0
- {vecforge-0.2.0 → vecforge-1.0.0}/vecforge/security/namespaces.py +0 -0
- {vecforge-0.2.0 → vecforge-1.0.0}/vecforge/security/rbac.py +0 -0
- {vecforge-0.2.0 → vecforge-1.0.0}/vecforge/security/snapshots.py +0 -0
- {vecforge-0.2.0 → vecforge-1.0.0}/vecforge/server/__init__.py +0 -0
- {vecforge-0.2.0 → vecforge-1.0.0}/vecforge.egg-info/SOURCES.txt +0 -0
- {vecforge-0.2.0 → vecforge-1.0.0}/vecforge.egg-info/dependency_links.txt +0 -0
- {vecforge-0.2.0 → vecforge-1.0.0}/vecforge.egg-info/entry_points.txt +0 -0
- {vecforge-0.2.0 → vecforge-1.0.0}/vecforge.egg-info/requires.txt +0 -0
- {vecforge-0.2.0 → vecforge-1.0.0}/vecforge.egg-info/top_level.txt +0 -0
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: vecforge
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 1.0.0
|
|
4
4
|
Summary: Forge your vector database. Own it forever. Local-first, encrypted, quantum-inspired.
|
|
5
5
|
Author-email: Suneel Bose K <suneelbose@arcgx.in>
|
|
6
6
|
License: Business Source License 1.1
|
|
7
|
-
Project-URL: Homepage, https://
|
|
7
|
+
Project-URL: Homepage, https://bosekarmegam.github.io/vecforge/
|
|
8
8
|
Project-URL: Repository, https://github.com/bosekarmegam/vecforge
|
|
9
9
|
Project-URL: Issues, https://github.com/bosekarmegam/vecforge/issues
|
|
10
10
|
Keywords: vector-database,faiss,embeddings,search,local-first,encrypted
|
|
@@ -45,7 +45,8 @@ Provides-Extra: quantum
|
|
|
45
45
|
Dynamic: license-file
|
|
46
46
|
|
|
47
47
|
<p align="center">
|
|
48
|
-
<
|
|
48
|
+
<img src="vecforge-logo.svg" alt="VecForge Logo" width="120" height="120">
|
|
49
|
+
<h1 align="center">VecForge</h1>
|
|
49
50
|
<p align="center"><strong>Forge your vector database. Own it forever.</strong></p>
|
|
50
51
|
<p align="center">
|
|
51
52
|
Local-first · Encrypted · Hybrid Search · Zero Cloud Dependency
|
|
@@ -59,7 +60,6 @@ Dynamic: license-file
|
|
|
59
60
|
Built by **Suneel Bose K** — Founder & CEO, [ArcGX TechLabs Private Limited](https://arcgx.in)
|
|
60
61
|
|
|
61
62
|
[](https://pypi.org/project/vecforge/)
|
|
62
|
-
[](https://pypi.org/project/vecforge/)
|
|
63
63
|
[](LICENSE)
|
|
64
64
|
[](https://python.org)
|
|
65
65
|
[](https://github.com/bosekarmegam/vecforge/actions/workflows/tests.yml)
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
<p align="center">
|
|
2
|
-
<
|
|
2
|
+
<img src="vecforge-logo.svg" alt="VecForge Logo" width="120" height="120">
|
|
3
|
+
<h1 align="center">VecForge</h1>
|
|
3
4
|
<p align="center"><strong>Forge your vector database. Own it forever.</strong></p>
|
|
4
5
|
<p align="center">
|
|
5
6
|
Local-first · Encrypted · Hybrid Search · Zero Cloud Dependency
|
|
@@ -13,7 +14,6 @@
|
|
|
13
14
|
Built by **Suneel Bose K** — Founder & CEO, [ArcGX TechLabs Private Limited](https://arcgx.in)
|
|
14
15
|
|
|
15
16
|
[](https://pypi.org/project/vecforge/)
|
|
16
|
-
[](https://pypi.org/project/vecforge/)
|
|
17
17
|
[](LICENSE)
|
|
18
18
|
[](https://python.org)
|
|
19
19
|
[](https://github.com/bosekarmegam/vecforge/actions/workflows/tests.yml)
|
|
@@ -8,7 +8,7 @@ build-backend = "setuptools.build_meta"
|
|
|
8
8
|
|
|
9
9
|
[project]
|
|
10
10
|
name = "vecforge"
|
|
11
|
-
version = "0.
|
|
11
|
+
version = "1.0.0"
|
|
12
12
|
description = "Forge your vector database. Own it forever. Local-first, encrypted, quantum-inspired."
|
|
13
13
|
readme = "README.md"
|
|
14
14
|
license = {text = "Business Source License 1.1"}
|
|
@@ -59,7 +59,7 @@ quantum = []
|
|
|
59
59
|
vecforge = "vecforge.cli.main:cli"
|
|
60
60
|
|
|
61
61
|
[project.urls]
|
|
62
|
-
Homepage = "https://
|
|
62
|
+
Homepage = "https://bosekarmegam.github.io/vecforge/"
|
|
63
63
|
Repository = "https://github.com/bosekarmegam/vecforge"
|
|
64
64
|
Issues = "https://github.com/bosekarmegam/vecforge/issues"
|
|
65
65
|
|
|
@@ -32,7 +32,7 @@ from vecforge.core.bm25 import BM25Engine
|
|
|
32
32
|
from vecforge.core.indexer import FaissIndexer
|
|
33
33
|
from vecforge.core.reranker import Reranker
|
|
34
34
|
from vecforge.search.filters import MetadataFilter
|
|
35
|
-
from vecforge.search.hybrid import
|
|
35
|
+
from vecforge.search.hybrid import weighted_linear_fusion
|
|
36
36
|
|
|
37
37
|
logger = logging.getLogger(__name__)
|
|
38
38
|
|
|
@@ -134,12 +134,12 @@ class CascadeSearcher:
|
|
|
134
134
|
dense_scores, dense_ids = self._indexer.search(query_vector, top_k=retrieval_k)
|
|
135
135
|
logger.debug("Stage 1 (Dense): retrieved %d candidates", len(dense_ids))
|
|
136
136
|
|
|
137
|
-
# ─── Stage 2: Sparse keyword merge via
|
|
137
|
+
# ─── Stage 2: Sparse keyword merge via Weighted Linear Fusion ───
|
|
138
138
|
bm25_results = self._bm25.search(query_text, top_k=retrieval_k)
|
|
139
139
|
sparse_ids = [r.doc_index for r in bm25_results]
|
|
140
140
|
sparse_scores = [r.score for r in bm25_results]
|
|
141
141
|
|
|
142
|
-
fused =
|
|
142
|
+
fused = weighted_linear_fusion(
|
|
143
143
|
dense_ids=dense_ids,
|
|
144
144
|
dense_scores=dense_scores,
|
|
145
145
|
sparse_ids=sparse_ids,
|
|
@@ -119,6 +119,7 @@ def weighted_linear_fusion(
|
|
|
119
119
|
fused_scores: dict[int, float] = {}
|
|
120
120
|
|
|
121
121
|
# perf: Normalize dense scores to [0, 1]
|
|
122
|
+
effective_alpha = alpha if len(sparse_scores) > 0 else 1.0
|
|
122
123
|
if len(dense_scores) > 0:
|
|
123
124
|
d_min, d_max = float(dense_scores.min()), float(dense_scores.max())
|
|
124
125
|
d_range = d_max - d_min if d_max > d_min else 1.0
|
|
@@ -128,7 +129,7 @@ def weighted_linear_fusion(
|
|
|
128
129
|
if doc_id_int < 0:
|
|
129
130
|
continue
|
|
130
131
|
norm_score = (float(score) - d_min) / d_range
|
|
131
|
-
fused_scores[doc_id_int] =
|
|
132
|
+
fused_scores[doc_id_int] = effective_alpha * norm_score
|
|
132
133
|
|
|
133
134
|
# perf: Normalize sparse scores to [0, 1]
|
|
134
135
|
if len(sparse_scores) > 0:
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: vecforge
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 1.0.0
|
|
4
4
|
Summary: Forge your vector database. Own it forever. Local-first, encrypted, quantum-inspired.
|
|
5
5
|
Author-email: Suneel Bose K <suneelbose@arcgx.in>
|
|
6
6
|
License: Business Source License 1.1
|
|
7
|
-
Project-URL: Homepage, https://
|
|
7
|
+
Project-URL: Homepage, https://bosekarmegam.github.io/vecforge/
|
|
8
8
|
Project-URL: Repository, https://github.com/bosekarmegam/vecforge
|
|
9
9
|
Project-URL: Issues, https://github.com/bosekarmegam/vecforge/issues
|
|
10
10
|
Keywords: vector-database,faiss,embeddings,search,local-first,encrypted
|
|
@@ -45,7 +45,8 @@ Provides-Extra: quantum
|
|
|
45
45
|
Dynamic: license-file
|
|
46
46
|
|
|
47
47
|
<p align="center">
|
|
48
|
-
<
|
|
48
|
+
<img src="vecforge-logo.svg" alt="VecForge Logo" width="120" height="120">
|
|
49
|
+
<h1 align="center">VecForge</h1>
|
|
49
50
|
<p align="center"><strong>Forge your vector database. Own it forever.</strong></p>
|
|
50
51
|
<p align="center">
|
|
51
52
|
Local-first · Encrypted · Hybrid Search · Zero Cloud Dependency
|
|
@@ -59,7 +60,6 @@ Dynamic: license-file
|
|
|
59
60
|
Built by **Suneel Bose K** — Founder & CEO, [ArcGX TechLabs Private Limited](https://arcgx.in)
|
|
60
61
|
|
|
61
62
|
[](https://pypi.org/project/vecforge/)
|
|
62
|
-
[](https://pypi.org/project/vecforge/)
|
|
63
63
|
[](LICENSE)
|
|
64
64
|
[](https://python.org)
|
|
65
65
|
[](https://github.com/bosekarmegam/vecforge/actions/workflows/tests.yml)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|