Semantic search
Search by meaning, not keywords. Powered by Postgres and pgvector for fast vector and keyword search.
Open source meme search engine
Meme Search uses AI to index your memes by their content and text, making them instantly retrievable with semantic search. All processing runs locally on your machine.
Your memes deserve better than scrolling through folders. Index them once with local AI, then search by meaning — not just filenames.
Features
Search by meaning, not keywords. Powered by Postgres and pgvector for fast vector and keyword search.
AI models describe your memes automatically. Target specific memes or bulk-generate descriptions for your entire collection.
Create, edit, and assign tags. Filter by tags, directory paths, and description embeddings for precise control.
Edit or add descriptions manually for better search results. No need to wait for auto-generation.
Organize memes across multiple subdirectories. Rescan to automatically detect and index new additions.
Upload memes directly through the web interface. Supports JPG, PNG, WEBP with bulk upload up to 50 files.
Toggle between light and dark themes for comfortable viewing in any environment.
Generate descriptions for multiple memes at once for faster indexing of large collections.
One command to start. docker compose up pulls and runs the app, database, and AI generator.
How it works
Mount your meme directories via Docker volumes. The app detects and registers subdirectories through the settings UI.
A local vision-language model reads each meme and generates a text description. Choose from 6 models depending on your hardware.
Descriptions are embedded as vectors in Postgres with pgvector. Search returns memes ranked by semantic similarity to your query.
AI Models
All models run locally. Smaller models work on constrained hardware; larger ones produce richer descriptions.
Microsoft's compact vision-language model. Best balance of speed and quality for most setups.
Larger Florence variant for richer descriptions when you have the RAM to spare.
Hugging Face's lightweight model. Fast inference on minimal hardware.
Mid-range SmolVLM variant. Better descriptions than 256M with moderate resource use.
Full-size vision-language model. Best description quality, needs ~5GB memory.
Quantized Moondream2. Cuts memory to ~1.5-2GB with minimal quality loss. Ideal for CPU-only machines.
Install
Requires Docker and Docker Compose. The app runs on port 3000 by default, customizable via .env file.
git clone https://github.com/neonwatty/meme-search.git
cd meme-search
docker compose up
# Open http://localhost:3000
Tech stack
The web application, search interface, and meme management UI. Serves the frontend and orchestrates the pipeline.
Runs the image-to-text models. Receives memes via API, returns generated descriptions back to Rails.
Stores meme metadata, descriptions, tags, and vector embeddings. Powers both keyword and semantic search.