Vectorizer — alfirus.my
← ~/projects 2026 · Creator & maintainer
Vectorizer A lightweight, self-hosted semantic memory server for AI agents — stores messages as embeddings in ChromaDB with optional LLM-powered summarization, agentic dialectic chat, and reasoning graphs.
Go ChromaDB Docker gRPC MCP Qwen Embeddings TypeScript SDK Python SDK
Vectorizer — Semantic Memory Server
A lightweight, self-hosted memory server for AI agents. Stores messages as embeddings in ChromaDB with optional LLM-powered summarization and Q&A. Each agent gets isolated memory via workspace namespaces.
Features
Workspace isolation — ws_ collections, no cross-talk between agents
Semantic + hybrid search — vector cosine (HNSW) + BM25 RRF, temporal filters, grep
Peers + peer cards — agent identity management within workspaces
Agentic dialectic chat — observer/observed modes, reasoning levels, SSE streaming, 5 built-in tools
Reasoning graph + deriver — premise edges, BFS reasoning chains, async derivation
Conclusions + surprisal dreamer — offline summarization with surprisal gating
Optional LLM brain — summarization & RAG Q&A via /chat/completions
Auth — API key or JWT with peer scoping
Layered config — env > .env > config.toml > defaults
Docker-ready — one docker compose up (ChromaDB + Qwen embeddings + Vectorizer)
MCP + Skills + SDKs — 13 MCP tools, TypeScript & Python SDKs
Evals — LongMemEval-style recall + reasoning-grounded benchmarks
Architecture
Agent → Vectorizer API → ChromaDB (vectors) + Embedding Service
│
├─ Qwen3-Embedding-4B (1536d MRL)
├─ nomic-embed-text (768d fallback)
└─ text-embedding-3-small (OpenAI)
Tech Stack
Language: Go
Storage: ChromaDB
Embeddings: Qwen3-Embedding-4B (1536d), nomic-embed-text, OpenAI
Communication: REST API, gRPC, MCP
Deployment: Docker Compose
LLM Integration: OpenAI-compatible endpoints (qwen3:8b, gpt-4o-mini, etc.)
news (89) 25 Aug 2026
[f3fbc7a] fix: align code with README workflow — scope filter, batch sanitize, webhooks, chat scaling Commit: f3fbc7a
Date: 2026-08-25
Author: alfirus
fix: align code with README workflow — scope filter, batch sanitize, webhooks, chat scaling
store: SearchWithScope / HybridSearchWithScope add scope+peer_id whereFilter
handlers: SearchMessages extracts scope/peer_id from where, Simple handles ?scope=&peer_id
batch: scope/peer_id metadata, sanitize via m.Content, ValidateResourceName, deriver+webhooks fire
messages: SetWebhooks + Fire(message.created) on AddMessage/batch
chat: seed nResults scaling by reasoning_level (1/5/10/15/20) + GetRepresentation
main: move whMgr early, inject into messagesHandler
View on GitHub
25 Aug 2026
[b2fe618] docs: update README + BLUEPRINT for Google AI Studio + Embedder interface 25 Aug 2026
[bb94d3b] feat: add Google AI Studio embedding provider + Embedder interface 25 Aug 2026
[67ad02d] fix: scope dummy 1536, version 0.3.0, batch validation+deriver, strict peer, comments 25 Aug 2026
[efbc559] feat: Option C — strict peer JWT + LM Studio GGUF + provision script 25 Aug 2026
[171e33d] chore: remove Honcho references from docs and code comments 25 Aug 2026
[1b84e55] docs: update README + BLUEPRINT for reasoning maturity (agentic dialectic) 25 Aug 2026
[3fe3d51] feat: reasoning maturity parity — graph, deriver, agentic dialectic, surprisal 25 Aug 2026
[7f0c0d6] feat: migrate to Qwen3-Embedding-4B 1536d MRL (Honcho parity) 25 Aug 2026
[5855d35] fix: dreamer interval 10m -> 3h Commit: b2fe618
Date: 2026-08-24
Author: alfirus
docs: update README + BLUEPRINT for Google AI Studio + Embedder interface
Add Embedder interface section to BLUEPRINT (interface.go, provider selection logic)
Document Google AI Studio provider (text-embedding-004/005, 768d, batch+single)
Add GOOGLE_API_KEY, EMBED_DIMENSIONS, OAI_COMPATIBLE_URL to config tables
Update architecture diagram to show Google AI Studio as embedding backend
Add Phase 6: Provider Abstraction to roadmap
Version bump to 0.4.0
View on GitHub
Commit: bb94d3b
Date: 2026-08-24
Author: alfirus
feat: add Google AI Studio embedding provider + Embedder interface
Add internal/embedding/interface.go: Embedder interface for all providers
Add internal/embedding/google.go: Google AI Studio batch+single embed
Refactor store/handlers to use Embedder interface (not concrete *Service)
Add GOOGLE_API_KEY config + docker-compose env passthrough
Upgrade Go builder image 1.24 → 1.25
Simplify ChromaDB healthcheck (service_started vs service_healthy)
View on GitHub
Commit: 67ad02d
Date: 2026-08-24
Author: alfirus
fix: scope dummy 1536, version 0.3.0, batch validation+deriver, strict peer, comments
scopes: dummyVector() dynamic 1536 vs hardcoded 768
version health+grpc 0.2.0->0.3.0
batch: ValidateResourceName, Sanitize, 100k cap, deriver enqueue
config EMBED_MODEL default -GGUF, comments 768->1536
View on GitHub
Commit: efbc559
Date: 2026-08-24
Author: alfirus
feat: Option C — strict peer JWT + LM Studio GGUF + provision script
handlers: peer_id must match JWT p (403), observer must match p in chat
compose: host.docker.internal wiring for LM Studio GGUF Qwen3 1536d, qwen-embed as profile gpu, /vectorizer env LM_STUDIO_URL+OAI http://host.docker.internal:1234/v1
scripts/provision_option_c.sh: exhaustive scopes (proj-frontend/backend/research, shared-all, private-*) + sessions
README: 3-Agent Setup section with JWT generation, provision, LM Studio verify
View on GitHub
Commit: 171e33d
Date: 2026-08-24
Author: alfirus
chore: remove Honcho references from docs and code comments
Scrubbed BLUEPRINT.md + README.md (user-facing), and internal
comments in config, store, handlers, mcp, docker-compose, env example
Rebuilt mcp/dist, go vet pass, no honcho strings remain outside git history
View on GitHub
Commit: 1b84e55
Date: 2026-08-24
Author: alfirus
docs: update README + BLUEPRINT for reasoning maturity (agentic dialectic)
README: features agentic 5-tool loop, reasoning graph + deriver, surprisal dreamer 3h, eval reasoning-grounded, structure updated
BLUEPRINT 0.3.0: component layers (deriver/reasoning/gRPC), Store reasoning methods, LLM prompts, Phase 1-5 expanded parity
View on GitHub
Commit: 3fe3d51
Date: 2026-08-24
Author: alfirus
feat: reasoning maturity parity — graph, deriver, agentic dialectic, surprisal
store/reasoning: ws_<id>_reasoning edges, GetReasoningChain BFS, GetObservationContext window
deriver: async enqueue from AddMessage, 2s/5msg batch, summarize -> CreateConclusion + AddReasoningEdge (768d->1536d)
llmbrain: prompts.go AgentSystemPrompt, ChatWithHistory tool loop, ChatWithTemp temp mapping
handlers/chat: 5 tools (search_memory/search_messages/grep/get_reasoning_chain/get_observation_context), reasoning_level -> maxTools/temp, loop up to 8
handlers/messages: SetDeriver, enqueue after AddMessage
dreamer: surprisal check vs QueryConclusions distance <0.15 skip, min helper
evals: chat reasoning-grounded recall metric
main: deriver start/stop, chat integration
View on GitHub
Commit: 7f0c0d6
Date: 2026-08-24
Author: alfirus
feat: migrate to Qwen3-Embedding-4B 1536d MRL (Honcho parity)
config: EMBED_DIMENSIONS=1536 (env>toml), default Qwen/Qwen3-Embedding-4B (was nomic-embed-text 768)
embedding: dimensions param in POST /embeddings, NewWithDimensions, SetDimensions
store: dummyVector() uses embed.Dimensions() (1536), not hardcoded 768
infra: docker-compose qwen-embed vLLM with is_matryoshka + pooler-config 1536, HF cache volume, NVIDIA
docs: BLUEPRINT v0.2.0 1536 pinned, README workflow 1536, config.toml.example dimensions
migrate script scripts/migrate-768-to-1536.sh (drop+re-embed, no mixed cosine)
View on GitHub
Commit: 5855d35
Date: 2026-08-24
Author: alfirus
fix: dreamer interval 10m -> 3h
View on GitHub