About

Why I built this

Cause why not? I basically wanted to maximise token use on my AI subscriptions.

Context

Public art collections are interesting because the data is visual, textual, and messy. People search collections in different ways: researchers look for names, dates, and accession numbers; marketing teams look for themes; artists look for mood, colour, and form; casual users ask loose questions.

Data

Paillette brings together publicly available collection data from the National Gallery of Art, Washington, National Gallery Singapore and Roots. The NGA search currently covers 63,253 artwork records with an open-access published image, rather than the Gallery's entire collection.

System architecture

From browser request to ranked result. The query becomes a search plan before retrieval channels produce candidates for ranking.

WEBVisitor browserUIRemix web WorkerKEYAuth + quotaPLANQuery plan + routeRRFRRF + hydrationAIJina / Workers AIVECVectorize image + textVECVectorize captionsD1D1 metadata + usageR2Artwork assetsHTTPS searchPOST /searchvalidate + reserveembed queryvector querymetadata queryranked candidatesranked JSONGET artwork assetimage responseClientCloudflare edgeModel providerCloudflare dataHono API Worker

Approach

Query interpretation

For NGA search, the parser turns a query into up to five typed parts. The diagram shows what each part is and how it changes the search plan.

What an NGA query is deconstructed intoSelect a labelled phrase to see how it changes the search plan.
of

Hover or focus to preview. Click to keep a part selected. Artwork relationship and artist attribution are separate parser modes.

Selected part

Descriptive meaning

Semantic retrieval · ships

Ships supplies the descriptive retrieval text. The oil, Painting, and displayed-date constraints still apply to every candidate.

View all details
Descriptive meaningHow it is found

Words remaining after structured phrases move into hard constraints

“oil paintings of ships before 1800” → “ships”

What it controlsSemantic retrieval: ships
Catalogue metadataHow it is found

Controlled classification and medium vocabularies

“oil paintings”

What it controlsHard filters: Painting · oil
Displayed timeHow it is found

Date grammar: years, ranges, before/after, decades, centuries, circa

“before 1800”

What it controlsHard displayed-date range: 1000–1799
Artwork relationshipHow it is found

Directional connectors such as showing, with, depicted in, or based on

“painting showing a sculpture”

What it controlsReturn paintings · require depicted sculpture
Artist attributionHow it is found

Ordered phrases such as by, after, attributed to, workshop, circle, or follower

“oil paintings by Rembrandt”

What it controlsCatalogue relation: directly by Rembrandt

That search plan becomes the input to retrieval and ranking.

Retrieval and ranking

For hybrid or mixed semantic queries, the search plan sends retrieval text to the relevant search channels, then combines their ranked results with reciprocal rank fusion (RRF). Explicit facet searches use direct catalogue lookups, while NGA attribution queries use a direct evidence path.

For example, an accession number leans on metadata. "Blue abstract painting" leans on colour and image similarity. "Works about migration" leans on captions and keywords.

Limitations

Paillette can only search what is in the corpus. If there are no relevant works for something like "Dragon Boat Festival", the results will not magically become correct.

Future work could include query expansion, alternative query generation, and clearer "no strong match" handling.

Feedback

Send bugs, confusing results, missing workflows, or ideas for the search. You will get an email acknowledgement.

Experimental search, not an official catalogue; verify important details with linked source records.