column_map (Dict) : Column type map to project column name onto langchain
                            semantics. Must have keys: `text`, `id`, `vector`,
                            must be same size to number of columns. For example:
                            .. code-block:: python
                                {
                                    'id': 'text_id',
                                    'vector': 'text_embedding',
                                    'text': 'text_plain',
                                    'metadata': 'metadata_dictionary_in_json',
                                }
                            Defaults to identity map.
    """
    host: str = "localhost"
    port: int = 8443
    username: Optional[str] = None
    password: Optional[str] = None
    index_type: str = "MSTG"
    index_param: Optional[Dict[str, str]] = None
    column_map: Dict[str, str] = {
        "id": "id",
        "text": "text",
        "vector": "vector",
        "metadata": "metadata",
    }
    database: str = "default"
    table: str = "langchain"
    metric: str = "Cosine"
    def __getitem__(self, item: str) -> Any:
        return getattr(self, item)
    class Config:
        env_file = ".env"
        env_prefix = "myscale_"
        env_file_encoding = "utf-8"
[docs]class MyScale(VectorStore):
    """`MyScale` vector store.
    You need a `clickhouse-connect` python package, and a valid account
    to connect to MyScale.
    MyScale can not only search with simple vector indexes.
    It also supports a complex query with multiple conditions,
    constraints and even sub-queries.
    For more information, please visit