Embedd HUB
Embedd HUB is a local-first Laravel workbench for exploring text embeddings. It lets users generate vectors, search similar stored phrases, and compare phrase proximity with Ollama and PostgreSQL vector storage.
Features
- Generate embeddings for words, phrases, or multiline text.
- Store vectors in PostgreSQL with vector indexes when using pgvector.
- Search existing embeddings by semantic similarity.
- Compare multiple phrases with a pairwise similarity matrix and ranked pairs.
- Pick embedding models from the live Ollama
/api/tagsresponse. - Show clear Ollama online/offline status before running embedding actions.
- Track per-user usage on the dashboard.
Stack
- Laravel 13
- Livewire 4 single-file components
- Flux UI 2
- Laravel AI SDK
- PostgreSQL with vector storage
- Ollama for local embedding generation
- Tailwind CSS 4 and Vite
- Pest 4
Requirements
- PHP 8.4
- Composer
- Node.js and npm
- PostgreSQL 18 or another PostgreSQL version with vector extension support
- Ollama running locally or on a reachable host
Setup
Install PHP and JavaScript dependencies:
composer install
npm install
Create the environment file and app key:
cp .env.example .env
php artisan key:generate
Configure PostgreSQL in .env:
DB_CONNECTION=pgsql
DB_HOST=127.0.0.1
DB_PORT=5432
DB_DATABASE=embedd_hub
DB_USERNAME=postgres
DB_PASSWORD=
Configure Ollama:
OLLAMA_URL=http://localhost:11434
OLLAMA_EMBEDDINGS_DIMENSIONS=768
The dimensions must match the embedding model you plan to use. Set this before running migrations so the vector column is created with the correct size.
Run migrations and build assets:
php artisan migrate
npm run build
Ollama
Start Ollama and pull at least one embedding-capable model:
ollama serve
ollama pull nomic-embed-text
Embedd HUB does not use a configured default model. The tool pages call the Ollama API and list the models returned from /api/tags. If Ollama cannot return that model list, embedding actions are disabled and the UI shows an offline status.
Development
For Laravel Herd, the app is available at:
https://embedd-hub.test
Common commands:
npm run dev
php artisan test --compact
vendor/bin/pint --dirty --format agent
Project Map
app/Services/EmbeddingWorkbench.php- embedding generation, search, comparison, and Ollama model discovery.app/Concerns/InteractsWithEmbeddingWorkbench.php- shared Livewire state for model selection and availability.resources/views/pages/embeddings- the Embed, Search, and Compare pages.resources/views/dashboard.blade.php- usage dashboard.database/migrations/*embedding*- vector storage and usage event tables.public/favicon.svg- source SVG favicon asset. It is intentionally not referenced in templates.
Testing
Run the full suite:
php artisan test --compact
Run only embedding tool tests:
php artisan test --compact tests/Feature/EmbeddingToolsTest.php