BGE is a family of embedding models trained specifically for retrieval, available in sizes small enough to run locally. It solves the problem that a general-purpose embedding model is not optimised for the asymmetric comparison a search query and a document require. It exists because retrieval quality is set at the embedding step, so a model trained for it improves everything downstream without changing anything else.
Instructor embeds text together with an instruction describing what the embedding is for, so one model serves retrieval, clustering and classification without fine-tuning for each. It solves the problem that a single fixed embedding cannot be optimal for several different tasks, and fine-tuning a copy per task is expensive and easy to get wrong. It exists because telling the model what kind of similarity you want is a cheap substitute for training it to want that.