Having issues importing KNNRetriever from Langchain 

### System Info

version: 0.0.194
Platform: Running in HEX notebook with python version 3.9

When trying to import KNN retriever I get the below error: 
"typing.ClassVar[typing.Collection[str]] is not valid as type argument"


Here's my code: 

`from langchain.retrievers import KNNRetriever
from langchain.embeddings import OpenAIEmbeddings
from langchain.chains import RetrievalQA`


Here's the error report: 

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-12-da50b4368ae7> in <cell line: 1>()
----> 1 from langchain.retrievers import KNNRetriever
      2 from langchain.embeddings import OpenAIEmbeddings
      3 from langchain.chains import RetrievalQA

~/.cache/pypoetry/virtualenvs/python-kernel-OtKFaj5M-py3.9/lib/python3.9/site-packages/langchain/__init__.py in <module>
      4 from typing import Optional
      5 
----> 6 from langchain.agents import MRKLChain, ReActChain, SelfAskWithSearchChain
      7 from langchain.cache import BaseCache
      8 from langchain.chains import (

~/.cache/pypoetry/virtualenvs/python-kernel-OtKFaj5M-py3.9/lib/python3.9/site-packages/langchain/agents/__init__.py in <module>
      1 """Interface for agents."""
----> 2 from langchain.agents.agent import (
      3     Agent,
      4     AgentExecutor,
      5     AgentOutputParser,

~/.cache/pypoetry/virtualenvs/python-kernel-OtKFaj5M-py3.9/lib/python3.9/site-packages/langchain/agents/agent.py in <module>
     14 
     15 from langchain.agents.agent_types import AgentType
---> 16 from langchain.agents.tools import InvalidTool
     17 from langchain.base_language import BaseLanguageModel
     18 from langchain.callbacks.base import BaseCallbackManager

~/.cache/pypoetry/virtualenvs/python-kernel-OtKFaj5M-py3.9/lib/python3.9/site-packages/langchain/agents/tools.py in <module>
      6     CallbackManagerForToolRun,
      7 )
----> 8 from langchain.tools.base import BaseTool, Tool, tool
      9 
     10 

~/.cache/pypoetry/virtualenvs/python-kernel-OtKFaj5M-py3.9/lib/python3.9/site-packages/langchain/tools/__init__.py in <module>
     44 )
     45 from langchain.tools.plugin import AIPluginTool
---> 46 from langchain.tools.powerbi.tool import (
     47     InfoPowerBITool,
     48     ListPowerBITool,

~/.cache/pypoetry/virtualenvs/python-kernel-OtKFaj5M-py3.9/lib/python3.9/site-packages/langchain/tools/powerbi/tool.py in <module>
      9     CallbackManagerForToolRun,
     10 )
---> 11 from langchain.chains.llm import LLMChain
     12 from langchain.tools.base import BaseTool
     13 from langchain.tools.powerbi.prompt import (

~/.cache/pypoetry/virtualenvs/python-kernel-OtKFaj5M-py3.9/lib/python3.9/site-packages/langchain/chains/__init__.py in <module>
      1 """Chains are easily reusable components which can be linked together."""
----> 2 from langchain.chains.api.base import APIChain
      3 from langchain.chains.api.openapi.chain import OpenAPIEndpointChain
      4 from langchain.chains.combine_documents.base import AnalyzeDocumentChain
      5 from langchain.chains.constitutional_ai.base import ConstitutionalChain

~/.cache/pypoetry/virtualenvs/python-kernel-OtKFaj5M-py3.9/lib/python3.9/site-packages/langchain/chains/api/base.py in <module>
     11     CallbackManagerForChainRun,
     12 )
---> 13 from langchain.chains.api.prompt import API_RESPONSE_PROMPT, API_URL_PROMPT
     14 from langchain.chains.base import Chain
     15 from langchain.chains.llm import LLMChain

~/.cache/pypoetry/virtualenvs/python-kernel-OtKFaj5M-py3.9/lib/python3.9/site-packages/langchain/chains/api/prompt.py in <module>
      1 # flake8: noqa
