Releases: hivellm/vectorizer
v3.0.0
Removed
- Standalone JavaScript SDK dropped (
sdks/javascript/). The TypeScript SDK ships compiled CommonJS + ESM and is fully usable from plain JavaScript, so maintaining a parallel JS-only package doubled CI/release work for no functional difference. The published@hivehub/vectorizer-sdk-jspackage on npm remains installable; no new releases will ship. Migrate by replacing@hivehub/vectorizer-sdk-jswith@hivehub/vectorizer-sdk— the runtime API and import paths are identical. Removed: 60 source files, the.github/workflows/sdk-javascript-test.ymlCI workflow, anddocs/users/sdks/JAVASCRIPT.md. The pending rulebook tasksphase4_split-sdk-javascript-clientandphase6_sdk-javascript-rpcwere deleted as obsolete. The GUI's package.json was bumped from@hivellm/vectorizer-sdk@^1.1.2to@hivehub/vectorizer-sdk@^3.0.0(runpnpm installingui/to refresh the lockfile). - TypeScript SDK is on
@hivehub, not@hivellm. The published package has been at@hivehub/vectorizer-sdkfor some time; this release corrects all stale doc references —docs/users/{getting-started,sdks,collections,vectors,guides,api}/*.md,sdks/README.md,sdks/PUBLISHING_STATUS.md,sdks/PUBLISHING.md,sdks/COVERAGE_REPORT.md, rootREADME.md— and the GUI dependency. Historical patch notes (docs/patches/v*.md) keep the old@hivellm/vectorizer-sdkstrings as a point-in-time record. - Framework integration packages dropped from the repo.
sdks/langchain/,sdks/langchain-js/,sdks/langflow/,sdks/n8n/,sdks/tensorflow/, andsdks/pytorch/were thin adapters around the language-native SDKs and added maintenance burden out of proportion to their usage. Their published versions remain installable from PyPI / npm but no new releases will ship; integrate against the corresponding SDK directly (Python, TypeScript, JavaScript, Rust, Go, C#). Removed: 38 source files plus the twodocs/users/guides/N8N_INTEGRATION.md/LANGFLOW_INTEGRATION.mduser guides. Cross-referencing READMEs (README.md,sdks/README.md,sdks/PUBLISHING*.md,sdks/COVERAGE_REPORT.md,docs/users/guides/README.md,docs/users/api/{README,INTEGRATION}.md,docs/specs/{API_REFERENCE,ROADMAP}.md,docs/migration/rpc-default.md) updated to drop the integration sections and the comparison-matrix rows. The pending rulebook taskphase6_sdk-framework-integrations-rpc(which planned to wire RPC into these adapters) was deleted as obsolete.
Added
- FastEmbed backend wired into the server bootstrap (phase8_wire-real-embedding-providers).
fastembed 5.13was declared as an optional dep incrates/vectorizer/Cargo.toml(in thedefaultfeature set) but had no active call sites; the server hard-codedBm25Embedding::new(512)in all three bootstrap embedding-manager sites (main, file-watcher, final) and never consultedconfig.yml > embedding.model. This change adds aFastEmbedProvideradapter atcrates/vectorizer/src/embedding/providers/fastembed.rs(wrapsfastembed::TextEmbeddingbehind aparking_lot::Mutexbecause the inference handle requires&mut self— batching still happens inside the single locked call) and atry_build_fastembed_provider(model_id, cache_dir)factory that returns a typed error when thefastembedCargo feature is off. Server bootstrap atcrates/vectorizer-server/src/server/core/bootstrap.rsgainsresolve_embedding_model_name+build_default_providerhelpers that parseembedding.modelfrom the top-level ofconfig.ymland dispatch:"bm25"(default) →Bm25Embedding::new(512),"fastembed:<id>"→FastEmbedProvider::from_config(id, data_dir().join("fastembed")). Unknown prefixes fail fast at boot so operators see the bad config immediately. Supported fastembed ids (short alias + enum-debug form both accepted):all-MiniLM-L6-v2(dim 384),all-MiniLM-L12-v2,all-mpnet-base-v2(dim 768),bge-small-en-v1.5(dim 384, fastembed default),bge-base-en-v1.5,bge-large-en-v1.5(dim 1024) — each with a-qsuffix variant for the int8-quantized model. Model weights are cached underdata_dir().join("fastembed")(the same directory that holdsvectorizer.vecdb). Closes F6 fromdocs/releases/v3.0.0-verification.md.
Added
- C# SDK RPC transport (
Vectorizer.Sdk.Rpc3.0.0, phase6_sdk-csharp-rpc). New NuGet package atsdks/csharp/src/Vectorizer.Rpc/ships the binary VectorizerRPC fast path for .NET 8.0+ alongside a REST fallback. API surface:RpcClient(TCP + MessagePack framing with multiplexed per-connection IDs),RpcClientPool(bounded byMaxConnectionssemaphore, lazy dial, HELLO auto-sent on first acquire),IVectorizerClient+RpcVectorizerClient/HttpVectorizerClient(transport-agnostic typed surface),VectorizerClientFactory.Create(url)andservices.AddVectorizerClient(url)(both route through the sameEndpointParser.Parse(string url)helper). URL grammar mirrors the Rust / Go / Python / TypeScript parsers byte-for-byte:vectorizer://host[:port]→ RPC (default port 15503),host[:port](no scheme) → RPC,http(s)://…→ REST; any other scheme throwsArgumentException, and URLs carrying credentials in the userinfo section are rejected (credentials go in HELLO, not the URL). MessagePack-csharp'sInt32/Int64MessagePackFormatteremits the fixed 5- and 9-byte forms rather than rmp-serde's compact encoding, soFrameCodecwrites bytes directly throughMessagePackWriter.Write(long)/Write(uint)overloads that DO pick the smallest representation — every wire-spec § 11 golden vector (PINGrequest,PONGresponse with nestedOk/Strmaps) is asserted byte-for-byte inFrameCodecTests. Two sample projects:examples/Quickstart(console walkthrough) andexamples/AspNetCore(minimal-API DI registration). Verification:dotnet test54 / 0 / 0 (framing, endpoint, value round-trip, RPC client against an in-process mock server, pool acquire/release/blocking semantics, DI singleton + transport override). Previously-pending tasksphase6_add-rpc-protocol-server,phase6_rpc-wire-protocol-spec,phase6_make-rpc-default-transport, and the sibling Go / Python / Rust / TypeScript SDK-RPC tasks all merged before this one — the C# SDK was the last language in thephase6_sdk-*-rpcfamily. - Layered config loader (phase5_consolidate-config-files). New
src/config/layered.rsexposesload_layered(base, options)that applies a mode-specific override on top of a base YAML config via deep YAML merge (scalar replace, recursive map merge, full array replace, null-clears-base). Mode is selected by the newVECTORIZER_MODEenv var; values are looked up underconfig/modes/<mode>.yml. Bootstrap eagerly validates the merged config whenVECTORIZER_MODEis set so a typo in the override surfaces at boot, not randomly later. Two mode override fragments shipped:config/modes/dev.yml(verbose logging, file watcher on, loopback bind) andconfig/modes/production.yml(warn logging, larger threads / batch / cache, +zstd compression, +scheduled snapshots, file watcher off). 11 unit tests cover the merge primitive (scalar/map/array/null/type-change/overrides-only-keys) plus the loader's typed errors (BaseNotFound,ModeNotFound,Schema); 4 integration tests load the real checked-inconfig.example.yml+ every shipped mode override and assert the merged result deserializes into the strictVectorizerConfig. New operator guide atdocs/deployment/configuration.md. Per-key matrix + canonical-default decisions captured in.rulebook/archive/<date>-phase5_consolidate-config-files/design.md. The legacyconfig.production.yml,config.cluster.yml,config.hub.yml, and the multi-tenantconfig.ymlstay in the repo for the v3.x.0 release window — operators using the layered loader read fromconfig.yml(base) +config/modes/<mode>.yml; operators on the existing single-file path keep working unchanged. Cluster + hub mode overrides + a migration script + the legacy-file deletion are tracked as next slots of the same task.
Changed
-
rmcp 0.10 → 1.5: MCP SDK major rewrite (phase7_rmcp-1.x-migration).
rmcpwent 0.10 → 1.x upstream and reshaped the core data model —Tool,Implementation,ServerInfo(alias forInitializeResult),ListToolsResult,ListResourcesResult, andCallToolRequestParamsall became#[non_exhaustive], so struct-literal construction from outside the crate is no longer legal. Bumpedrmcp = "0.10"→rmcp = "1.5"in the three manifests (vectorizer-core,vectorizer,vectorizer-server) and rewrote every affected construction site to use the builder entry points each type now provides.Concretely:
crates/vectorizer-server/src/server/mcp/tools.rs— 31 hand-writtenTool { ... }literals inget_mcp_tools()plus 1 intools_from_inventory()now go through a localmk_tool(name, title, description, input_schema, annotations)helper that delegates toTool::new(name, description, schema).with_title(title).with_annotations(annotations).crates/vectorizer-server/src/server/core/mcp_service.rs—ServerInfo::new(caps).with_protocol_version(...).with_server_info(Implementation::new(...).with_title(...).with_website_url(...)).with_instructions(...)replaces the old struct-literal advertise path.ListToolsResult::with_all_items(tools)+ListResourcesResult::with_all_items(vec![])replace the struct literals that were missing the newmetafield.CallToolRequestParam(0.10 name) is now a deprecated alias forCallToolRequestParams(plural). Renamed every import + function-signature reference across 8 files; every construction site usesCallToolRequestParams::new(name).with_arguments(args).
The 1.x rename means MCP client crates that depend on our
vectorizer-servertransitively will see the newer type names in our re-exports. No change to the on-wire protocol the clients parse — the v1.5...
vectorizer-3.0.0
A Helm chart for Vectorizer - High-performance vector database
v2.5.16 — Serve search locally on followers
Fix: POST search/scroll/recommend/count are now served locally on followers instead of being redirected to leader. These are read operations. Image: ghcr.io/hivellm/vectorizer:2.5.16
v2.5.15 — Fix vector replication in Raft HA
Fix: vector inserts now replicate to followers in Raft mode. Root cause: upsert_points() only checked static master_node (always None in Raft), not ha_manager.master_node(). Also includes NetworkError fix for Raft elections. Image: ghcr.io/hivellm/vectorizer:2.5.15
v2.5.14 — Fix Raft election (NetworkError)
Root cause fix: Raft RPC errors now use NetworkError (transient, immediate retry) instead of Unreachable (permanent backoff). This was why elections never completed — initial DNS failures marked all peers as permanently dead. Image: ghcr.io/hivellm/vectorizer:2.5.14
v2.5.13
Debug: log before/after initialize_cluster. Image: ghcr.io/hivellm/vectorizer:2.5.13
v2.5.12 — Force Raft election retry
Fix: trigger().elect() every 10s until leader elected. Image: ghcr.io/hivellm/vectorizer:2.5.12
v2.5.11
Debug: warn-level logs for cluster servers count and DNS wait. Image: ghcr.io/hivellm/vectorizer:2.5.11
v2.5.10 — Debug config parse
Debug: logs config parse result for cluster_enabled. Image: ghcr.io/hivellm/vectorizer:2.5.10
vectorizer-2.5.16
A Helm chart for Vectorizer - High-performance vector database