Architecture: Rails Jobs — Solid Queue embedding pipeline
Rails Jobs: paldocs
Diagram
Components
| Component | Purpose | Notes |
|---|---|---|
| EmbedBlockJob | Primary embedding job | Triggered by after_save on Block model |
| Solid Queue | Job backend | Rails 8 default, replaces Sidekiq/Redis |
| Ollama HTTP API | Embedding model host | qwen3-embedding:4b, 2560 dimensions |
| neighbor gem | Vector column writes | Writes to blocks.embedding column |
Key Decisions
- Solid Queue over Sidekiq — eliminates Redis dependency, aligns with Rails 8 defaults
- after_save callback — every block save triggers re-embedding, keeping vectors fresh
- Mermaid block skipping — blocks containing only mermaid diagrams are not embedded (no semantic value)
- Retry with exponential backoff — handles Ollama timeouts gracefully
Related
project-paldocs— parent project pagearch-rails-db— schema where vectors are storedarch-infra— k8s deployment where jobs runstory-paldocs-consolidation— driving user story