Skip to main content
A source is where your data lives: a place you upload files to, or a bucket Splendor reads from. You don’t tell a source what kind of data it holds. Drop in JSONL, CSV, or images and Splendor works out what each file is and makes it searchable — text files become searchable records, images become searchable by their visual content. One source can hold a mix of both.
Because every file is handled on its own, a single source can hold your records and the images those records reference — no second source, no separate pipeline.

What each file becomes

Records that carry an image

A common, powerful pattern: a record that points at an image, found by both its fields and what the image actually looks like — with no duplicate entry for the image. Say each product in your catalog has a photo. Tell the source which field holds the image:
Then add records like:
Splendor reads that image from your source, understands it, and attaches that understanding to the record. A semantic search for “a brown wooden chair” (with content_filter: "images") returns the product record — which you can still filter by color = "brown" like any other field. One record, found by what it says and what it looks like.

Where the image lives

The image field can point three ways — always to data you own (a value can never reach storage that isn’t yours): These are references to an object in a source you own — not public web URLs. Splendor never fetches an arbitrary http(s):// address. If your records carry image URLs (a scraped or third-party dataset), download the images into a source first — a hosted upload or your own S3 bucket — and reference the stored key. Splendor reads each referenced image once, however many records reference it, and re-reads it automatically if you replace it — so visual search always reflects the current image. Supported image types: .png, .jpg, .jpeg, .gif, .webp, added the same way as any other file.

A searchable image library

If your records don’t reference any images, the images in a source become standalone — each its own searchable document — so the source doubles as an image library you query by visual similarity. If you want both at once — records that reference images and those images searchable on their own — turn it on explicitly:
A field holds either text or an image reference, not both.

Next

Ingest a dataset

Create a source and add your first records and images.

Semantic search

Search by meaning, including content_filter: "images" for visual matches.