def interpolate(self, vectors: List[List[float]], weights: List[float],
                    prenormalized: bool = False) -> List[float]:
        """
        Interpolates a list of vectors using the given weights.

        Args:
            vectors: A list of vectors to interpolate
            weights: A list of weights to use for the interpolation. If None, the interpolation will be done using
            equal weights for all vectors
            prenormalized: Ignored for LERP

        Returns:
            The interpolated vector

        Raises:
            ZeroSumWeightsError: If the sum of the weights is zero
            ZeroMagnitudeVectorError: If the interpolated vector has zero magnitude
        """
        lerp_result = super().interpolate(vectors, weights)
        length = math.sqrt(sum(x ** 2 for x in lerp_result))

        if length == 0:
            raise ZeroMagnitudeVectorError(
                'Interpolated vector has zero magnitude. Cannot normalize a vector with zero magnitude'
            )

        return [x / length for x in lerp_result]

        Interpolates a list of vectors using the given weights.

        Args:
            vectors: A list of vectors to interpolate
            weights: A list of weights to use for the interpolation. If None, the interpolation will be done using
            equal weights for all vectors
            prenormalized: Ignored for LERP

        Returns:
            The interpolated vector

        Raises:
            ZeroSumWeightsError: If the sum of the weights is zero
            ZeroMagnitudeVectorError: If the interpolated vector has zero magnitude
        
src/marqo/core/utils/vector_interpolation.py