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
        """
        if len(vectors) < 1:
            raise ValueError('Cannot interpolate an empty list of vectors')

        if len(vectors) != len(weights):
            raise ValueError('Vectors and weights must have the same length')

        weight_sum = sum(weights)

        if weight_sum == 0:
            raise ZeroSumWeightsError(
                'Sum of weights is zero. LERP cannot interpolate vectors with zero sum of weights'
            )

        result = [0] * len(vectors[0])
        current_length = len(vectors[0])
        for vector, weight in zip(vectors, weights):
            if len(vector) != current_length:
                raise ValueError('Vectors must have the same length')
            current_length = len(vector)

            for i, value in enumerate(vector):
                result[i] += (weight / weight_sum) * value
        return 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
        
src/marqo/core/utils/vector_interpolation.py