# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.

from __future__ import annotations

from typing import Dict, Union
from typing_extensions import Literal, Required, TypeAlias, TypedDict

from .embedding_config_base_param import EmbeddingConfigBaseParam
from .embedding_config_models_api_param import EmbeddingConfigModelsAPIParam

__all__ = ["VectorStoreCreateParams", "EmbeddingConfig"]


class VectorStoreCreateParams(TypedDict, total=False):
    name: Required[str]
    """A unique name for the vector store within the account"""

    embedding_config: EmbeddingConfig
    """The embedding configuration.

    Either 'base' type with an embedding_model, or 'models_api' type with a
    model_deployment_id for custom models.
    """

    embedding_model: Literal[
        "sentence-transformers/all-MiniLM-L12-v2",
        "sentence-transformers/all-mpnet-base-v2",
        "sentence-transformers/multi-qa-distilbert-cos-v1",
        "sentence-transformers/paraphrase-multilingual-mpnet-base-v2",
        "openai/text-embedding-ada-002",
        "openai/text-embedding-3-small",
        "openai/text-embedding-3-large",
        "embed-english-v3.0",
        "embed-english-light-v3.0",
        "embed-multilingual-v3.0",
        "gemini/text-embedding-005",
        "gemini/text-multilingual-embedding-002",
        "gemini/gemini-embedding-001",
    ]
    """The base embedding model to use.

    Shorthand for embedding_config with type 'base'. Provide either embedding_config
    or embedding_model, not both.
    """

    indexed_metadata_fields: Dict[str, Literal["string", "number", "boolean"]]
    """Dictionary mapping metadata field names to their types for efficient filtering.

    Only STRING, NUMBER, and BOOLEAN types can be indexed.
    """


EmbeddingConfig: TypeAlias = Union[EmbeddingConfigModelsAPIParam, EmbeddingConfigBaseParam]