----> 2 from langchain.prompts.prompt import PromptTemplate
      3 
      4 API_URL_PROMPT_TEMPLATE = """You are given the below API Documentation:
      5 {api_docs}

~/.cache/pypoetry/virtualenvs/python-kernel-OtKFaj5M-py3.9/lib/python3.9/site-packages/langchain/prompts/__init__.py in <module>
      1 """Prompt template classes."""
      2 from langchain.prompts.base import BasePromptTemplate, StringPromptTemplate
----> 3 from langchain.prompts.chat import (
      4     AIMessagePromptTemplate,
      5     BaseChatPromptTemplate,

~/.cache/pypoetry/virtualenvs/python-kernel-OtKFaj5M-py3.9/lib/python3.9/site-packages/langchain/prompts/chat.py in <module>
      8 from pydantic import BaseModel, Field
      9 
---> 10 from langchain.memory.buffer import get_buffer_string
     11 from langchain.prompts.base import BasePromptTemplate, StringPromptTemplate
     12 from langchain.prompts.prompt import PromptTemplate

~/.cache/pypoetry/virtualenvs/python-kernel-OtKFaj5M-py3.9/lib/python3.9/site-packages/langchain/memory/__init__.py in <module>
     28 from langchain.memory.summary_buffer import ConversationSummaryBufferMemory
     29 from langchain.memory.token_buffer import ConversationTokenBufferMemory
---> 30 from langchain.memory.vectorstore import VectorStoreRetrieverMemory
     31 
     32 __all__ = [

~/.cache/pypoetry/virtualenvs/python-kernel-OtKFaj5M-py3.9/lib/python3.9/site-packages/langchain/memory/vectorstore.py in <module>
      8 from langchain.memory.utils import get_prompt_input_key
      9 from langchain.schema import Document
---> 10 from langchain.vectorstores.base import VectorStoreRetriever
     11 
     12 

~/.cache/pypoetry/virtualenvs/python-kernel-OtKFaj5M-py3.9/lib/python3.9/site-packages/langchain/vectorstores/__init__.py in <module>
      1 """Wrappers on top of vector stores."""
----> 2 from langchain.vectorstores.analyticdb import AnalyticDB
      3 from langchain.vectorstores.annoy import Annoy
      4 from langchain.vectorstores.atlas import AtlasDB
      5 from langchain.vectorstores.base import VectorStore

~/.cache/pypoetry/virtualenvs/python-kernel-OtKFaj5M-py3.9/lib/python3.9/site-packages/langchain/vectorstores/analyticdb.py in <module>
     20 from langchain.embeddings.base import Embeddings
     21 from langchain.utils import get_from_dict_or_env
---> 22 from langchain.vectorstores.base import VectorStore
     23 
     24 Base = declarative_base()  # type: Any

~/.cache/pypoetry/virtualenvs/python-kernel-OtKFaj5M-py3.9/lib/python3.9/site-packages/langchain/vectorstores/base.py in <module>
    355 
    356 
--> 357 class VectorStoreRetriever(BaseRetriever, BaseModel):
    358     vectorstore: VectorStore
    359     search_type: str = "similarity"

~/.cache/pypoetry/virtualenvs/python-kernel-OtKFaj5M-py3.9/lib/python3.9/site-packages/pydantic/main.cpython-39-x86_64-linux-gnu.so in pydantic.main.ModelMetaclass.__new__()

~/.cache/pypoetry/virtualenvs/python-kernel-OtKFaj5M-py3.9/lib/python3.9/site-packages/pydantic/typing.cpython-39-x86_64-linux-gnu.so in pydantic.typing.resolve_annotations()

/usr/local/lib/python3.9/typing.py in _eval_type(t, globalns, localns, recursive_guard)
    290     """
    291     if isinstance(t, ForwardRef):
--> 292         return t._evaluate(globalns, localns, recursive_guard)
    293     if isinstance(t, (_GenericAlias, GenericAlias)):
    294         ev_args = tuple(_eval_type(a, globalns, localns, recursive_guard) for a in t.__args__)

/usr/local/lib/python3.9/typing.py in _evaluate(self, globalns, localns, recursive_guard)
    551                     sys.modules.get(self.__forward_module__, None), '__dict__', globalns
    552                 )
--> 553             type_ = _type_check(
    554                 eval(self.__forward_code__, globalns, localns),
    555                 "Forward references must evaluate to types.",

/usr/local/lib/python3.9/typing.py in _type_check(arg, msg, is_argument, module, allow_special_forms)
    156     if (isinstance(arg, _GenericAlias) and
    157             arg.__origin__ in invalid_generic_forms):
--> 158         raise TypeError(f"{arg} is not valid as type argument")
    159     if arg in (Any, NoReturn, Final):
    160         return arg

TypeError: typing.ClassVar[typing.Collection[str]] is not valid as type argument



### Who can help?

@vowelparrot @ag

### Information

- [ ] The official example notebooks/scripts
- [ ] My own modified scripts

### Related Components

- [X] 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

1. from langchain.retrievers import KNNRetriever in an environment with python 3.9

### Expected behavior

This should error out throwing the error message "typing.ClassVar[typing.Collection[str]] is not valid as type argument"