I am a beginner in the field of homomomorphic encryption. I want to compute a distance metric (e.g. Hamming, Euclidean distance) between encrypted binary vectors. The size of the vectors is usually 256 or 512. What scheme or library should I use to implement this in an efficient way? Thank you

Hello! It depends. Hamming distance might be computed using FHEW/TFHE and using a XOR between the two vectors.

On the other hand, Euclidean distance requires square root and squaring. I think you can always use FHEW/TFHE with Look up Tables (LUT), but I never used them.
You could use CKKS as follows (pseudocode):

X \gets \texttt{Encrypt}([1,2,3,4, \dots])

Y \gets \texttt{Encrypt}([4,6,4, 0, \dots])

Euclidean distance is computed as:

\sqrt{\sum_i^n(x_i - y_i)^2}

where x_i is the i-th element of X, and y_i is the i-th element of Y.

We can compute all the differences in one single SIMD operation:

\Delta \gets \texttt{EvalSub}(X, Y)

When we square it:

\Delta \gets \texttt{EvalSquare}(\Delta)

As a last step, we have to add all the elements together. Naively, in case of 256: