-
-
Notifications
You must be signed in to change notification settings - Fork 0
Modules
Spector is organized as a multi-module Maven project. Each module has a focused responsibility, clear API boundaries, and minimal cross-module coupling.
graph LR
subgraph "🔬 Foundation"
core["spector-core<br/><i>SIMD kernels</i>"]
commons["spector-commons<br/><i>Chunkers, tokenizer</i>"]
config["spector-config<br/><i>SpectorConfig + YAML</i>"]
storage["spector-storage<br/><i>Panama MemorySegment</i>"]
end
subgraph "🧠 Intelligence"
embedApi["spector-embed-api<br/><i>Embedding SPI</i>"]
embedOllama["spector-embed-ollama<br/><i>Ollama provider</i>"]
index["spector-index<br/><i>HNSW + IVF-PQ + BM25</i>"]
query["spector-query<br/><i>Hybrid + RRF + rerank</i>"]
gpu["spector-gpu<br/><i>CUDA via Panama FFM</i>"]
end
subgraph "⚡ Engine"
rag["spector-rag<br/><i>RAG pipeline</i>"]
engine["spector-engine<br/><i>Search facade</i>"]
ingestion["spector-ingestion<br/><i>File ingest pipeline</i>"]
memory["spector-memory<br/><i>Cognitive memory 🧠</i>"]
end
subgraph "🌐 Runtime & Interfaces"
runtime["spector-runtime<br/><i>Composition root</i>"]
node["spector-node<br/><i>Armeria: REST + gRPC + SSE</i>"]
mcp["spector-mcp<br/><i>MCP Server (stdio)</i>"]
cli["spector-cli<br/><i>spectorctl</i>"]
client["spector-client<br/><i>Java SDK</i>"]
spring["spector-spring<br/><i>Spring AI</i>"]
end
subgraph "📦 Distribution"
metrics["spector-metrics<br/><i>Prometheus + JVM</i>"]
bench["spector-bench<br/><i>JMH benchmarks</i>"]
dist["spector-dist<br/><i>Fat JAR</i>"]
end
graph TD
node["🌐 node"] --> runtime["⚡ runtime"]
node --> mcp["🤖 mcp"]
node --> metrics["📈 metrics"]
mcp --> runtime
mcp --> ingestion["📥 ingestion"]
cli["🖥️ cli"] --> runtime
cli --> client["📦 client"]
runtime --> engine["⚡ engine"]
runtime --> memory["🧠 memory"]
runtime --> ingestion
engine --> query["🔍 query"]
engine --> rag["🤖 rag"]
engine --> ingestion
engine --> index["📊 index"]
engine --> storage["💾 storage"]
engine --> embedapi["🧬 embed-api"]
engine -.-> gpu["🎮 gpu"]
memory --> index
memory --> storage
memory --> ingestion
memory --> embedapi
memory --> core["🔬 core"]
metrics --> engine
metrics --> memory
ingestion --> config["⚙️ config"]
ingestion --> embedapi
rag --> query
rag --> index
rag --> storage
rag --> embedapi
query --> index
index --> storage
index --> config
storage --> config
storage --> core
config --> core
embedapi --> commons["📄 commons"]
gpu --> core
gpu --> storage
dist["📦 dist"] --> mcp
dist --> cli
dist --> runtime
spring["🌱 spring"] --> engine
spring --> memory
spring --> metrics
bench["🧪 bench"] --> engine
bench --> memory
Legend: Solid arrows = compile dependency. Dotted arrow (
gpu) = optional dependency.
important: Architecture
spector-ingestiondefines theIngestionPipelineandIngestionTargetinterface. Bothspector-engineandspector-memorydepend on it to implement theirIngestionTarget.spector-memoryis fully independent ofspector-engine— they are peers, wired together only at theSpectorRuntimecomposition root.
All entry points (MCP, CLI, Server) route through SpectorRuntime:
graph TD
cli["🖥️ spector-cli<br/><i>SpectorCtl</i>"]
mcp["🤖 spector-mcp<br/><i>SpectorMcpMain</i>"]
node["🌐 spector-node<br/><i>SpectorNode (Armeria)</i>"]
cli --> runtime
mcp --> runtime
node --> runtime
runtime["⚡ SpectorRuntime<br/><i>Composition Root</i>"]
runtime --> sh["SearchHandler<br/><i>mode-aware search</i>"]
runtime --> ih["IngestionHandler<br/><i>delegates to IngestionPipeline</i>"]
sh --> engine["SpectorEngine"]
sh --> memory["SpectorMemory"]
ih --> pipeline["IngestionPipeline<br/><i>chunk → embed → store</i>"]
pipeline --> engineTarget["EngineIngestionTarget<br/><i>SEARCH mode</i>"]
pipeline --> memTarget["CognitiveIngestionTarget<br/><i>MEMORY mode</i>"]
SpectorRuntime is a thin composition root — it creates and wires subsystems but contains no business logic. Each handler owns its domain:
| Handler | Responsibility | Routes to |
|---|---|---|
SearchHandler |
Mode-aware search | Engine (SEARCH mode) or Memory (MEMORY mode) |
IngestionHandler |
Delegates to unified IngestionPipeline
|
Pipeline → EngineIngestionTarget or CognitiveIngestionTarget
|
| Module | Description |
|---|---|
| spector-commons | Shared utilities — concurrent primitives, I/O helpers |
| spector-core | Core abstractions — quantization, SIMD, similarity functions |
| spector-config | Configuration — SpectorProperties, SpectorConfigFactory, YAML loading |
| spector-storage | Persistent storage — memory-mapped files, arena management |
| Module | Description |
|---|---|
| spector-embed-api | Embedding provider SPI — model-agnostic interface |
| spector-embed-ollama | Ollama embedding implementation |
| Module | Description |
|---|---|
| spector-index | Vector indexing — HNSW, IVF, brute-force |
| spector-query | Query processing — parsing, planning, execution |
| spector-gpu | GPU acceleration — Panama FFM bindings |
| Module | Description |
|---|---|
| spector-rag | RAG pipeline — retrieval-augmented generation |
| spector-engine | Search engine — orchestrates index + RAG + storage |
| spector-ingestion | Unified ingestion pipeline — IngestionPipeline (builder), IngestionTarget interface, FileDiscoveryService
|
| spector-memory | Cognitive memory — biologically-inspired agent memory |
| Module | Description |
|---|---|
| spector-runtime | Composition root — wires engine + memory + ingestion pipeline, exposes SearchHandler and IngestionHandler
|
| spector-mcp | MCP server — Model Context Protocol integration via stdio |
| spector-node | Unified node — Armeria HTTP REST + gRPC + SSE events + cluster coordination |
| Module | Description |
|---|---|
| spector-cli | CLI tool — spectorctl with remote (HTTP) and local batch (runtime) modes |
| spector-client | Java client — programmatic HTTP API access |
| spector-spring | Spring AI integration — auto-configuration |
| Module | Description |
|---|---|
| spector-metrics | Metrics — Prometheus + JVM instrumentation |
| spector-bench | Benchmarks — JMH performance testing |
| spector-dist | Distribution — single fat JAR packaging |
- Home
- About
- Getting Started
-
Architecture
- Architecture--Overview
- Architecture--Core-Concepts
- Architecture--Mcp-Integration
- Architecture--Ingestion-Pipeline
- Architecture--Rag-Pipeline
- Architecture--Distributed-Mode
- Architecture--Gpu-Acceleration
-
Modules
- Modules
- Modules--Spector-Core
- Modules--Spector-Commons
- Modules--Spector-Config
- Modules--Spector-Storage
- Modules--Spector-Embed-Api
- Modules--Spector-Embed-Ollama
- Modules--Spector-Index
- Modules--Spector-Query
- Modules--Spector-Gpu
- Modules--Spector-Rag
- Modules--Spector-Engine
- Modules--Spector-Ingestion
- Modules--Spector-Memory
- Modules--Spector-Runtime
- Modules--Spector-Node
- Modules--Spector-Mcp
- Modules--Spector-Cli
- Modules--Spector-Client
- Modules--Spector-Spring
- Modules--Spector-Metrics
- Modules--Spector-Bench
- Modules--Spector-Dist
- Modules--Spector-Cortex
-
Deep Dives
- Deep-Dives--Ann-Search-Primer
- Deep-Dives--Hnsw-Explained
- Deep-Dives--Spector-Index-Architecture
- Deep-Dives--Svasq-Deep-Dive
- Deep-Dives--Understanding-Quantization
- Deep-Dives--Quantization-Comparison
- Deep-Dives--Turbo-Quant
- Deep-Dives--Real-Embedding-Benchmarks
- Deep-Dives--Svasq-Spectorindex-Whitepaper
-
🧠 Cognitive Memory
- Memory
- Memory--Getting-Started
- Architecture
- Biological Systems
- Advanced Profiles
- Deep Dives
- Memory--Api-Reference
- 🧬 Cortex Dashboard
- Reference
- Operations
- FAQ
- Roadmap
- 🔬 Labs