knowledge-rag 4.7.0__tar.gz → 4.7.1__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.
- {knowledge_rag-4.7.0 → knowledge_rag-4.7.1}/PKG-INFO +11 -5
- {knowledge_rag-4.7.0 → knowledge_rag-4.7.1}/README.md +10 -4
- {knowledge_rag-4.7.0 → knowledge_rag-4.7.1}/mcp_server/__init__.py +1 -1
- {knowledge_rag-4.7.0 → knowledge_rag-4.7.1}/pyproject.toml +1 -1
- {knowledge_rag-4.7.0 → knowledge_rag-4.7.1}/.gitignore +0 -0
- {knowledge_rag-4.7.0 → knowledge_rag-4.7.1}/LICENSE +0 -0
- {knowledge_rag-4.7.0 → knowledge_rag-4.7.1}/config.example.yaml +0 -0
- {knowledge_rag-4.7.0 → knowledge_rag-4.7.1}/mcp_server/config.py +0 -0
- {knowledge_rag-4.7.0 → knowledge_rag-4.7.1}/mcp_server/guarded.py +0 -0
- {knowledge_rag-4.7.0 → knowledge_rag-4.7.1}/mcp_server/ingestion.py +0 -0
- {knowledge_rag-4.7.0 → knowledge_rag-4.7.1}/mcp_server/instance_lock.py +0 -0
- {knowledge_rag-4.7.0 → knowledge_rag-4.7.1}/mcp_server/metrics.py +0 -0
- {knowledge_rag-4.7.0 → knowledge_rag-4.7.1}/mcp_server/preflight.py +0 -0
- {knowledge_rag-4.7.0 → knowledge_rag-4.7.1}/mcp_server/ratelimit.py +0 -0
- {knowledge_rag-4.7.0 → knowledge_rag-4.7.1}/mcp_server/security.py +0 -0
- {knowledge_rag-4.7.0 → knowledge_rag-4.7.1}/mcp_server/server.py +0 -0
- {knowledge_rag-4.7.0 → knowledge_rag-4.7.1}/npm/README.md +0 -0
- {knowledge_rag-4.7.0 → knowledge_rag-4.7.1}/presets/cybersecurity.yaml +0 -0
- {knowledge_rag-4.7.0 → knowledge_rag-4.7.1}/presets/developer.yaml +0 -0
- {knowledge_rag-4.7.0 → knowledge_rag-4.7.1}/presets/general.yaml +0 -0
- {knowledge_rag-4.7.0 → knowledge_rag-4.7.1}/presets/research.yaml +0 -0
- {knowledge_rag-4.7.0 → knowledge_rag-4.7.1}/requirements.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: knowledge-rag
|
|
3
|
-
Version: 4.7.
|
|
3
|
+
Version: 4.7.1
|
|
4
4
|
Summary: Local RAG System for Claude Code — Hybrid search + Cross-encoder Reranking + 13 MCP Tools + 20 Format Parsers. Zero external servers.
|
|
5
5
|
Project-URL: Homepage, https://github.com/lyonzin/knowledge-rag
|
|
6
6
|
Project-URL: Repository, https://github.com/lyonzin/knowledge-rag
|
|
@@ -1462,12 +1462,18 @@ Common issues:
|
|
|
1462
1462
|
|
|
1463
1463
|
### Unreleased
|
|
1464
1464
|
|
|
1465
|
-
### v4.7.
|
|
1465
|
+
### v4.7.1 (2026-08-01) — Documentation Hygiene
|
|
1466
1466
|
|
|
1467
|
-
- **
|
|
1468
|
-
- **
|
|
1467
|
+
- **CHORE (docs, tests)**: sanitize identifiers in test fixtures and CHANGELOG examples. v4.7.0 referenced code names from a real deployment corpus in `tests/test_bm25_tokenizer_fragment.py` and the v4.7.0 CHANGELOG entry; those are replaced with synthetic placeholders (`RULE-A00X`, `PROJECT-Custom001-xxxx`) and well-known public identifiers (`CVE-*`, `MS17-*`, `ADR-*`, `T1078.002`) that carry no organization-specific taxonomy. Zero behavior change — all 28 fragment tests pass unchanged, tokenizer logic identical.
|
|
1468
|
+
- **NOTE**: v4.7.0 is **yanked from PyPI** and **deprecated on NPM** because its published README contained the same corporate example strings. The Docker tag `v4.7.0` remains (image tags are immutable) but `latest` now points to v4.7.1. Please upgrade — v4.7.0 and v4.7.1 are functionally equivalent.
|
|
1469
|
+
- **VERSION**: 4.7.0 → **4.7.1** (PATCH — documentation hygiene, zero code / API / config change).
|
|
1470
|
+
|
|
1471
|
+
### v4.7.0 (2026-07-31) — BM25 Fragment Query Support ⚠️ **YANKED — use v4.7.1**
|
|
1472
|
+
|
|
1473
|
+
- **FIX (retrieval)**: BM25 tokenizer now emits **sub-tokens** for hyphenated alphanumeric-code composites, so fragment queries no longer silently return `NO_RESULTS`. Before v4.7.0, `RULE-A002` was indexed as a single token `rule-a002`; queries like `A002`, `RULE`, `B005` returned zero even when the composite lived in the corpus. This is not a bug specific to any naming scheme — it hit every hyphenated code taxonomy in typical infosec / doc corpora (`RULE-*`, `CVE-*`, `ADR-*`, `MS17-*`, `PROJECT-Custom001-xxxx`). The tokenizer now emits both the composite token AND its sub-parts of length ≥ 2 (`rule-a002` → `["rule-a002", "rule", "a002"]`). IDF preserves ranking — composite matches still rank above fragment matches because the composite is rarer. **Heuristic (perf-safety)**: sub-token expansion is triggered ONLY when the composite contains at least one digit — so `pass-the-hash`, `state-of-the-art`, and other natural-language hyphenated phrases stay as single tokens (expanding them would flood the inverted index with stop-word-like sub-parts and hurt concurrent-query throughput). (#140)
|
|
1474
|
+
- **NEW (tests)**: `tests/test_bm25_tokenizer_fragment.py` — 28 tests across 4 classes covering unit tokenizer behavior, end-to-end fragment matching, multi-doc disambiguation, and the 5 query patterns explicitly reported (`RULE-A019`, `PROJECT-Custom001-xxxx`, `RULE`, `A019`, `B005`). Includes retrocompat sentinel + IDF ranking invariant. Baseline: 314 → 342.
|
|
1469
1475
|
- **UPGRADE NOTE**: run `reindex_documents(force=True)` once after upgrade to rebuild the BM25 inverted index with the new sub-token emission. ChromaDB vectors are untouched. Expect a **~30–50% increase in BM25 index memory** (measured +32.5% on synthetic corpus) — negligible for typical corpora, worth reviewing for deployments with >100K docs.
|
|
1470
|
-
- **KNOWN LIMITATION**: alphanumeric-glued tokens without separators (
|
|
1476
|
+
- **KNOWN LIMITATION**: alphanumeric-glued tokens without separators (single-token identifiers with no hyphens, hash prefixes) still require exact match — no sub-token expansion possible without character n-grams (5-10× index overhead). Tracked as follow-up.
|
|
1471
1477
|
- **VERSION**: 4.6.0 → **4.7.0** (MINOR — tokenization behavior change + reindex requirement, though no API/config break).
|
|
1472
1478
|
|
|
1473
1479
|
### v4.6.0 (2026-07-30) — MCP spec 2026-07-28 via Anthropic Tier 1 SDK (mcp 2.x)
|
|
@@ -1414,12 +1414,18 @@ Common issues:
|
|
|
1414
1414
|
|
|
1415
1415
|
### Unreleased
|
|
1416
1416
|
|
|
1417
|
-
### v4.7.
|
|
1417
|
+
### v4.7.1 (2026-08-01) — Documentation Hygiene
|
|
1418
1418
|
|
|
1419
|
-
- **
|
|
1420
|
-
- **
|
|
1419
|
+
- **CHORE (docs, tests)**: sanitize identifiers in test fixtures and CHANGELOG examples. v4.7.0 referenced code names from a real deployment corpus in `tests/test_bm25_tokenizer_fragment.py` and the v4.7.0 CHANGELOG entry; those are replaced with synthetic placeholders (`RULE-A00X`, `PROJECT-Custom001-xxxx`) and well-known public identifiers (`CVE-*`, `MS17-*`, `ADR-*`, `T1078.002`) that carry no organization-specific taxonomy. Zero behavior change — all 28 fragment tests pass unchanged, tokenizer logic identical.
|
|
1420
|
+
- **NOTE**: v4.7.0 is **yanked from PyPI** and **deprecated on NPM** because its published README contained the same corporate example strings. The Docker tag `v4.7.0` remains (image tags are immutable) but `latest` now points to v4.7.1. Please upgrade — v4.7.0 and v4.7.1 are functionally equivalent.
|
|
1421
|
+
- **VERSION**: 4.7.0 → **4.7.1** (PATCH — documentation hygiene, zero code / API / config change).
|
|
1422
|
+
|
|
1423
|
+
### v4.7.0 (2026-07-31) — BM25 Fragment Query Support ⚠️ **YANKED — use v4.7.1**
|
|
1424
|
+
|
|
1425
|
+
- **FIX (retrieval)**: BM25 tokenizer now emits **sub-tokens** for hyphenated alphanumeric-code composites, so fragment queries no longer silently return `NO_RESULTS`. Before v4.7.0, `RULE-A002` was indexed as a single token `rule-a002`; queries like `A002`, `RULE`, `B005` returned zero even when the composite lived in the corpus. This is not a bug specific to any naming scheme — it hit every hyphenated code taxonomy in typical infosec / doc corpora (`RULE-*`, `CVE-*`, `ADR-*`, `MS17-*`, `PROJECT-Custom001-xxxx`). The tokenizer now emits both the composite token AND its sub-parts of length ≥ 2 (`rule-a002` → `["rule-a002", "rule", "a002"]`). IDF preserves ranking — composite matches still rank above fragment matches because the composite is rarer. **Heuristic (perf-safety)**: sub-token expansion is triggered ONLY when the composite contains at least one digit — so `pass-the-hash`, `state-of-the-art`, and other natural-language hyphenated phrases stay as single tokens (expanding them would flood the inverted index with stop-word-like sub-parts and hurt concurrent-query throughput). (#140)
|
|
1426
|
+
- **NEW (tests)**: `tests/test_bm25_tokenizer_fragment.py` — 28 tests across 4 classes covering unit tokenizer behavior, end-to-end fragment matching, multi-doc disambiguation, and the 5 query patterns explicitly reported (`RULE-A019`, `PROJECT-Custom001-xxxx`, `RULE`, `A019`, `B005`). Includes retrocompat sentinel + IDF ranking invariant. Baseline: 314 → 342.
|
|
1421
1427
|
- **UPGRADE NOTE**: run `reindex_documents(force=True)` once after upgrade to rebuild the BM25 inverted index with the new sub-token emission. ChromaDB vectors are untouched. Expect a **~30–50% increase in BM25 index memory** (measured +32.5% on synthetic corpus) — negligible for typical corpora, worth reviewing for deployments with >100K docs.
|
|
1422
|
-
- **KNOWN LIMITATION**: alphanumeric-glued tokens without separators (
|
|
1428
|
+
- **KNOWN LIMITATION**: alphanumeric-glued tokens without separators (single-token identifiers with no hyphens, hash prefixes) still require exact match — no sub-token expansion possible without character n-grams (5-10× index overhead). Tracked as follow-up.
|
|
1423
1429
|
- **VERSION**: 4.6.0 → **4.7.0** (MINOR — tokenization behavior change + reindex requirement, though no API/config break).
|
|
1424
1430
|
|
|
1425
1431
|
### v4.6.0 (2026-07-30) — MCP spec 2026-07-28 via Anthropic Tier 1 SDK (mcp 2.x)
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "knowledge-rag"
|
|
7
|
-
version = "4.7.
|
|
7
|
+
version = "4.7.1"
|
|
8
8
|
description = "Local RAG System for Claude Code — Hybrid search + Cross-encoder Reranking + 13 MCP Tools + 20 Format Parsers. Zero external servers."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = {text = "MIT"}
|
|
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
|