How to get correct entry from a local supermarket database from generated cooking recipe

So I have a query about how to go about this, I’ve been playing around a lot and learnt so much already.

So what I have is a database with ~10,000 products from local supermarket websites .
I also have a frontend which will generate recipes, now - the problem is im unsure how to match it up to a product in the shop database semantically when its generated.
Example:

Generated Ingredient: Ground Beef → The store calls this Premium Beef Mince
Now, when I try do matches fuzzily, we get these types of results which rank first:

Beef Rump Steak
Beef Scotch Fillet Steak
Beef Schnitzel
Diced Beef
Stir Fry Beef
etc…

Another example might be:
Onion(generated recipe ingredient) →
DB returns with fuzzy searching
Pickling Onions
Onion Powder

I have started playing around with Elasticsearch, and I’m thinking to embed some sort of vector.
I have the huge recipe list in it (around 2m recipes), but I’m unsure avenue I should take to get there.

Another approach I’m testing is using Llama3 8b to generate multiple “Synonyms” for the supermarket product entries, storing them in a seperate table.

And then handing it off to Llama3 70b via groq to classify and rank the synonyms 1-10, but that seems like overkill.
Looking for any input around approaches on this, it’s a fun learning experience!

EDIT:

Just for a little more context, I have this kind of data available on each item, the description is not very descriptive at all.
description | Diced Beef
product_id | 5104061-KGM-000NW
subcategories | Butchery, Fresh Beef & Lamb