import os
import vertexai
from vertexai.vision_models import Image, MultiModalEmbeddingModel
from typing import List

class VertexVisionService:
    def __init__(self, project_id: str, location: str):
        # Ensure credentials are set before init if using service account key
        # os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "gemini-service-key.json" 
        vertexai.init(project=project_id, location=location)
        self.model = MultiModalEmbeddingModel.from_pretrained("multimodalembedding@001")

    def get_image_embedding(self, image_path: str) -> List[float]:
        image = Image.load_from_file(image_path)
        # Standardizing to 1408 dimensions for consistency
        embeddings = self.model.get_embeddings(image=image, dimension=1408)
        return embeddings.image_embedding
