Another way of looking at "worse is better" is observing that, while "worse" delivers some results sooner, it also sucks out the oxygen from the room, preventing "better" from ever happening. Iterate it a few times, building one "worse" thing on another "worse" thing, and it's not hard to see why our whole tech stacks are so bad.
I'll still take code that works in practise over code that works in theory, any day. Turning an idea into practise is not easy and often involves lots of edge cases nobody ever talks about because they aren't the "interesting" part of the solution. I suspect people overestimate how workable some of these theoretically better systems are in reality.
I don’t know much about semantic search. But.
PHP is the success story of the Internet and it is the complete opposite of perfection. Go figure.