wavemind 2.3.1__tar.gz → 2.3.2__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.
- {wavemind-2.3.1 → wavemind-2.3.2}/PKG-INFO +9 -8
- {wavemind-2.3.1 → wavemind-2.3.2}/README.md +8 -7
- {wavemind-2.3.1 → wavemind-2.3.2}/benchmarks/BENCHMARK_LEADERBOARD.md +1 -1
- {wavemind-2.3.1 → wavemind-2.3.2}/benchmarks/BENCHMARK_REPORT.md +1 -1
- {wavemind-2.3.1 → wavemind-2.3.2}/benchmarks/benchmark_matrix_results.json +10 -9
- {wavemind-2.3.1 → wavemind-2.3.2}/benchmarks/benchmark_registry.py +2 -1
- {wavemind-2.3.1 → wavemind-2.3.2}/benchmarks/scale_readiness_benchmark.py +20 -2
- {wavemind-2.3.1 → wavemind-2.3.2}/benchmarks/scale_readiness_results.json +12 -11
- {wavemind-2.3.1 → wavemind-2.3.2}/docker-compose.yml +1 -1
- {wavemind-2.3.1 → wavemind-2.3.2}/docs/BENCHMARK_BRIEF.md +1 -1
- {wavemind-2.3.1 → wavemind-2.3.2}/docs/ROADMAP.md +8 -8
- {wavemind-2.3.1 → wavemind-2.3.2}/pyproject.toml +1 -1
- {wavemind-2.3.1 → wavemind-2.3.2}/tests/test_scale_readiness_benchmark.py +1 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/wavemind/__init__.py +1 -1
- {wavemind-2.3.1 → wavemind-2.3.2}/wavemind.egg-info/PKG-INFO +9 -8
- {wavemind-2.3.1 → wavemind-2.3.2}/CONTRIBUTING.md +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/Dockerfile +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/LICENSE +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/MANIFEST.in +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/SECURITY.md +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/SUPPORT.md +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/benchmarks/agent_memory_benchmark.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/benchmarks/agent_memory_results.json +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/benchmarks/ann_index_curve_benchmark.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/benchmarks/ann_index_curve_results.json +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/benchmarks/dynamic_memory_benchmark.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/benchmarks/dynamic_memory_results.json +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/benchmarks/field_memory_dynamics_benchmark.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/benchmarks/field_memory_dynamics_results.json +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/benchmarks/locomo_evidence_results.json +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/benchmarks/locomo_memory_benchmark.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/benchmarks/locomo_sentence_evidence_results.json +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/benchmarks/long_memory_evidence_benchmark.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/benchmarks/long_memory_evidence_results.json +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/benchmarks/longmemeval_answer_benchmark.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/benchmarks/longmemeval_answer_extractive_20_results.json +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/benchmarks/longmemeval_answer_qwen25_0_5b_50_results.json +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/benchmarks/longmemeval_answer_qwen25_1_5b_50_results.json +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/benchmarks/longmemeval_evidence_50_results.json +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/benchmarks/longmemeval_evidence_results.json +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/benchmarks/longmemeval_memory_benchmark.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/benchmarks/memory_competitor_benchmark.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/benchmarks/memory_competitor_results.json +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/benchmarks/nomiracl_russian_benchmark.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/benchmarks/nomiracl_russian_results.json +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/benchmarks/open_retrieval_benchmark.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/benchmarks/open_retrieval_scifact_results.json +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/benchmarks/production_index_profile_results.json +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/benchmarks/production_load_benchmark.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/benchmarks/production_load_qdrant_100k_tuned_results.json +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/benchmarks/production_load_qdrant_1m_ef_sweep_results.json +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/benchmarks/production_load_qdrant_1m_results.json +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/benchmarks/production_load_qdrant_1m_tuned_results.json +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/benchmarks/production_load_results.json +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/benchmarks/render_benchmark_charts.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/benchmarks/render_benchmark_leaderboard.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/benchmarks/render_benchmark_report.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/benchmarks/ru_sentences_benchmark.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/benchmarks/wavemind_capacity_results.json +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/docs/CHROMA_MIGRATION.md +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/docs/DEMO_SCRIPT.md +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/docs/LAUNCH_KIT.md +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/docs/OBSERVABILITY.md +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/docs/PROJECT_BOARD.md +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/docs/RELEASE.md +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/docs/RU_LAUNCH_POSTS.md +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/docs/USE_CASES.md +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/docs/assets/benchmark-summary.svg +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/docs/assets/wavemind-demo.gif +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/docs/assets/wavemind-social-card.svg +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/examples/agent_with_memory.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/examples/chroma_migration.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/examples/customer_support_memory.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/examples/demo.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/examples/dynamic_memory_demo.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/examples/framework_integrations.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/examples/langchain_memory.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/examples/llamaindex_retriever.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/examples/observability/README.md +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/examples/observability/docker-compose.yml +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/examples/observability/otel-collector.yaml +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/examples/observability/prometheus-alerts.yml +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/examples/observability/prometheus.yml +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/examples/production-index-profile/README.md +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/examples/production-index-profile/docker-compose.yml +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/examples/research_notebook_memory.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/examples/sharded_memory.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/install.bat +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/install.sh +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/requirements-optional.txt +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/requirements.txt +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/setup.cfg +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/tests/test_agent_memory_benchmark.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/tests/test_ann_index_curve_benchmark.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/tests/test_api.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/tests/test_api_process_persistence.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/tests/test_benchmark_brief.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/tests/test_benchmark_charts.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/tests/test_benchmark_leaderboard.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/tests/test_benchmark_registry.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/tests/test_benchmark_report.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/tests/test_chroma_migration_example.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/tests/test_cli_smoke.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/tests/test_cluster.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/tests/test_core_persistence.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/tests/test_dynamic_memory_benchmark.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/tests/test_examples.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/tests/test_field_graph.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/tests/test_field_graph_integration.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/tests/test_field_memory_dynamics_benchmark.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/tests/test_framework_adapters.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/tests/test_import_benchmark.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/tests/test_indexes_encoders.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/tests/test_jobs.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/tests/test_langchain_integration.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/tests/test_locomo_memory_benchmark.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/tests/test_long_memory_evidence_benchmark.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/tests/test_longmemeval_answer_benchmark.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/tests/test_longmemeval_memory_benchmark.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/tests/test_memory_competitor_benchmark.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/tests/test_multimodal.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/tests/test_nomiracl_russian_benchmark.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/tests/test_object_store.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/tests/test_observability.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/tests/test_observability_docs.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/tests/test_open_retrieval_benchmark.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/tests/test_packaging_files.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/tests/test_postgres_storage.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/tests/test_production_index_profile.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/tests/test_production_load_benchmark.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/tests/test_replication.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/tests/test_scale_plan.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/tests/test_semantic_and_latency.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/tests/test_sharding.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/wavemind/__main__.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/wavemind/api.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/wavemind/benchmark.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/wavemind/cli.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/wavemind/cluster.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/wavemind/core.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/wavemind/encoders.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/wavemind/field_graph.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/wavemind/importers.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/wavemind/indexes.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/wavemind/integrations/__init__.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/wavemind/integrations/autogen.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/wavemind/integrations/crewai.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/wavemind/integrations/langchain.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/wavemind/integrations/langgraph.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/wavemind/integrations/llamaindex.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/wavemind/jobs.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/wavemind/multimodal.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/wavemind/object_store.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/wavemind/observability.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/wavemind/replication.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/wavemind/scale.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/wavemind/sharding.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/wavemind/storage.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/wavemind/studio.py +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/wavemind.egg-info/SOURCES.txt +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/wavemind.egg-info/dependency_links.txt +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/wavemind.egg-info/entry_points.txt +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/wavemind.egg-info/requires.txt +0 -0
- {wavemind-2.3.1 → wavemind-2.3.2}/wavemind.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: wavemind
|
|
3
|
-
Version: 2.3.
|
|
3
|
+
Version: 2.3.2
|
|
4
4
|
Summary: Local-first dynamic memory field with vector search and wave-field re-ranking
|
|
5
5
|
License-Expression: MIT
|
|
6
6
|
Project-URL: Homepage, https://github.com/CaspianG/wavemind
|
|
@@ -546,15 +546,16 @@ Checked-in result:
|
|
|
546
546
|
|---|---:|
|
|
547
547
|
| Cluster planner | 4096 namespaces, 4 nodes, replication factor 2, node-loss availability `1.000`, zone-loss availability `1.000`, write quorum `2`. |
|
|
548
548
|
| Hot cache | 2000 lookups, hit rate `0.920`, p99 lookup `0.003 ms`. |
|
|
549
|
-
| Replicated runtime | 3 physical WaveMind stores, replication factor 3, write quorum 2, node-loss recall `true`, repair copied `1` missing record, tombstone repair deleted `1` stale record, p99 query-after-loss `1.
|
|
550
|
-
| Active-active delta sync | 2 regions, bidirectional convergence `true`, stale import suppressed after delete `true`, tombstone convergence `true`, sync `
|
|
551
|
-
| Replicated snapshot job | 3 replica files, manifest checksum validation `true`, offsite mirror validation `true`, portable archive validation `true`, S3-compatible upload validation `true`, latest remote archive metadata validation `true`, object-store retention pruned `2`, archive restore `
|
|
552
|
-
| Structured payloads | image/audio/table/event retrieval, precision@1 `1.000`, p99 `0.
|
|
549
|
+
| Replicated runtime | 3 physical WaveMind stores, replication factor 3, write quorum 2, node-loss recall `true`, repair copied `1` missing record, tombstone repair deleted `1` stale record, p99 query-after-loss `1.96 ms`. |
|
|
550
|
+
| Active-active delta sync | 2 regions, bidirectional convergence `true`, stale import suppressed after delete `true`, tombstone convergence `true`, sync `114.71 ms`. |
|
|
551
|
+
| Replicated snapshot job | 3 replica files, manifest checksum validation `true`, offsite mirror validation `true`, portable archive validation `true`, S3-compatible upload validation `true`, latest remote archive metadata validation `true`, remote archive download validation `true`, object-store retention pruned `2`, archive restore `47.91 ms`. |
|
|
552
|
+
| Structured payloads | image/audio/table/event retrieval, precision@1 `1.000`, p99 `0.80 ms`. |
|
|
553
553
|
|
|
554
554
|
This profile validates routing, quorum-replicated runtime behavior, cache
|
|
555
555
|
behavior, active-active namespace delta sync, replicated snapshot/restore, and
|
|
556
556
|
structured payload handling, including verified offsite, archive, object-store
|
|
557
|
-
latest lookup, object-store retention, and archive
|
|
557
|
+
latest lookup, object-store download, object-store retention, and archive
|
|
558
|
+
restore.
|
|
558
559
|
It is not a 10M-vector load test. Real 100k, 1M, and 10M latency claims should
|
|
559
560
|
come from service-backed FAISS/Qdrant/pgvector load tests on production-like
|
|
560
561
|
hardware.
|
|
@@ -1130,7 +1131,7 @@ Current read:
|
|
|
1130
1131
|
| LongMemEval 50-query smoke | On the first 50 non-abstention LongMemEval-S questions, WaveMind reaches `evidence_recall@5 0.920`, `precision@1 0.760`, and `MRR@5 0.827`; Chroma/Qdrant static reach `0.600`, `0.260`, and `0.385`. | This is the fast regression profile for checking current changes before rerunning the full LongMemEval profile. WaveMind wins on quality; latency still needs work. |
|
|
1131
1132
|
| ANN/index curve | At 50000 generated 128-d vectors, NumPy exact keeps `recall@10 1.000` at `6.49 ms`; quantized int8 keeps `0.934` at `24.92 ms`; Annoy is faster at `4.92 ms` but drops to `0.730` recall; Qdrant local keeps `1.000` recall at `43.49 ms`. | Current local scale boundary is clear: quantized search needs kernel work, Annoy needs tuning/FAISS, and Qdrant should be tested in service mode for a fair production comparison. |
|
|
1132
1133
|
| Production load | At 100000 generated 128-d vectors, service-mode Qdrant reaches `recall@10 1.000`, avg `10.28 ms`, p99 `21.26 ms`. At 1M, tuned Qdrant reaches `recall@10 0.984`, avg `116.80 ms`, p99 `209.28 ms`; an EF sweep finds `recall@10 0.977`, avg `64.76 ms`, p99 `103.77 ms` at `hnsw_ef=2048` on 30 queries. | 100k is production-grade on the tested machine. 1M recall is now strong, but p99 still needs tuning before claiming a stable sub-100 ms SLO. |
|
|
1133
|
-
| Scale readiness | Deterministic 1M-memory simulation validates 4096 namespace placements over 4 nodes with replication factor 2, node-loss availability `1.000`, zone-loss availability `1.000`, hot-cache hit rate `0.920`, quorum-replicated runtime recall after node loss, missing-record repair, tombstone repair, active-active delta sync, checksummed replicated snapshot/restore, offsite mirror verification, portable archive verification, S3-compatible upload/latest-metadata/retention verification, and structured payload precision@1 `1.000`. | This proves routing, cache, payload, replicated-runtime, namespace-delta, offsite/archive/object-store backup lifecycle, and restore-drill foundations. It is not a 10M-vector latency claim; real 10M latency still needs service-backed load tests on larger hardware. |
|
|
1134
|
+
| Scale readiness | Deterministic 1M-memory simulation validates 4096 namespace placements over 4 nodes with replication factor 2, node-loss availability `1.000`, zone-loss availability `1.000`, hot-cache hit rate `0.920`, quorum-replicated runtime recall after node loss, missing-record repair, tombstone repair, active-active delta sync, checksummed replicated snapshot/restore, offsite mirror verification, portable archive verification, S3-compatible upload/latest-metadata/download/retention verification, and structured payload precision@1 `1.000`. | This proves routing, cache, payload, replicated-runtime, namespace-delta, offsite/archive/object-store backup lifecycle, and restore-drill foundations. It is not a 10M-vector latency claim; real 10M latency still needs service-backed load tests on larger hardware. |
|
|
1134
1135
|
| Memory competitor adapters | WaveMind reaches `precision@1 0.80`, `precision@3 1.00`, stale suppression `1.00` on the small adapter profile. Mem0, Zep, and LangGraph are listed as skipped unless their real packages/services are configured. | This prevents fake competitor claims. The adapter harness is ready; real Mem0/Zep/LangGraph results still need configured installs. |
|
|
1135
1136
|
| LongMemEval local answer generation | With the same local Ollama `qwen2.5:1.5b`, WaveMind reaches `exact_match 0.240`, `contains_answer 0.380`, `token_f1 0.333`, and `evidence_recall@5 0.920`; Chroma and Qdrant static both reach `0.120`, `0.160`, `0.170`, and `0.600`. | This is the first checked-in end-to-end answer benchmark against Chroma/Qdrant. It is still a 50-question lightweight smoke run, not a full LongMemEval leaderboard score. |
|
|
1136
1137
|
|
|
@@ -1149,7 +1150,7 @@ Current read:
|
|
|
1149
1150
|
| Production index profile | Docker-backed 50000-vector profile for persisted FAISS, Qdrant service, and PostgreSQL/pgvector HNSW. | implemented | FAISS / Qdrant service / pgvector | Keep service-mode candidate generation above `0.95` recall@10 and below 10 ms average query latency at 50000 vectors. |
|
|
1150
1151
|
| Production load profile | 100k and 1M service-backed candidate-index checks with p95/p99 latency. | implemented | Qdrant service / pgvector HNSW / FAISS persisted | Keep 100k at recall@10 `1.000`; push 1M p99 below 100 ms with recall@10 >= 0.95. |
|
|
1151
1152
|
| Qdrant 1M HNSW ef sweep | One 1M Qdrant collection queried with multiple `hnsw_ef` values. | implemented | Qdrant service | Repeat with 100+ queries and collection-level HNSW build parameters before claiming a stable 1M SLO. |
|
|
1152
|
-
| Scale readiness profile | Cluster placement, node/zone-loss simulation, quorum report, replicated runtime, active-active delta sync, replicated snapshot/restore with offsite, archive, object-store latest-metadata/retention verification, hot-cache behavior, and structured/multimodal payload retrieval. | implemented | Mem0 / Zep / LangGraph persistent memory / GraphRAG target adapters | Keep quorum replication, namespace-delta sync, repair, offsite/archive/object-store backup lifecycle, and restore drills green while adding larger service-backed 10M load tests. |
|
|
1153
|
+
| Scale readiness profile | Cluster placement, node/zone-loss simulation, quorum report, replicated runtime, active-active delta sync, replicated snapshot/restore with offsite, archive, object-store latest-metadata/download/retention verification, hot-cache behavior, and structured/multimodal payload retrieval. | implemented | Mem0 / Zep / LangGraph persistent memory / GraphRAG target adapters | Keep quorum replication, namespace-delta sync, repair, offsite/archive/object-store backup lifecycle, and restore drills green while adding larger service-backed 10M load tests. |
|
|
1153
1154
|
| Memory competitor adapter profile | Dynamic-memory scenario wired for external memory frameworks. | implemented | Mem0 / Zep / LangGraph persistent memory | Report real competitor results only when their packages/services are explicitly configured. |
|
|
1154
1155
|
| [BEIR](https://github.com/beir-cellar/beir) | Standard zero-shot information retrieval quality. | planned | Chroma / Qdrant / FAISS | Stay within 0.02 `nDCG@10` on identical embeddings. |
|
|
1155
1156
|
| [MTEB Retrieval](https://github.com/embeddings-benchmark/mteb) | Separates encoder quality from retrieval-store quality. | planned | Chroma / Qdrant / FAISS | Prove WaveMind does not reduce same-embedding retrieval quality. |
|
|
@@ -490,15 +490,16 @@ Checked-in result:
|
|
|
490
490
|
|---|---:|
|
|
491
491
|
| Cluster planner | 4096 namespaces, 4 nodes, replication factor 2, node-loss availability `1.000`, zone-loss availability `1.000`, write quorum `2`. |
|
|
492
492
|
| Hot cache | 2000 lookups, hit rate `0.920`, p99 lookup `0.003 ms`. |
|
|
493
|
-
| Replicated runtime | 3 physical WaveMind stores, replication factor 3, write quorum 2, node-loss recall `true`, repair copied `1` missing record, tombstone repair deleted `1` stale record, p99 query-after-loss `1.
|
|
494
|
-
| Active-active delta sync | 2 regions, bidirectional convergence `true`, stale import suppressed after delete `true`, tombstone convergence `true`, sync `
|
|
495
|
-
| Replicated snapshot job | 3 replica files, manifest checksum validation `true`, offsite mirror validation `true`, portable archive validation `true`, S3-compatible upload validation `true`, latest remote archive metadata validation `true`, object-store retention pruned `2`, archive restore `
|
|
496
|
-
| Structured payloads | image/audio/table/event retrieval, precision@1 `1.000`, p99 `0.
|
|
493
|
+
| Replicated runtime | 3 physical WaveMind stores, replication factor 3, write quorum 2, node-loss recall `true`, repair copied `1` missing record, tombstone repair deleted `1` stale record, p99 query-after-loss `1.96 ms`. |
|
|
494
|
+
| Active-active delta sync | 2 regions, bidirectional convergence `true`, stale import suppressed after delete `true`, tombstone convergence `true`, sync `114.71 ms`. |
|
|
495
|
+
| Replicated snapshot job | 3 replica files, manifest checksum validation `true`, offsite mirror validation `true`, portable archive validation `true`, S3-compatible upload validation `true`, latest remote archive metadata validation `true`, remote archive download validation `true`, object-store retention pruned `2`, archive restore `47.91 ms`. |
|
|
496
|
+
| Structured payloads | image/audio/table/event retrieval, precision@1 `1.000`, p99 `0.80 ms`. |
|
|
497
497
|
|
|
498
498
|
This profile validates routing, quorum-replicated runtime behavior, cache
|
|
499
499
|
behavior, active-active namespace delta sync, replicated snapshot/restore, and
|
|
500
500
|
structured payload handling, including verified offsite, archive, object-store
|
|
501
|
-
latest lookup, object-store retention, and archive
|
|
501
|
+
latest lookup, object-store download, object-store retention, and archive
|
|
502
|
+
restore.
|
|
502
503
|
It is not a 10M-vector load test. Real 100k, 1M, and 10M latency claims should
|
|
503
504
|
come from service-backed FAISS/Qdrant/pgvector load tests on production-like
|
|
504
505
|
hardware.
|
|
@@ -1074,7 +1075,7 @@ Current read:
|
|
|
1074
1075
|
| LongMemEval 50-query smoke | On the first 50 non-abstention LongMemEval-S questions, WaveMind reaches `evidence_recall@5 0.920`, `precision@1 0.760`, and `MRR@5 0.827`; Chroma/Qdrant static reach `0.600`, `0.260`, and `0.385`. | This is the fast regression profile for checking current changes before rerunning the full LongMemEval profile. WaveMind wins on quality; latency still needs work. |
|
|
1075
1076
|
| ANN/index curve | At 50000 generated 128-d vectors, NumPy exact keeps `recall@10 1.000` at `6.49 ms`; quantized int8 keeps `0.934` at `24.92 ms`; Annoy is faster at `4.92 ms` but drops to `0.730` recall; Qdrant local keeps `1.000` recall at `43.49 ms`. | Current local scale boundary is clear: quantized search needs kernel work, Annoy needs tuning/FAISS, and Qdrant should be tested in service mode for a fair production comparison. |
|
|
1076
1077
|
| Production load | At 100000 generated 128-d vectors, service-mode Qdrant reaches `recall@10 1.000`, avg `10.28 ms`, p99 `21.26 ms`. At 1M, tuned Qdrant reaches `recall@10 0.984`, avg `116.80 ms`, p99 `209.28 ms`; an EF sweep finds `recall@10 0.977`, avg `64.76 ms`, p99 `103.77 ms` at `hnsw_ef=2048` on 30 queries. | 100k is production-grade on the tested machine. 1M recall is now strong, but p99 still needs tuning before claiming a stable sub-100 ms SLO. |
|
|
1077
|
-
| Scale readiness | Deterministic 1M-memory simulation validates 4096 namespace placements over 4 nodes with replication factor 2, node-loss availability `1.000`, zone-loss availability `1.000`, hot-cache hit rate `0.920`, quorum-replicated runtime recall after node loss, missing-record repair, tombstone repair, active-active delta sync, checksummed replicated snapshot/restore, offsite mirror verification, portable archive verification, S3-compatible upload/latest-metadata/retention verification, and structured payload precision@1 `1.000`. | This proves routing, cache, payload, replicated-runtime, namespace-delta, offsite/archive/object-store backup lifecycle, and restore-drill foundations. It is not a 10M-vector latency claim; real 10M latency still needs service-backed load tests on larger hardware. |
|
|
1078
|
+
| Scale readiness | Deterministic 1M-memory simulation validates 4096 namespace placements over 4 nodes with replication factor 2, node-loss availability `1.000`, zone-loss availability `1.000`, hot-cache hit rate `0.920`, quorum-replicated runtime recall after node loss, missing-record repair, tombstone repair, active-active delta sync, checksummed replicated snapshot/restore, offsite mirror verification, portable archive verification, S3-compatible upload/latest-metadata/download/retention verification, and structured payload precision@1 `1.000`. | This proves routing, cache, payload, replicated-runtime, namespace-delta, offsite/archive/object-store backup lifecycle, and restore-drill foundations. It is not a 10M-vector latency claim; real 10M latency still needs service-backed load tests on larger hardware. |
|
|
1078
1079
|
| Memory competitor adapters | WaveMind reaches `precision@1 0.80`, `precision@3 1.00`, stale suppression `1.00` on the small adapter profile. Mem0, Zep, and LangGraph are listed as skipped unless their real packages/services are configured. | This prevents fake competitor claims. The adapter harness is ready; real Mem0/Zep/LangGraph results still need configured installs. |
|
|
1079
1080
|
| LongMemEval local answer generation | With the same local Ollama `qwen2.5:1.5b`, WaveMind reaches `exact_match 0.240`, `contains_answer 0.380`, `token_f1 0.333`, and `evidence_recall@5 0.920`; Chroma and Qdrant static both reach `0.120`, `0.160`, `0.170`, and `0.600`. | This is the first checked-in end-to-end answer benchmark against Chroma/Qdrant. It is still a 50-question lightweight smoke run, not a full LongMemEval leaderboard score. |
|
|
1080
1081
|
|
|
@@ -1093,7 +1094,7 @@ Current read:
|
|
|
1093
1094
|
| Production index profile | Docker-backed 50000-vector profile for persisted FAISS, Qdrant service, and PostgreSQL/pgvector HNSW. | implemented | FAISS / Qdrant service / pgvector | Keep service-mode candidate generation above `0.95` recall@10 and below 10 ms average query latency at 50000 vectors. |
|
|
1094
1095
|
| Production load profile | 100k and 1M service-backed candidate-index checks with p95/p99 latency. | implemented | Qdrant service / pgvector HNSW / FAISS persisted | Keep 100k at recall@10 `1.000`; push 1M p99 below 100 ms with recall@10 >= 0.95. |
|
|
1095
1096
|
| Qdrant 1M HNSW ef sweep | One 1M Qdrant collection queried with multiple `hnsw_ef` values. | implemented | Qdrant service | Repeat with 100+ queries and collection-level HNSW build parameters before claiming a stable 1M SLO. |
|
|
1096
|
-
| Scale readiness profile | Cluster placement, node/zone-loss simulation, quorum report, replicated runtime, active-active delta sync, replicated snapshot/restore with offsite, archive, object-store latest-metadata/retention verification, hot-cache behavior, and structured/multimodal payload retrieval. | implemented | Mem0 / Zep / LangGraph persistent memory / GraphRAG target adapters | Keep quorum replication, namespace-delta sync, repair, offsite/archive/object-store backup lifecycle, and restore drills green while adding larger service-backed 10M load tests. |
|
|
1097
|
+
| Scale readiness profile | Cluster placement, node/zone-loss simulation, quorum report, replicated runtime, active-active delta sync, replicated snapshot/restore with offsite, archive, object-store latest-metadata/download/retention verification, hot-cache behavior, and structured/multimodal payload retrieval. | implemented | Mem0 / Zep / LangGraph persistent memory / GraphRAG target adapters | Keep quorum replication, namespace-delta sync, repair, offsite/archive/object-store backup lifecycle, and restore drills green while adding larger service-backed 10M load tests. |
|
|
1097
1098
|
| Memory competitor adapter profile | Dynamic-memory scenario wired for external memory frameworks. | implemented | Mem0 / Zep / LangGraph persistent memory | Report real competitor results only when their packages/services are explicitly configured. |
|
|
1098
1099
|
| [BEIR](https://github.com/beir-cellar/beir) | Standard zero-shot information retrieval quality. | planned | Chroma / Qdrant / FAISS | Stay within 0.02 `nDCG@10` on identical embeddings. |
|
|
1099
1100
|
| [MTEB Retrieval](https://github.com/embeddings-benchmark/mteb) | Separates encoder quality from retrieval-store quality. | planned | Chroma / Qdrant / FAISS | Prove WaveMind does not reduce same-embedding retrieval quality. |
|
|
@@ -21,7 +21,7 @@ This is a compact reader-facing view of checked-in benchmark results. It is not
|
|
|
21
21
|
| Production load profile 100k | production-scale | Recall@k | WaveMind pgvector: 0.736 / 17.8 ms | Qdrant service: 1 / 10.3 ms | Baseline leads on quality |
|
|
22
22
|
| Production load profile 1M | production-scale | Recall@k | - | Qdrant service: 0.984 / 116.8 ms | No WaveMind result |
|
|
23
23
|
| Qdrant 1M HNSW ef sweep | production-scale | Recall@k | - | hnsw_ef=2048: 0.977 / 64.8 ms | No WaveMind result |
|
|
24
|
-
| Scale readiness profile | production-scale | precision@1 | WaveMind structured payloads: 1 / 0.
|
|
24
|
+
| Scale readiness profile | production-scale | precision@1 | WaveMind structured payloads: 1 / 0.588 ms | - | WaveMind-only check |
|
|
25
25
|
| Memory competitor adapter profile | agent-memory | precision@1 | WaveMind: 0.8 / 0.554 ms | - | WaveMind-only check |
|
|
26
26
|
| [LongMemEval answer generation](https://github.com/xiaowu0162/LongMemEval) | long-term-agent-memory | token F1 | WaveMind + qwen2.5:1.5b: 0.333 / - | Chroma static + qwen2.5:1.5b: 0.17 / - | WaveMind leads on quality |
|
|
27
27
|
|
|
@@ -24,7 +24,7 @@ Planned rows are not claimed wins. They are the public proof path WaveMind must
|
|
|
24
24
|
| Production load profile 100k | production-scale | implemented | Qdrant service: Recall@k 1.00, avg latency 10.3, p95 latency 19.0, p99 latency ms 21.3, build ms 27439.3<br>WaveMind pgvector: Recall@k 0.74, avg latency 17.8, p95 latency 23.5, build ms 455703.7<br>WaveMind faiss-persisted: skipped - Set WAVEMIND_FAISS_PATH to use the persisted FAISS backend | Tune pgvector HNSW build/search parameters and add persisted FAISS from the Linux benchmark container. |
|
|
25
25
|
| Production load profile 1M | production-scale | implemented | Qdrant service: Recall@k 0.98, avg latency 116.8, p95 latency 153.8, p99 latency ms 209.3, build ms 450674.6 | Tune Qdrant indexing/search params further, then add FAISS IVF/HNSW and pgvector 1M profiles on a larger disk. |
|
|
26
26
|
| Qdrant 1M HNSW ef sweep | production-scale | implemented | hnsw_ef=512: Recall@k 0.75, avg latency 47.2, p95 latency 68.5, p99 latency ms 68.5, max latency ms 68.5<br>hnsw_ef=768: Recall@k 0.85, avg latency 44.0, p95 latency 69.1, p99 latency ms 69.8, max latency ms 69.8<br>hnsw_ef=1024: Recall@k 0.88, avg latency 62.9, p95 latency 81.1, p99 latency ms 85.5, max latency ms 85.5<br>hnsw_ef=1536: Recall@k 0.94, avg latency 65.6, p95 latency 111.2, p99 latency ms 119.7, max latency ms 119.7<br>hnsw_ef=2048: Recall@k 0.98, avg latency 64.8, p95 latency 91.2, p99 latency ms 103.8, max latency ms 103.8 | Repeat with 100+ queries and collection-level HNSW build parameters before claiming a stable production SLO. |
|
|
27
|
-
| Scale readiness profile | production-scale | implemented | WaveMind cluster planner: simulated memories 1000000, namespaces 4096, nodes 4, replication factor 2, node loss min availability 1.00, zone loss min availability 1.00, read quorum 1, write quorum 2, placement ms
|
|
27
|
+
| Scale readiness profile | production-scale | implemented | WaveMind cluster planner: simulated memories 1000000, namespaces 4096, nodes 4, replication factor 2, node loss min availability 1.00, zone loss min availability 1.00, read quorum 1, write quorum 2, placement ms 78.8<br>WaveMind hot cache: queries 2000, capacity 512, hit rate 0.92, evictions 0, p99 lookup ms 0.00<br>WaveMind replicated runtime: nodes 3, replication factor 3, write quorum 2, read quorum 1, recalled after node loss True, repair copied records 1, tombstone repair deleted records 1, p99 query after loss ms 1.96<br>WaveMind active-active delta sync: regions 2, replication factor per region 3, records imported 6, converged after bidirectional sync True, suppressed stale import after delete True, tombstone converged True, sync ms 114.7<br>WaveMind replicated snapshot: nodes 3, manifest healthy True, offsite verified True, archive verified True, object store verified True, object store latest verified True, object store pruned 2, object store download verified True, restored files 3, recalled after restore node loss True, snapshot ms 176.1, restore ms 47.9<br>WaveMind structured payloads: queries 4, precision@1 1.00, avg latency 0.59, p99 latency ms 0.80 | Move from local replicated runtime to service-backed replicated runs, real cloud object-store disaster-recovery drills, and larger 10M candidate-index load tests. |
|
|
28
28
|
| Memory competitor adapter profile | agent-memory | implemented | WaveMind: precision@1 0.80, precision@3 1.00, stale suppression 1.00, avg latency 0.55, p95 latency 0.83<br>Mem0: skipped - Install Mem0 to run this adapter profile: pip install "mem0ai"<br>Zep: skipped - Install the Zep client package and set ZEP_API_KEY or ZEP_API_URL.<br>LangGraph persistent memory: skipped - Install LangGraph to run this adapter profile: pip install "langgraph" | Add documented setup commands for each competitor adapter and store checked-in results only when those real adapters run. |
|
|
29
29
|
| [LongMemEval answer generation](https://github.com/xiaowu0162/LongMemEval) | long-term-agent-memory | implemented | extractive smoke: queries 20, evidence recall@k 1.00, exact match 0.00, contains answer 0.05, token f1 0.02, avg retrieval ms 3.79, avg generation ms 0.77<br>WaveMind + qwen2.5:0.5b: queries 50, evidence recall@k 0.92, exact match 0.12, contains answer 0.18, token f1 0.18, avg retrieval ms 2.98, avg generation ms 1428.2<br>Chroma static + qwen2.5:0.5b: queries 50, evidence recall@k 0.60, exact match 0.10, contains answer 0.12, token f1 0.13, avg retrieval ms 4.10, avg generation ms 1234.7<br>Qdrant static + qwen2.5:0.5b: queries 50, evidence recall@k 0.60, exact match 0.10, contains answer 0.12, token f1 0.13, avg retrieval ms 63.8, avg generation ms 893.5<br>WaveMind + qwen2.5:1.5b: queries 50, evidence recall@k 0.92, exact match 0.24, contains answer 0.38, token f1 0.33, avg retrieval ms 2.00, avg generation ms 2153.0<br>Chroma static + qwen2.5:1.5b: queries 50, evidence recall@k 0.60, exact match 0.12, contains answer 0.16, token f1 0.17, avg retrieval ms 7.05, avg generation ms 2082.4<br>Qdrant static + qwen2.5:1.5b: queries 50, evidence recall@k 0.60, exact match 0.12, contains answer 0.16, token f1 0.17, avg retrieval ms 100.2, avg generation ms 758.1 | Run all 470 non-abstention questions with a stronger local/API model and add faithfulness/abstention scoring. |
|
|
30
30
|
|
|
@@ -764,14 +764,14 @@
|
|
|
764
764
|
"zone_loss_min_availability": 1.0,
|
|
765
765
|
"read_quorum": 1,
|
|
766
766
|
"write_quorum": 2,
|
|
767
|
-
"placement_ms":
|
|
767
|
+
"placement_ms": 78.79679999314249
|
|
768
768
|
},
|
|
769
769
|
"WaveMind hot cache": {
|
|
770
770
|
"queries": 2000,
|
|
771
771
|
"capacity": 512,
|
|
772
772
|
"hit_rate": 0.92,
|
|
773
773
|
"evictions": 0,
|
|
774
|
-
"p99_lookup_ms": 0.
|
|
774
|
+
"p99_lookup_ms": 0.003800028935074806
|
|
775
775
|
},
|
|
776
776
|
"WaveMind replicated runtime": {
|
|
777
777
|
"nodes": 3,
|
|
@@ -781,7 +781,7 @@
|
|
|
781
781
|
"recalled_after_node_loss": true,
|
|
782
782
|
"repair_copied_records": 1,
|
|
783
783
|
"tombstone_repair_deleted_records": 1,
|
|
784
|
-
"p99_query_after_loss_ms": 1.
|
|
784
|
+
"p99_query_after_loss_ms": 1.9631999894045293
|
|
785
785
|
},
|
|
786
786
|
"WaveMind active-active delta sync": {
|
|
787
787
|
"regions": 2,
|
|
@@ -790,7 +790,7 @@
|
|
|
790
790
|
"converged_after_bidirectional_sync": true,
|
|
791
791
|
"suppressed_stale_import_after_delete": true,
|
|
792
792
|
"tombstone_converged": true,
|
|
793
|
-
"sync_ms":
|
|
793
|
+
"sync_ms": 114.70850004116073
|
|
794
794
|
},
|
|
795
795
|
"WaveMind replicated snapshot": {
|
|
796
796
|
"nodes": 3,
|
|
@@ -800,19 +800,20 @@
|
|
|
800
800
|
"object_store_verified": true,
|
|
801
801
|
"object_store_latest_verified": true,
|
|
802
802
|
"object_store_pruned": 2,
|
|
803
|
+
"object_store_download_verified": true,
|
|
803
804
|
"restored_files": 3,
|
|
804
805
|
"recalled_after_restore_node_loss": true,
|
|
805
|
-
"snapshot_ms":
|
|
806
|
-
"restore_ms":
|
|
806
|
+
"snapshot_ms": 176.10959999728948,
|
|
807
|
+
"restore_ms": 47.905499988701195
|
|
807
808
|
},
|
|
808
809
|
"WaveMind structured payloads": {
|
|
809
810
|
"queries": 4,
|
|
810
811
|
"precision_at_1": 1.0,
|
|
811
|
-
"avg_latency_ms": 0.
|
|
812
|
-
"p99_latency_ms": 0.
|
|
812
|
+
"avg_latency_ms": 0.5878500087419525,
|
|
813
|
+
"p99_latency_ms": 0.8010999881662428
|
|
813
814
|
}
|
|
814
815
|
},
|
|
815
|
-
"target": "Prove the production foundation before heavier 100k, 1M, and 10M vector load tests: deterministic placement, survivable replicas, active-active sync, offsite/archive/object-store upload/latest-metadata/retention restore drills, hot-cache behavior, and structured payload recall.",
|
|
816
|
+
"target": "Prove the production foundation before heavier 100k, 1M, and 10M vector load tests: deterministic placement, survivable replicas, active-active sync, offsite/archive/object-store upload/latest-metadata/download/retention restore drills, hot-cache behavior, and structured payload recall.",
|
|
816
817
|
"next_step": "Move from local replicated runtime to service-backed replicated runs, real cloud object-store disaster-recovery drills, and larger 10M candidate-index load tests."
|
|
817
818
|
},
|
|
818
819
|
{
|
|
@@ -770,6 +770,7 @@ def _implemented_entries(root: Path) -> list[dict[str, Any]]:
|
|
|
770
770
|
"object_store_verified",
|
|
771
771
|
"object_store_latest_verified",
|
|
772
772
|
"object_store_pruned",
|
|
773
|
+
"object_store_download_verified",
|
|
773
774
|
"restored_files",
|
|
774
775
|
"recalled_after_restore_node_loss",
|
|
775
776
|
"snapshot_ms",
|
|
@@ -786,7 +787,7 @@ def _implemented_entries(root: Path) -> list[dict[str, Any]]:
|
|
|
786
787
|
),
|
|
787
788
|
),
|
|
788
789
|
},
|
|
789
|
-
"target": "Prove the production foundation before heavier 100k, 1M, and 10M vector load tests: deterministic placement, survivable replicas, active-active sync, offsite/archive/object-store upload/latest-metadata/retention restore drills, hot-cache behavior, and structured payload recall.",
|
|
790
|
+
"target": "Prove the production foundation before heavier 100k, 1M, and 10M vector load tests: deterministic placement, survivable replicas, active-active sync, offsite/archive/object-store upload/latest-metadata/download/retention restore drills, hot-cache behavior, and structured payload recall.",
|
|
790
791
|
"next_step": "Move from local replicated runtime to service-backed replicated runs, real cloud object-store disaster-recovery drills, and larger 10M candidate-index load tests.",
|
|
791
792
|
},
|
|
792
793
|
{
|
|
@@ -6,6 +6,7 @@ import statistics
|
|
|
6
6
|
import sys
|
|
7
7
|
import tempfile
|
|
8
8
|
import time
|
|
9
|
+
from io import BytesIO
|
|
9
10
|
from pathlib import Path
|
|
10
11
|
|
|
11
12
|
PROJECT_ROOT = Path(__file__).resolve().parents[1]
|
|
@@ -82,6 +83,9 @@ class InMemoryS3Client:
|
|
|
82
83
|
deleted.append({"Key": key})
|
|
83
84
|
return {"Deleted": deleted}
|
|
84
85
|
|
|
86
|
+
def get_object(self, Bucket: str, Key: str) -> dict[str, object]:
|
|
87
|
+
return {"Body": BytesIO(self.objects[(Bucket, Key)]["Body"])}
|
|
88
|
+
|
|
85
89
|
|
|
86
90
|
def percentile(values: list[float], pct: float) -> float:
|
|
87
91
|
if not values:
|
|
@@ -408,10 +412,22 @@ def run_replicated_snapshot_profile() -> dict[str, object]:
|
|
|
408
412
|
snapshot_ms = (time.perf_counter() - snapshot_started) * 1000.0
|
|
409
413
|
health = ReplicatedWaveMind.verify_snapshot(snapshot_job.snapshot_path)
|
|
410
414
|
latest_object_archive = object_store.latest_archive()
|
|
415
|
+
object_store_download_verified = False
|
|
416
|
+
downloaded_archive = None
|
|
417
|
+
if latest_object_archive is not None:
|
|
418
|
+
downloaded_archive = object_store.download_archive(
|
|
419
|
+
latest_object_archive.uri,
|
|
420
|
+
root / "object-store-downloads",
|
|
421
|
+
)
|
|
422
|
+
object_store_download_verified = bool(
|
|
423
|
+
ReplicatedWaveMind.verify_snapshot_archive(downloaded_archive)[
|
|
424
|
+
"healthy"
|
|
425
|
+
]
|
|
426
|
+
)
|
|
411
427
|
|
|
412
428
|
restore_started = time.perf_counter()
|
|
413
429
|
restored, restore = ReplicatedWaveMind.restore_snapshot_archive(
|
|
414
|
-
snapshot_job.archive_path,
|
|
430
|
+
downloaded_archive or snapshot_job.archive_path,
|
|
415
431
|
root / "restored",
|
|
416
432
|
width=16,
|
|
417
433
|
height=16,
|
|
@@ -438,6 +454,7 @@ def run_replicated_snapshot_profile() -> dict[str, object]:
|
|
|
438
454
|
latest_object_archive and latest_object_archive.verified
|
|
439
455
|
),
|
|
440
456
|
"object_store_pruned": len(snapshot_job.pruned_object_store),
|
|
457
|
+
"object_store_download_verified": object_store_download_verified,
|
|
441
458
|
"total_bytes": snapshot_job.total_bytes,
|
|
442
459
|
"snapshot_ms": snapshot_ms,
|
|
443
460
|
"restore_ms": restore_ms,
|
|
@@ -553,7 +570,7 @@ def run_benchmark(
|
|
|
553
570
|
"node/zone loss simulation, quorum-replicated runtime behavior, "
|
|
554
571
|
"active-active delta sync, replicated snapshot/offsite/archive "
|
|
555
572
|
"restore, S3-compatible object-store upload/latest-metadata/"
|
|
556
|
-
"retention verification, hot-cache behavior, and structured payload retrieval. "
|
|
573
|
+
"download/retention verification, hot-cache behavior, and structured payload retrieval. "
|
|
557
574
|
"This is not a 10M-vector database load test."
|
|
558
575
|
),
|
|
559
576
|
},
|
|
@@ -605,6 +622,7 @@ def main() -> int:
|
|
|
605
622
|
print(f"| replicated snapshot | object_store_verified | {result['object_store_verified']} |")
|
|
606
623
|
print(f"| replicated snapshot | object_store_latest_verified | {result['object_store_latest_verified']} |")
|
|
607
624
|
print(f"| replicated snapshot | object_store_pruned | {result['object_store_pruned']} |")
|
|
625
|
+
print(f"| replicated snapshot | object_store_download_verified | {result['object_store_download_verified']} |")
|
|
608
626
|
print(f"| replicated snapshot | recalled_after_restore_node_loss | {result['recalled_after_restore_node_loss']} |")
|
|
609
627
|
else:
|
|
610
628
|
print(f"| structured payloads | precision@1 | {result['precision_at_1']:.3f} |")
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
"namespace_count": 4096,
|
|
6
6
|
"node_count": 4,
|
|
7
7
|
"replication_factor": 2,
|
|
8
|
-
"description": "Deterministic scale-readiness profile for cluster placement, node/zone loss simulation, quorum-replicated runtime behavior, active-active delta sync, replicated snapshot/offsite/archive restore, S3-compatible object-store upload/latest-metadata/retention verification, hot-cache behavior, and structured payload retrieval. This is not a 10M-vector database load test."
|
|
8
|
+
"description": "Deterministic scale-readiness profile for cluster placement, node/zone loss simulation, quorum-replicated runtime behavior, active-active delta sync, replicated snapshot/offsite/archive restore, S3-compatible object-store upload/latest-metadata/download/retention verification, hot-cache behavior, and structured payload retrieval. This is not a 10M-vector database load test."
|
|
9
9
|
},
|
|
10
10
|
"results": [
|
|
11
11
|
{
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"namespaces": 4096,
|
|
15
15
|
"nodes": 4,
|
|
16
16
|
"replication_factor": 2,
|
|
17
|
-
"placement_ms":
|
|
17
|
+
"placement_ms": 78.79679999314249,
|
|
18
18
|
"max_replica_load": 2413,
|
|
19
19
|
"min_replica_load": 1728,
|
|
20
20
|
"replica_load_stdev": 316.54462560593254,
|
|
@@ -32,8 +32,8 @@
|
|
|
32
32
|
"capacity": 512,
|
|
33
33
|
"hit_rate": 0.92,
|
|
34
34
|
"evictions": 0,
|
|
35
|
-
"avg_lookup_ms": 0.
|
|
36
|
-
"p99_lookup_ms": 0.
|
|
35
|
+
"avg_lookup_ms": 0.0016424998175352812,
|
|
36
|
+
"p99_lookup_ms": 0.003800028935074806
|
|
37
37
|
},
|
|
38
38
|
{
|
|
39
39
|
"engine": "WaveMind replicated runtime",
|
|
@@ -47,8 +47,8 @@
|
|
|
47
47
|
"tombstone_suppressed_before_repair": true,
|
|
48
48
|
"tombstone_suppressed_after_repair": true,
|
|
49
49
|
"tombstone_repair_deleted_records": 1,
|
|
50
|
-
"avg_query_after_loss_ms": 1.
|
|
51
|
-
"p99_query_after_loss_ms": 1.
|
|
50
|
+
"avg_query_after_loss_ms": 1.9631999894045293,
|
|
51
|
+
"p99_query_after_loss_ms": 1.9631999894045293
|
|
52
52
|
},
|
|
53
53
|
{
|
|
54
54
|
"engine": "WaveMind active-active delta sync",
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
"replication_factor_per_region": 3,
|
|
57
57
|
"records_imported": 6,
|
|
58
58
|
"converged_after_bidirectional_sync": true,
|
|
59
|
-
"sync_ms":
|
|
59
|
+
"sync_ms": 114.70850004116073,
|
|
60
60
|
"suppressed_stale_import_after_delete": true,
|
|
61
61
|
"tombstone_deleted_records": 3,
|
|
62
62
|
"tombstone_converged": true
|
|
@@ -70,9 +70,10 @@
|
|
|
70
70
|
"object_store_verified": true,
|
|
71
71
|
"object_store_latest_verified": true,
|
|
72
72
|
"object_store_pruned": 2,
|
|
73
|
+
"object_store_download_verified": true,
|
|
73
74
|
"total_bytes": 110592,
|
|
74
|
-
"snapshot_ms":
|
|
75
|
-
"restore_ms":
|
|
75
|
+
"snapshot_ms": 176.10959999728948,
|
|
76
|
+
"restore_ms": 47.905499988701195,
|
|
76
77
|
"restored_files": 3,
|
|
77
78
|
"recalled_after_restore_node_loss": true
|
|
78
79
|
},
|
|
@@ -86,8 +87,8 @@
|
|
|
86
87
|
],
|
|
87
88
|
"queries": 4,
|
|
88
89
|
"precision_at_1": 1.0,
|
|
89
|
-
"avg_latency_ms": 0.
|
|
90
|
-
"p99_latency_ms": 0.
|
|
90
|
+
"avg_latency_ms": 0.5878500087419525,
|
|
91
|
+
"p99_latency_ms": 0.8010999881662428
|
|
91
92
|
}
|
|
92
93
|
]
|
|
93
94
|
}
|
|
@@ -31,7 +31,7 @@ purpose-built vector databases.
|
|
|
31
31
|
| NoMIRACL Russian retrieval | WaveMind reaches `nDCG@10 0.434`; Chroma reaches `0.435`; Qdrant reaches `0.433`. Chroma is faster. | `benchmarks/nomiracl_russian_results.json` | `python benchmarks/nomiracl_russian_benchmark.py --engines wavemind chroma qdrant --output benchmarks/nomiracl_russian_results.json` |
|
|
32
32
|
| Production index profile | At 50000 vectors, persisted FAISS and Qdrant service both reach `recall@10 1.000`; pgvector with `ef_search=400` reaches `0.811`. | `benchmarks/production_index_profile_results.json` | `docker compose -f examples/production-index-profile/docker-compose.yml run --rm benchmark` |
|
|
33
33
|
| Production load profile | At 100000 vectors, Qdrant service reaches `recall@10 1.000`, avg `10.28 ms`, p99 `21.26 ms`. At 1M vectors, tuned Qdrant reaches `0.984`, avg `116.80 ms`, p99 `209.28 ms`; the best EF-sweep point reaches `0.977`, avg `64.76 ms`, p99 `103.77 ms`. | `benchmarks/production_load_qdrant_100k_tuned_results.json`, `benchmarks/production_load_qdrant_1m_tuned_results.json`, `benchmarks/production_load_qdrant_1m_ef_sweep_results.json` | `python benchmarks/production_load_benchmark.py --sizes 100000 --engines qdrant-service` |
|
|
34
|
-
| Scale readiness profile | Deterministic 1M-memory simulation: namespace placement survives node loss and zone loss at `1.000`, hot-cache hit rate is `0.920`, replicated runtime survives node loss, active-active delta sync converges, replicated snapshot restore survives primary loss, offsite mirror verification is `true`, portable archive verification is `true`, S3-compatible upload verification is `true`, latest remote archive metadata verification is `true`, object-store retention prunes `2` stale archives, structured payload precision@1 is `1.000`. | `benchmarks/scale_readiness_results.json` | `python benchmarks/scale_readiness_benchmark.py --simulated-memories 1000000 --output benchmarks/scale_readiness_results.json` |
|
|
34
|
+
| Scale readiness profile | Deterministic 1M-memory simulation: namespace placement survives node loss and zone loss at `1.000`, hot-cache hit rate is `0.920`, replicated runtime survives node loss, active-active delta sync converges, replicated snapshot restore survives primary loss, offsite mirror verification is `true`, portable archive verification is `true`, S3-compatible upload verification is `true`, latest remote archive metadata verification is `true`, remote archive download verification is `true`, object-store retention prunes `2` stale archives, structured payload precision@1 is `1.000`. | `benchmarks/scale_readiness_results.json` | `python benchmarks/scale_readiness_benchmark.py --simulated-memories 1000000 --output benchmarks/scale_readiness_results.json` |
|
|
35
35
|
| Memory competitor adapter profile | WaveMind reaches `precision@1 0.80`, `precision@3 1.00`, stale suppression `1.00`; Mem0, Zep, and LangGraph are skipped until real packages/services are configured. | `benchmarks/memory_competitor_results.json` | `python benchmarks/memory_competitor_benchmark.py --engines wavemind mem0 zep langgraph` |
|
|
36
36
|
|
|
37
37
|
The generated matrix view is in `benchmarks/BENCHMARK_REPORT.md`; the compact
|
|
@@ -53,8 +53,8 @@ policy matters more than raw vector-database scale:
|
|
|
53
53
|
namespace placement, quorum-replicated runtime behavior, active-active
|
|
54
54
|
namespace delta sync, checksummed replicated snapshot/restore with offsite
|
|
55
55
|
and portable-archive verification, S3-compatible object-store upload,
|
|
56
|
-
latest-archive, and retention verification,
|
|
57
|
-
structured-payload retrieval.
|
|
56
|
+
latest-archive metadata, remote download, and retention verification,
|
|
57
|
+
hot-cache behavior, and structured-payload retrieval.
|
|
58
58
|
- Dynamic policy already covers hot memory, stale suppression, corrections,
|
|
59
59
|
TTL, and namespace isolation.
|
|
60
60
|
- Field self-consolidation is available through `WaveMind.consolidate_concepts()`,
|
|
@@ -68,8 +68,8 @@ policy matters more than raw vector-database scale:
|
|
|
68
68
|
- SQLite backup, timestamped retention, restore, admin-only HTTP backup,
|
|
69
69
|
replicated snapshot/restore, offsite-mirrored snapshot jobs, and verified
|
|
70
70
|
`.tar.gz` snapshot archives with S3-compatible upload, latest-archive lookup,
|
|
71
|
-
restore-from-latest support, and object-store
|
|
72
|
-
first durability layer.
|
|
71
|
+
restore-from-latest support, remote download verification, and object-store
|
|
72
|
+
retention are available as the first durability layer.
|
|
73
73
|
- Public retrieval evidence exists for LoCoMo, LongMemEval, and BEIR/SciFact,
|
|
74
74
|
but full answer-quality evaluation is still the next proof step.
|
|
75
75
|
|
|
@@ -248,10 +248,10 @@ Enterprise requirements:
|
|
|
248
248
|
- audit logs for remember, query, recall feedback, and forget;
|
|
249
249
|
- backup, restore, and point-in-time recovery. SQLite backup/restore and
|
|
250
250
|
replicated snapshot/restore, offsite-mirrored snapshot jobs, and portable
|
|
251
|
-
snapshot archives with S3-compatible upload, latest-archive lookup,
|
|
252
|
-
retention are implemented; point-in-time recovery,
|
|
253
|
-
disaster-recovery drills, and
|
|
254
|
-
|
|
251
|
+
snapshot archives with S3-compatible upload, latest-archive lookup, remote
|
|
252
|
+
download verification, and retention are implemented; point-in-time recovery,
|
|
253
|
+
real cloud disaster-recovery drills, and network-service consensus remain
|
|
254
|
+
future work;
|
|
255
255
|
- data residency controls;
|
|
256
256
|
- SSO/OAuth integration;
|
|
257
257
|
- SLOs for latency, throughput, and durability;
|
|
@@ -31,6 +31,7 @@ def test_scale_readiness_benchmark_covers_cluster_cache_and_payloads():
|
|
|
31
31
|
assert results["WaveMind replicated snapshot"]["object_store_verified"] is True
|
|
32
32
|
assert results["WaveMind replicated snapshot"]["object_store_latest_verified"] is True
|
|
33
33
|
assert results["WaveMind replicated snapshot"]["object_store_pruned"] == 2
|
|
34
|
+
assert results["WaveMind replicated snapshot"]["object_store_download_verified"] is True
|
|
34
35
|
assert results["WaveMind replicated snapshot"]["restored_files"] == 3
|
|
35
36
|
assert results["WaveMind replicated snapshot"]["recalled_after_restore_node_loss"] is True
|
|
36
37
|
assert results["WaveMind structured payloads"]["precision_at_1"] == 1.0
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: wavemind
|
|
3
|
-
Version: 2.3.
|
|
3
|
+
Version: 2.3.2
|
|
4
4
|
Summary: Local-first dynamic memory field with vector search and wave-field re-ranking
|
|
5
5
|
License-Expression: MIT
|
|
6
6
|
Project-URL: Homepage, https://github.com/CaspianG/wavemind
|
|
@@ -546,15 +546,16 @@ Checked-in result:
|
|
|
546
546
|
|---|---:|
|
|
547
547
|
| Cluster planner | 4096 namespaces, 4 nodes, replication factor 2, node-loss availability `1.000`, zone-loss availability `1.000`, write quorum `2`. |
|
|
548
548
|
| Hot cache | 2000 lookups, hit rate `0.920`, p99 lookup `0.003 ms`. |
|
|
549
|
-
| Replicated runtime | 3 physical WaveMind stores, replication factor 3, write quorum 2, node-loss recall `true`, repair copied `1` missing record, tombstone repair deleted `1` stale record, p99 query-after-loss `1.
|
|
550
|
-
| Active-active delta sync | 2 regions, bidirectional convergence `true`, stale import suppressed after delete `true`, tombstone convergence `true`, sync `
|
|
551
|
-
| Replicated snapshot job | 3 replica files, manifest checksum validation `true`, offsite mirror validation `true`, portable archive validation `true`, S3-compatible upload validation `true`, latest remote archive metadata validation `true`, object-store retention pruned `2`, archive restore `
|
|
552
|
-
| Structured payloads | image/audio/table/event retrieval, precision@1 `1.000`, p99 `0.
|
|
549
|
+
| Replicated runtime | 3 physical WaveMind stores, replication factor 3, write quorum 2, node-loss recall `true`, repair copied `1` missing record, tombstone repair deleted `1` stale record, p99 query-after-loss `1.96 ms`. |
|
|
550
|
+
| Active-active delta sync | 2 regions, bidirectional convergence `true`, stale import suppressed after delete `true`, tombstone convergence `true`, sync `114.71 ms`. |
|
|
551
|
+
| Replicated snapshot job | 3 replica files, manifest checksum validation `true`, offsite mirror validation `true`, portable archive validation `true`, S3-compatible upload validation `true`, latest remote archive metadata validation `true`, remote archive download validation `true`, object-store retention pruned `2`, archive restore `47.91 ms`. |
|
|
552
|
+
| Structured payloads | image/audio/table/event retrieval, precision@1 `1.000`, p99 `0.80 ms`. |
|
|
553
553
|
|
|
554
554
|
This profile validates routing, quorum-replicated runtime behavior, cache
|
|
555
555
|
behavior, active-active namespace delta sync, replicated snapshot/restore, and
|
|
556
556
|
structured payload handling, including verified offsite, archive, object-store
|
|
557
|
-
latest lookup, object-store retention, and archive
|
|
557
|
+
latest lookup, object-store download, object-store retention, and archive
|
|
558
|
+
restore.
|
|
558
559
|
It is not a 10M-vector load test. Real 100k, 1M, and 10M latency claims should
|
|
559
560
|
come from service-backed FAISS/Qdrant/pgvector load tests on production-like
|
|
560
561
|
hardware.
|
|
@@ -1130,7 +1131,7 @@ Current read:
|
|
|
1130
1131
|
| LongMemEval 50-query smoke | On the first 50 non-abstention LongMemEval-S questions, WaveMind reaches `evidence_recall@5 0.920`, `precision@1 0.760`, and `MRR@5 0.827`; Chroma/Qdrant static reach `0.600`, `0.260`, and `0.385`. | This is the fast regression profile for checking current changes before rerunning the full LongMemEval profile. WaveMind wins on quality; latency still needs work. |
|
|
1131
1132
|
| ANN/index curve | At 50000 generated 128-d vectors, NumPy exact keeps `recall@10 1.000` at `6.49 ms`; quantized int8 keeps `0.934` at `24.92 ms`; Annoy is faster at `4.92 ms` but drops to `0.730` recall; Qdrant local keeps `1.000` recall at `43.49 ms`. | Current local scale boundary is clear: quantized search needs kernel work, Annoy needs tuning/FAISS, and Qdrant should be tested in service mode for a fair production comparison. |
|
|
1132
1133
|
| Production load | At 100000 generated 128-d vectors, service-mode Qdrant reaches `recall@10 1.000`, avg `10.28 ms`, p99 `21.26 ms`. At 1M, tuned Qdrant reaches `recall@10 0.984`, avg `116.80 ms`, p99 `209.28 ms`; an EF sweep finds `recall@10 0.977`, avg `64.76 ms`, p99 `103.77 ms` at `hnsw_ef=2048` on 30 queries. | 100k is production-grade on the tested machine. 1M recall is now strong, but p99 still needs tuning before claiming a stable sub-100 ms SLO. |
|
|
1133
|
-
| Scale readiness | Deterministic 1M-memory simulation validates 4096 namespace placements over 4 nodes with replication factor 2, node-loss availability `1.000`, zone-loss availability `1.000`, hot-cache hit rate `0.920`, quorum-replicated runtime recall after node loss, missing-record repair, tombstone repair, active-active delta sync, checksummed replicated snapshot/restore, offsite mirror verification, portable archive verification, S3-compatible upload/latest-metadata/retention verification, and structured payload precision@1 `1.000`. | This proves routing, cache, payload, replicated-runtime, namespace-delta, offsite/archive/object-store backup lifecycle, and restore-drill foundations. It is not a 10M-vector latency claim; real 10M latency still needs service-backed load tests on larger hardware. |
|
|
1134
|
+
| Scale readiness | Deterministic 1M-memory simulation validates 4096 namespace placements over 4 nodes with replication factor 2, node-loss availability `1.000`, zone-loss availability `1.000`, hot-cache hit rate `0.920`, quorum-replicated runtime recall after node loss, missing-record repair, tombstone repair, active-active delta sync, checksummed replicated snapshot/restore, offsite mirror verification, portable archive verification, S3-compatible upload/latest-metadata/download/retention verification, and structured payload precision@1 `1.000`. | This proves routing, cache, payload, replicated-runtime, namespace-delta, offsite/archive/object-store backup lifecycle, and restore-drill foundations. It is not a 10M-vector latency claim; real 10M latency still needs service-backed load tests on larger hardware. |
|
|
1134
1135
|
| Memory competitor adapters | WaveMind reaches `precision@1 0.80`, `precision@3 1.00`, stale suppression `1.00` on the small adapter profile. Mem0, Zep, and LangGraph are listed as skipped unless their real packages/services are configured. | This prevents fake competitor claims. The adapter harness is ready; real Mem0/Zep/LangGraph results still need configured installs. |
|
|
1135
1136
|
| LongMemEval local answer generation | With the same local Ollama `qwen2.5:1.5b`, WaveMind reaches `exact_match 0.240`, `contains_answer 0.380`, `token_f1 0.333`, and `evidence_recall@5 0.920`; Chroma and Qdrant static both reach `0.120`, `0.160`, `0.170`, and `0.600`. | This is the first checked-in end-to-end answer benchmark against Chroma/Qdrant. It is still a 50-question lightweight smoke run, not a full LongMemEval leaderboard score. |
|
|
1136
1137
|
|
|
@@ -1149,7 +1150,7 @@ Current read:
|
|
|
1149
1150
|
| Production index profile | Docker-backed 50000-vector profile for persisted FAISS, Qdrant service, and PostgreSQL/pgvector HNSW. | implemented | FAISS / Qdrant service / pgvector | Keep service-mode candidate generation above `0.95` recall@10 and below 10 ms average query latency at 50000 vectors. |
|
|
1150
1151
|
| Production load profile | 100k and 1M service-backed candidate-index checks with p95/p99 latency. | implemented | Qdrant service / pgvector HNSW / FAISS persisted | Keep 100k at recall@10 `1.000`; push 1M p99 below 100 ms with recall@10 >= 0.95. |
|
|
1151
1152
|
| Qdrant 1M HNSW ef sweep | One 1M Qdrant collection queried with multiple `hnsw_ef` values. | implemented | Qdrant service | Repeat with 100+ queries and collection-level HNSW build parameters before claiming a stable 1M SLO. |
|
|
1152
|
-
| Scale readiness profile | Cluster placement, node/zone-loss simulation, quorum report, replicated runtime, active-active delta sync, replicated snapshot/restore with offsite, archive, object-store latest-metadata/retention verification, hot-cache behavior, and structured/multimodal payload retrieval. | implemented | Mem0 / Zep / LangGraph persistent memory / GraphRAG target adapters | Keep quorum replication, namespace-delta sync, repair, offsite/archive/object-store backup lifecycle, and restore drills green while adding larger service-backed 10M load tests. |
|
|
1153
|
+
| Scale readiness profile | Cluster placement, node/zone-loss simulation, quorum report, replicated runtime, active-active delta sync, replicated snapshot/restore with offsite, archive, object-store latest-metadata/download/retention verification, hot-cache behavior, and structured/multimodal payload retrieval. | implemented | Mem0 / Zep / LangGraph persistent memory / GraphRAG target adapters | Keep quorum replication, namespace-delta sync, repair, offsite/archive/object-store backup lifecycle, and restore drills green while adding larger service-backed 10M load tests. |
|
|
1153
1154
|
| Memory competitor adapter profile | Dynamic-memory scenario wired for external memory frameworks. | implemented | Mem0 / Zep / LangGraph persistent memory | Report real competitor results only when their packages/services are explicitly configured. |
|
|
1154
1155
|
| [BEIR](https://github.com/beir-cellar/beir) | Standard zero-shot information retrieval quality. | planned | Chroma / Qdrant / FAISS | Stay within 0.02 `nDCG@10` on identical embeddings. |
|
|
1155
1156
|
| [MTEB Retrieval](https://github.com/embeddings-benchmark/mteb) | Separates encoder quality from retrieval-store quality. | planned | Chroma / Qdrant / FAISS | Prove WaveMind does not reduce same-embedding retrieval quality. |
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{wavemind-2.3.1 → wavemind-2.3.2}/benchmarks/production_load_qdrant_1m_ef_sweep_results.json
RENAMED
|
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
|
|
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
|
|
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
|
|
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
|