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 as_dataclass(self) -> "IndexCatalogEntry":
      feat_column = (
          self._feat_column.as_dataclass()
          if self._feat_column
          else None
      )
      return IndexCatalogEntry(
          row_id=self._row_id,
          name=self._name,
          save_file_path=self._save_file_path,
          type=self._type,
          feat_column_id=self._feat_column_id,
          function_signature=self._function_signature,
          index_def=self._index_def,
          feat_column=feat_column,
      )
  
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 2 for calling the IndexCatalog obj's underlying member method code with example usage: obj.as_dataclass() and returns: IndexCatalogEntry