The benchmark function measures whether any neighbour shares defect_type, which is useful as a semantic hit rate, but it is different from ANN recall against exact neighbours. It can also count the same defect name on an unrelated part category as a success.
I would report those separately: exact-neighbour agreement for the database, and category-aware defect hit rate for the application. Include text-to-image queries in the latter, since the current function only encodes query images. That would make the 0.974 figure easier to interpret without mixing index approximation quality, CLIP relevance and cross-modal search behavior into one label.