code: def upgrade():
      # ### commands auto generated by Alembic - please adjust! ###
      op.create_table(
          "knowledge_base",
          sa.Column("id", sa.Integer(), nullable=False),
          sa.Column("name", sa.String(), nullable=False),
          sa.Column("project_id", sa.Integer(), nullable=False),
          sa.Column("params", sa.JSON(), nullable=True),
          sa.Column("vector_database_id", sa.Integer(), nullable=True),
          sa.Column(
              "vector_database_table", sa.String(), nullable=True
          ),
          sa.Column("embedding_model_id", sa.Integer(), nullable=True),
          sa.Column("created_at", sa.DateTime(), nullable=True),
          sa.Column("updated_at", sa.DateTime(), nullable=True),
          sa.ForeignKeyConstraint(
              ["embedding_model_id"],
              ["predictor.id"],
              name="fk_knowledge_base_embedding_model_id",
          ),
          sa.ForeignKeyConstraint(
              ["vector_database_id"],
              ["integration.id"],
              name="fk_knowledge_base_vector_database_id",
          ),
          sa.PrimaryKeyConstraint("id"),
          sa.UniqueConstraint(
              "name",
              "project_id",
              name="unique_knowledge_base_name_project_id",
          ),
      )
  
imports: import sqlalchemy
  from alembic import op
  import mindsdb.interfaces.storage.db
label_desc: Use image node_id 1 for calling a global function with example usage: upgrade() without return types