The 768-versus-384 dimension guard is useful, but model identity needs to be first-class metadata too. Two embedding models can produce vectors with the same dimension and still occupy incompatible spaces, so a dimension check alone can silently pass bad comparisons. I would store model name, revision, and normalization settings with every row, then partition or migrate the index whenever that fingerprint changes.