/ src / embeddings / gemini.py
gemini.py
 1  from __future__ import annotations
 2  
 3  """Gemini (Google Generative AI) embedding model implementation."""
 4  
 5  from typing import Any
 6  
 7  from langchain_google_genai import GoogleGenerativeAIEmbeddings
 8  
 9  from .protocol import Embeddings
10  
11  
12  def create_gemini_embedding(config: dict[str, Any]) -> Embeddings:
13      """Create Gemini embedding model.
14  
15      Parameters
16      ----------
17      config
18          Configuration dictionary. Common parameters include:
19          - model: str (optional) - Model name (e.g., "models/text-embedding-004")
20          - google_api_key: str (optional)
21          - Other parameters supported by GoogleGenerativeAIEmbeddings.
22          Invalid parameters will be caught by GoogleGenerativeAIEmbeddings and raise clear errors.
23      """
24      try:
25          return GoogleGenerativeAIEmbeddings(
26              model=config.get("model_name"),
27              google_api_key=config.get("google_api_key")
28          )
29      except TypeError as e:
30          raise ValueError(
31              f"Invalid parameter for Gemini embedding model: {e}. "
32              "Check GoogleGenerativeAIEmbeddings documentation for valid parameters."
33          ) from e
34      except Exception as e:
35          raise ValueError(f"Failed to create Gemini embedding model: {e}") from e
36