Skip to content

Commit ba40c8d

Browse files
chore(release): bump to 0.7.0
Async client, BM25 hybrid retrieval, per-document TTL, Semantic Kernel connector, search_many, optimistic concurrency, weighted graph edges, client-side rate limiting, parallel put_vectors, and a graph node metadata-preservation fix. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
1 parent 044e27d commit ba40c8d

6 files changed

Lines changed: 84 additions & 3 deletions

File tree

‎CHANGELOG.md‎

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,47 @@ All notable changes to dynavec are documented here. This project adheres to
55

66
## [Unreleased]
77

8+
## [0.7.0] - 2026-10-01
9+
10+
Concurrency and scale: a native async client, a lexical/hybrid retrieval path,
11+
per-document TTL, a new framework connector, and a graph data-loss fix.
12+
813
### Added
14+
- **Native async client** (#270) — `AsyncDynavec` offers `async`/`await` `upsert` / `search` /
15+
`get` / `delete` built on non-blocking I/O, so agent and web workloads can fan out
16+
concurrent calls without thread pools.
17+
- **BM25 lexical retriever + dense hybrid fusion** (#233, #264) — `BM25Retriever` for pure
18+
lexical search and `BM25HybridRetriever` / `db.hybrid_search()` combining dense ANN and
19+
sparse BM25 via Reciprocal Rank Fusion, with tunable `dense_weight` / `sparse_weight`.
20+
- **Per-document TTL + automatic table provisioning** (#22) — pass `ttl_seconds=` to `upsert()`
21+
/ `update()` for DynamoDB-native expiry; the TTL attribute is provisioned automatically.
22+
- **Semantic Kernel vector store connector** (#69) — `DynavecStore` / `DynavecCollection`
23+
implementing Microsoft Semantic Kernel's `VectorStore` interface, including lambda-filter
24+
translation to the S3 Vectors dialect.
25+
- **`search_many()`** (#258) — run several queries concurrently against a namespace in one call.
926
- **Optimistic concurrency on `update()`** (#24) — each update stores a `version` on the
1027
DynamoDB item and writes with a `ConditionExpression`, so a concurrent change raises
1128
`ConflictError` (nothing written) instead of being silently overwritten. Pass
1229
`expected_version=` to guard across your own read/update cycle; `UpsertResult.version`
1330
returns the new version. Plain `upsert()` stays last-writer-wins and resets the version.
31+
- **Weighted graph edge properties** (#268) — `add_edge()` accepts `weight` and `props`,
32+
stored on the edge and surfaced through graph traversal.
33+
- **Client-side rate limiting** (#262) — opt-in token-bucket throttling of outbound AWS calls
34+
to stay under account limits.
1435

1536
### Changed
1637
- `update()` now writes DynamoDB before S3 Vectors (previously in parallel) so a conflict
1738
leaves both stores untouched, and reads the document with a strongly consistent `GetItem`.
39+
- **Parallelized `put_vectors`** (#259) — S3 Vectors writes fan out across batches with a
40+
thread pool for higher ingest throughput.
41+
- **Strict mypy** now runs in CI (#207) and the package ships type hints throughout.
42+
43+
### Fixed
44+
- **Graph node metadata preservation** (#271) — `add_edge()` / `link_docs()` no longer wipe an
45+
existing node's `ntype` and `props`; unspecified attributes are preserved via
46+
`if_not_exists`, while explicit values still overwrite (#272).
47+
- **Markdown front-matter date normalization** on ingest (#253).
48+
- Cross-encoder reranker type-narrowing fix (#254).
1849

1950
## [0.6.0] - 2026-09-25
2051

‎README.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -503,7 +503,7 @@ db.graph_delete_node("globex", namespace="kb")
503503

504504
## Status
505505

506-
**v0.6.0 (current)** — adds **query-expansion retrievers** (Multi-Query + HyDE), **learned RRF fusion weights**, **OPQ + scalar quantization**, **cross-encoder reranking**, **hybrid graph+ANN search** and graph shortest-path, **`search().explain()`**, **cache invalidation on write**, an **embedding cache**, **`S3Source`** ingestion, DynamoDB **gzip** for large text, LlamaIndex **metadata-filter translation**, an **OpenAI Assistants** tool, and CLI **namespace export/import** — on top of the v0.5 feature set and the v0.1 hybrid core.
506+
**v0.7.0 (current)** — adds a **native async client** (`AsyncDynavec`), a **BM25 lexical retriever + dense hybrid fusion** (`hybrid_search`), **per-document TTL** with automatic provisioning, a **Semantic Kernel** connector, concurrent **`search_many()`**, **optimistic concurrency** on `update()`, **weighted graph edges**, **client-side rate limiting**, and parallelized `put_vectors` ingest — plus a graph metadata-preservation fix — on top of the v0.6 feature set and the v0.1 hybrid core.
507507

508508
See the full history in **[CHANGELOG.md](CHANGELOG.md)**, the browsable **[Release notes](https://codeforstartups.github.io/dynavec/docs/release-notes.html)** page, or the **[GitHub Releases](https://github.com/codeforstartups/dynavec/releases)** tab.
509509

‎opensource/dynavec/docs/release-notes.html‎

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,31 @@ <h1>Release notes</h1>
8585
and every version is a
8686
<a href="https://github.com/codeforstartups/dynavec/releases">GitHub Release</a>.</p>
8787

88+
<h2 id="v0-7-0">0.7.0 <span class="doc__sub" style="font-weight:400">&mdash; 2026-10-01</span></h2>
89+
<p>Concurrency and scale: a native async client, a lexical/hybrid retrieval path, per-document TTL, a new framework connector, and a graph data-loss fix.</p>
90+
<h3>Added</h3>
91+
<ul>
92+
<li><strong>Native async client</strong> &mdash; <code>AsyncDynavec</code> with <code>async</code>/<code>await</code>
93+
<code>upsert</code> / <code>search</code> / <code>get</code> / <code>delete</code> for concurrent agent and web workloads.</li>
94+
<li><strong>BM25 lexical + dense hybrid</strong> &mdash; <code>BM25Retriever</code>, <code>BM25HybridRetriever</code>,
95+
and <code>db.hybrid_search()</code> fusing dense ANN and sparse BM25 with Reciprocal Rank Fusion.</li>
96+
<li><strong>Per-document TTL</strong> &mdash; <code>ttl_seconds=</code> on <code>upsert()</code>/<code>update()</code>
97+
with automatic DynamoDB TTL provisioning.</li>
98+
<li><strong>Semantic Kernel connector</strong> &mdash; <code>DynavecStore</code> / <code>DynavecCollection</code>
99+
implementing Microsoft Semantic Kernel's vector-store interface.</li>
100+
<li><strong><code>search_many()</code></strong> &mdash; run several queries against a namespace concurrently.</li>
101+
<li><strong>Optimistic concurrency</strong> on <code>update()</code> (<code>expected_version=</code>,
102+
<code>ConflictError</code>); <strong>weighted graph edges</strong>; <strong>client-side rate limiting</strong>.</li>
103+
</ul>
104+
<h3>Changed</h3>
105+
<ul>
106+
<li>Parallelized <code>put_vectors</code> across batches for higher ingest throughput; strict mypy in CI.</li>
107+
</ul>
108+
<h3>Fixed</h3>
109+
<ul>
110+
<li><code>add_edge()</code> / <code>link_docs()</code> no longer wipe an existing node's <code>ntype</code>/<code>props</code>.</li>
111+
</ul>
112+
88113
<h2 id="v0-6-0">0.6.0 <span class="doc__sub" style="font-weight:400">&mdash; 2026-09-25</span></h2>
89114
<p>A large release: new retrieval strategies, quantization methods, graph and cache capabilities, and more integrations.</p>
90115
<h3>Added</h3>

‎pyproject.toml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
44

55
[project]
66
name = "dynavec"
7-
version = "0.6.0"
7+
version = "0.7.0"
88
description = "Serverless hybrid vector database for AWS: fuses DynamoDB (single-digit-ms metadata + document store) with Amazon S3 Vectors (billion-scale serverless ANN). A drop-in, in-your-own-account alternative to Pinecone / Qdrant / Milvus / Weaviate / OpenSearch."
99
readme = "README.md"
1010
requires-python = ">=3.9"

‎src/dynavec/__init__.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@
8888
)
8989
from .transforms import LambdaTransform, TransformContext, TransformPipeline
9090

91-
__version__ = "0.6.0"
91+
__version__ = "0.7.0"
9292

9393
__all__ = [
9494
"Dynavec",

‎tools/build_docs.py‎

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -845,6 +845,31 @@ def redact(ctx):
845845
and every version is a
846846
<a href="https://github.com/codeforstartups/dynavec/releases">GitHub Release</a>.</p>
847847
848+
<h2 id="v0-7-0">0.7.0 <span class="doc__sub" style="font-weight:400">&mdash; 2026-10-01</span></h2>
849+
<p>Concurrency and scale: a native async client, a lexical/hybrid retrieval path, per-document TTL, a new framework connector, and a graph data-loss fix.</p>
850+
<h3>Added</h3>
851+
<ul>
852+
<li><strong>Native async client</strong> &mdash; <code>AsyncDynavec</code> with <code>async</code>/<code>await</code>
853+
<code>upsert</code> / <code>search</code> / <code>get</code> / <code>delete</code> for concurrent agent and web workloads.</li>
854+
<li><strong>BM25 lexical + dense hybrid</strong> &mdash; <code>BM25Retriever</code>, <code>BM25HybridRetriever</code>,
855+
and <code>db.hybrid_search()</code> fusing dense ANN and sparse BM25 with Reciprocal Rank Fusion.</li>
856+
<li><strong>Per-document TTL</strong> &mdash; <code>ttl_seconds=</code> on <code>upsert()</code>/<code>update()</code>
857+
with automatic DynamoDB TTL provisioning.</li>
858+
<li><strong>Semantic Kernel connector</strong> &mdash; <code>DynavecStore</code> / <code>DynavecCollection</code>
859+
implementing Microsoft Semantic Kernel's vector-store interface.</li>
860+
<li><strong><code>search_many()</code></strong> &mdash; run several queries against a namespace concurrently.</li>
861+
<li><strong>Optimistic concurrency</strong> on <code>update()</code> (<code>expected_version=</code>,
862+
<code>ConflictError</code>); <strong>weighted graph edges</strong>; <strong>client-side rate limiting</strong>.</li>
863+
</ul>
864+
<h3>Changed</h3>
865+
<ul>
866+
<li>Parallelized <code>put_vectors</code> across batches for higher ingest throughput; strict mypy in CI.</li>
867+
</ul>
868+
<h3>Fixed</h3>
869+
<ul>
870+
<li><code>add_edge()</code> / <code>link_docs()</code> no longer wipe an existing node's <code>ntype</code>/<code>props</code>.</li>
871+
</ul>
872+
848873
<h2 id="v0-6-0">0.6.0 <span class="doc__sub" style="font-weight:400">&mdash; 2026-09-25</span></h2>
849874
<p>A large release: new retrieval strategies, quantization methods, graph and cache capabilities, and more integrations.</p>
850875
<h3>Added</h3>

0 commit comments

Comments
 (0)