class_docstr: The `IndexCatalogEntry` catalog stores information about all the indexes in the system.
  `_row_id:` an autogenerated unique identifier.
  `_name:` the name of the index.
  `_save_file_path:` the path to the index file on disk
  `_type:` the type of the index (refer to `VectorStoreType`)
  `_feat_column_id:` the `_row_id` of the `ColumnCatalog` entry for the column on which the index is built.
  `_function_signature:` if the index is created by running function expression on input column, this will store
                    the function signature of the used function. Otherwise, this field is None.
  `_index_def:` the original SQL statement that is used to create this index. We record this to rerun create index
              on updated table.
code: def __init__(
      self,
      name: str,
      save_file_path: str,
      type: VectorStoreType,
      feat_column_id: int = None,
      function_signature: str = None,
      index_def: str = None,
  ):
      self._name = name
      self._save_file_path = save_file_path
      self._type = type
      self._feat_column_id = feat_column_id
      self._function_signature = function_signature
      self._index_def = index_def
  
file_path: evadb/evadb/catalog/models/index_catalog.py
imports: from sqlalchemy import Column, ForeignKey, Integer, String
  from sqlalchemy.orm import relationship
  from sqlalchemy.types import Enum
  from evadb.catalog.catalog_type import VectorStoreType
  from evadb.catalog.models.base_model import BaseModel
  from evadb.catalog.models.utils import IndexCatalogEntry
label_desc: Use image node_id 1 to create a new IndexCatalog object from inherited base classes: BaseModel with example: obj = IndexCatalog(name, save_file_path, type, feat_column_id, function_signature, index_def)