In what's inside a vector, we built a little spreadsheet of animals — each described by the same columns (weight, legs, furriness, domesticated, flies), each row a vector. We saw that similar animals end up with similar rows. Nice picture. But a picture of storage isn't the point. The point is searching, and this is where the whole idea finally clicks.

Because searching that spreadsheet turns out to be almost embarrassingly simple: your search is just another row.

Turn your question into a row

Say you're picturing an animal and you want the database to find it: a medium-size, four-legged, furry, friendly pet that doesn't fly. You can't hand the computer that sentence. But you can do exactly what you did for every other animal — score it on the same columns:

And there it is — a row: [10, 4, 0.85, 0.9, 0]. That's your query. It looks exactly like the rows already in the table — all numbers, same columns — because it was built the same way. Every word you had in mind ("medium," "furry," "friendly") became a number in the same slot the animals use.

This is the whole secret, and it's worth saying slowly: your question lives in the same spreadsheet as the data. It's not a different kind of thing that has to be matched against the rows — it is a row. Searching is just figuring out which existing rows sit closest to the new one you added.

A search is just another row. The same animal table, with a new teal row labelled "your search" — weight 10, 4 legs, 0.85 furriness, 0.9 domesticated, 0 flies — dropping in below the existing rows, scored on the exact same columns. Your question lives in the same spreadsheet as the data; it is a row.

Find the nearest rows — by hand

So let's find them. Drop your query row in and compare it, column by column, to each animal already in the table. For each column, ask "how far apart are these two values?" — then combine those into a single sense of "how far apart overall."

Line them up and the answer is obvious: cat is the closest row, then dog, and the birds and the fish are far away. You just ran a vector search with your eyes. No algorithm, no math you couldn't do in your head — just "which rows are nearest to the one I added?"

The nearest rows win. Every row is sorted by how close it is to the query. A dot strip on each shows which columns agree: cat agrees on every column (ranked #1, very close), dog on all but weight (#2, close), while trout, eagle, and sparrow agree on almost nothing (far). A bracket marks top_k = 2, returning cat and dog. Search is just: add a row, then sort the rest by nearness.

That "how far apart overall" number is the only real machinery, and even it is simple: a single number summarizing the column-by-column differences. (There's more than one sensible way to compute it — that's the subject of cosine similarity vs Euclidean distance — but they're all answering the same question: how close are these two rows?)

This is what the search knobs actually mean

Once you see search as "add a row, sort the rest by nearness," the options a vector database gives you stop being jargon:

None of these are special features bolted on. They're the natural things to ask once results are just rows sorted by distance.

Why the query has to speak the same language

Here's a consequence that trips people up until they picture the spreadsheet — and then it's obvious. Your query row only makes sense if it uses the same columns, in the same order, as the data. Score your query on a different set of columns and the distances are meaningless: you'd be measuring "how far is furriness from weight," which is nonsense.

With hand-built columns you'd never make that mistake. But with real embeddings the columns are invented by a model, so "same columns" means "same model." Use one model for your data and a different one for your query and you get exactly this failure — rows that come back looking random. That's the number-one cause of weird results, and now you can see why: two different sets of columns aren't the same spreadsheet, so "nearest row" means nothing across them.

The same thing, just bigger

Everything above you did with five columns you chose and five rows you could eyeball. A real vector database changes only two things, and neither changes the idea:

Query becomes a row; nearest rows win. That operation is identical whether the spreadsheet has five rows or five billion.

Closing

The spreadsheet was never just a way to picture a vector — it's the actual machine. A vector database is a spreadsheet you search by writing one more row and looking at its neighbors. Your question and the stored data are the same kind of thing, described the same way, sitting in the same space, so "search" collapses into "sort by nearness."

That's the whole idea, and you can do it by hand. Everything else — the models, the billions of rows, the millisecond latencies — is that one move, scaled up.