sqlalchemy fails to initialize with KeyError "EmbeddingStore"
Labels: name: auto:bug

### Why do I care about this issue?
MLflow also uses sqlalchemy to handle sqlite-based storage, and calls `sqlalchemy.orm.configure_mappers()` during initialization. With langchain>=0.0.228, MLflow fails to start. All MLflow users who choose sqlite-based storage cannot use it with langchain. 

### System Info

langchain>=0.0.228

### Who can help?

@hwchase17 

### Information

- [X] The official example notebooks/scripts
- [ ] My own modified scripts

### Related Components

- [ ] LLMs/Chat Models
- [ ] Embedding Models
- [ ] Prompts / Prompt Templates / Prompt Selectors
- [ ] Output Parsers
- [ ] Document Loaders
- [X] Vector Stores / Retrievers
- [ ] Memory
- [ ] Agents / Agent Executors
- [ ] Tools / Toolkits
- [ ] Chains
- [ ] Callbacks/Tracing
- [ ] Async

### Reproduction

Executing the following command fails with langchain >= 0.0.228, and no error occurs for langchain <= 0.0.227:
```python
import langchain
import sqlalchemy
sqlalchemy.orm.configure_mappers()
```
Error:
```
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File ~/miniconda3/envs/mlflow-dev-env/lib/python3.8/site-packages/sqlalchemy/orm/clsregistry.py:515, in _class_resolver._resolve_name(self)
    514 if rval is None:
--> 515     rval = d[token]
    516 else:

File ~/miniconda3/envs/mlflow-dev-env/lib/python3.8/site-packages/sqlalchemy/util/_collections.py:346, in PopulateDict.__missing__(self, key)
    345 def __missing__(self, key: Any) -> Any:
--> 346     self[key] = val = self.creator(key)
    347     return val

File ~/miniconda3/envs/mlflow-dev-env/lib/python3.8/site-packages/sqlalchemy/orm/clsregistry.py:483, in _class_resolver._access_cls(self, key)
    481             return value
--> 483 return self.fallback[key]

KeyError: 'EmbeddingStore'

The above exception was the direct cause of the following exception:

InvalidRequestError                       Traceback (most recent call last)
Cell In[3], line 1
----> 1 sqlalchemy.orm.configure_mappers()

File ~/miniconda3/envs/mlflow-dev-env/lib/python3.8/site-packages/sqlalchemy/orm/mapper.py:4167, in configure_mappers()
   4099 def configure_mappers():
   4100     """Initialize the inter-mapper relationships of all mappers that
   4101     have been constructed thus far across all :class:`_orm.registry`
   4102     collections.
   (...)
   4164
   4165     """
-> 4167     _configure_registries(_all_registries(), cascade=True)

File ~/miniconda3/envs/mlflow-dev-env/lib/python3.8/site-packages/sqlalchemy/orm/mapper.py:4198, in _configure_registries(registries, cascade)
   4192     Mapper.dispatch._for_class(Mapper).before_configured()  # type: ignore # noqa: E501
   4193     # initialize properties on all mappers
   4194     # note that _mapper_registry is unordered, which
   4195     # may randomly conceal/reveal issues related to
   4196     # the order of mapper compilation
-> 4198     _do_configure_registries(registries, cascade)
   4199 finally:
   4200     _already_compiling = False

File ~/miniconda3/envs/mlflow-dev-env/lib/python3.8/site-packages/sqlalchemy/orm/mapper.py:4239, in _do_configure_registries(registries, cascade)
   4237 if not mapper.configured:
   4238     try:
-> 4239         mapper._post_configure_properties()
   4240         mapper._expire_memoizations()
   4241         mapper.dispatch.mapper_configured(mapper, mapper.class_)

File ~/miniconda3/envs/mlflow-dev-env/lib/python3.8/site-packages/sqlalchemy/orm/mapper.py:2403, in Mapper._post_configure_properties(self)
   2400 self._log("initialize prop %s", key)
   2402 if prop.parent is self and not prop._configure_started:
-> 2403     prop.init()
   2405 if prop._configure_finished:
   2406     prop.post_instrument_class(self)

File ~/miniconda3/envs/mlflow-dev-env/lib/python3.8/site-packages/sqlalchemy/orm/interfaces.py:578, in MapperProperty.init(self)
    571 """Called after all mappers are created to assemble
    572 relationships between mappers and perform other post-mapper-creation
    573 initialization steps.
    574
    575
    576 """
    577 self._configure_started = True
--> 578 self.do_init()
    579 self._configure_finished = True

File ~/miniconda3/envs/mlflow-dev-env/lib/python3.8/site-packages/sqlalchemy/orm/relationships.py:1632, in RelationshipProperty.do_init(self)
   1630 self._check_conflicts()
   1631 self._process_dependent_arguments()
-> 1632 self._setup_entity()
   1633 self._setup_registry_dependencies()
   1634 self._setup_join_conditions()

File ~/miniconda3/envs/mlflow-dev-env/lib/python3.8/site-packages/sqlalchemy/orm/relationships.py:1849, in RelationshipProperty._setup_entity(self, _RelationshipProperty__argument)
   1842 resolved_argument: _ExternalEntityType[Any]
   1844 if isinstance(argument, str):
   1845     # we might want to cleanup clsregistry API to make this
   1846     # more straightforward
   1847     resolved_argument = cast(
   1848         "_ExternalEntityType[Any]",
-> 1849         self._clsregistry_resolve_name(argument)(),
   1850     )
   1851 elif callable(argument) and not isinstance(
   1852     argument, (type, mapperlib.Mapper)
   1853 ):
   1854     resolved_argument = argument()

File ~/miniconda3/envs/mlflow-dev-env/lib/python3.8/site-packages/sqlalchemy/orm/clsregistry.py:519, in _class_resolver._resolve_name(self)
    517             rval = getattr(rval, token)
    518 except KeyError as err:
--> 519     self._raise_for_name(name, err)
    520 except NameError as n:
    521     self._raise_for_name(n.args[0], n)

File ~/miniconda3/envs/mlflow-dev-env/lib/python3.8/site-packages/sqlalchemy/orm/clsregistry.py:500, in _class_resolver._raise_for_name(self, name, err)
    490     raise exc.InvalidRequestError(
    491         f"When initializing mapper {self.prop.parent}, "
    492         f'expression "relationship({self.arg!r})" seems to be '
   (...)
    497         f"['{clsarg}']] = relationship()\""
    498     ) from err
    499 else:
--> 500     raise exc.InvalidRequestError(
    501         "When initializing mapper %s, expression %r failed to "
    502         "locate a name (%r). If this is a class name, consider "
    503         "adding this relationship() to the %r class after "
    504         "both dependent classes have been defined."
    505         % (self.prop.parent, self.arg, name, self.cls)
    506     ) from err

InvalidRequestError: When initializing mapper Mapper[CollectionStore(langchain_pg_collection)], expression 'EmbeddingStore' failed to locate a name ('EmbeddingStore'). If this is a class name, consider adding this relationship() to the <class 'langchain.vectorstores.pgvector.CollectionStore'> class after both dependent classes have been defined.
```
It's likely to be introduced by this PR https://github.com/hwchase17/langchain/pull/7370.

### Expected behavior

No error should occur.