find-bufo#
semantic search for the bufo zone
live at: find-bufo.fly.dev
overview#
a one-page application for searching through all the bufos from bufo.zone using multi-modal embeddings and vector search.
architecture#
- backend: rust (actix-web)
- frontend: vanilla html/css/js
- embeddings: voyage ai voyage-multimodal-3
- vector store: turbopuffer
- deployment: fly.io
setup#
-
install dependencies:
- rust toolchain
- python 3.11+ with uv
-
copy environment variables:
cp .env.example .env -
set your api keys in
.env:VOYAGE_API_TOKEN- for generating embeddingsTURBOPUFFER_API_KEY- for vector storage
ingestion#
to populate the vector store with bufos:
uvx scripts/ingest_bufos.py
this will:
- scrape all bufos from bufo.zone
- download them to
data/bufos/ - generate embeddings for each image
- upload to turbopuffer
development#
run the server locally:
cargo run
the app will be available at http://localhost:8080
deployment#
deploy to fly.io:
fly launch # first time
fly secrets set VOYAGE_API_TOKEN=your_token
fly secrets set TURBOPUFFER_API_KEY=your_key
fly deploy
usage#
- open the app
- enter a search query describing the bufo you want
- see the top matching bufos with similarity scores
- click any bufo to open it in a new tab
how it works#
- ingestion: all bufo images are embedded using voyage ai's multimodal model
- search: user queries are embedded with the same model
- retrieval: turbopuffer finds the most similar bufos using cosine distance
- display: results are shown with similarity scores