An embedding model is a language model trained for this one job. It cuts the text into tokens, reads them together, and returns one list of numbers for the whole text. The length of the list is called the number of dimensions, and it is fixed for each model: nomic-embed-text returns 768 numbers, bge-m3 returns 1,024, and OpenAI's text-embedding-3-small returns 1,536.
During training, the model sees many pairs of texts that belong together, such as a question and its answer, and many pairs that do not. It is adjusted step by step, so that pairs that belong together point the same way and other pairs point apart. Nobody tells it what each number means, so no single number has a meaning you can name. The meaning is spread across the whole list.
The same text gives the same list from the same model, or very nearly the same on different hardware. So you embed your documents once, store the lists, and at question time you embed only the question and compare. The usual comparison is cosine similarity, a score based on the angle between two lists, where a value near 1 means very close in meaning.