SelfQueryRetriever.from_llm raises following issue: ImportError: Cannot import lark, please install it with 'pip install lark'.
Labels: name: area: vector store, name: auto:bug, name: integration: chroma

### System Info

Langchain v0.0.354, Python v3.11, Chroma v0.4.22, Lark v1.1.8

### Who can help?

@agola11 

### Information

- [ ] The official example notebooks/scripts
- [X] 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

```python
def load_self_query_retriever(persist_dir: str, docs: list, metadata_field_info: list, document_content_description = "Information about various documents, the date they are up to date with and where they were sourced from."):
    
    llm = ChatOpenAI(temperature=0)
    vectorstore = None

    try:
        vectorstore = Chroma(persist_directory=persist_dir, embedding_function=get_embedding_function())
    except:
        vectorstore = Chroma.from_documents(docs, get_embedding_function(), persist_directory=persist_dir)
    
    return SelfQueryRetriever.from_llm(
        llm,
        vectorstore,
        document_content_description,
        metadata_field_info,
    )

metadata_field_info = [
        AttributeInfo(name="source",description="The document this chunk is from.",type="string",),
        AttributeInfo(name="origin",description="The origin the document came from. Bancworks is the higher priority.",type="string",),
        AttributeInfo(name="date_day",description="The day the document was uploaded.",type="integer",),
        AttributeInfo(name="date_uploaded",description="The month year the document is current to.",type="integer",)
    ]

self_query_retriever = load_self_query_retriever("storage/deploy/chroma-db-self-query", bancworks_docs, metadata_field_info)
```

The following error is thrown:

```python
---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
Cell In[1], line 110
     76     return SelfQueryRetriever.from_llm(
     77         llm,
     78         vectorstore,
     79         document_content_description,
     80         metadata_field_info,
     81     )
     83 metadata_field_info = [
     84         AttributeInfo(name="source",description="The document this chunk is from.",type="string",),
     85         AttributeInfo(name="origin",description="The origin the document came from. Comes from either scraped websites like TheKinection.org, Kinecta.org or database files like Bancworks. Bancworks is the higher priority.",type="string",),
   (...)
    107         # ),
    108     ]
--> 110 self_query_retriever = load_self_query_retriever("storage/deploy/chroma-db-self-query", bancworks_docs, metadata_field_info)
    113 # parent_retriever = load_parent_retriever("full_docs", "storage/deploy/chroma-db-parent")
    114 
    115 # current_place = 0
   (...)
    127 # retriever.add_documents(bancworks_docs)
    128 # retriever.add_documents(bancworks_docs)
Cell In[1], line 76, in load_self_query_retriever(persist_dir, docs, metadata_field_info, document_content_description)
     73 llm = ChatOpenAI(temperature=0)
     74 vectorstore = Chroma.from_documents(docs, OpenAIEmbeddings(), persist_directory=persist_dir)
---> 76 return SelfQueryRetriever.from_llm(
     77     llm,
     78     vectorstore,
     79     document_content_description,
     80     metadata_field_info,
     81 )
File /etc/system/kernel/.venv/lib64/python3.11/site-packages/langchain/retrievers/self_query/base.py:225, in SelfQueryRetriever.from_llm(cls, llm, vectorstore, document_contents, metadata_field_info, structured_query_translator, chain_kwargs, enable_limit, use_original_query, **kwargs)
    218 if (
    219     "allowed_operators" not in chain_kwargs
    220     and structured_query_translator.allowed_operators is not None
    221 ):
    222     chain_kwargs[
    223         "allowed_operators"
    224     ] = structured_query_translator.allowed_operators
--> 225 query_constructor = load_query_constructor_runnable(
    226     llm,
    227     document_contents,
    228     metadata_field_info,
    229     enable_limit=enable_limit,
    230     **chain_kwargs,
    231 )
    232 return cls(
    233     query_constructor=query_constructor,
    234     vectorstore=vectorstore,
   (...)
    237     **kwargs,
    238 )
File /etc/system/kernel/.venv/lib64/python3.11/site-packages/langchain/chains/query_constructor/base.py:357, in load_query_constructor_runnable(llm, document_contents, attribute_info, examples, allowed_comparators, allowed_operators, enable_limit, schema_prompt, fix_invalid, **kwargs)
    353 for ainfo in attribute_info:
    354     allowed_attributes.append(
    355         ainfo.name if isinstance(ainfo, AttributeInfo) else ainfo["name"]
    356     )
--> 357 output_parser = StructuredQueryOutputParser.from_components(
    358     allowed_comparators=allowed_comparators,
    359     allowed_operators=allowed_operators,
    360     allowed_attributes=allowed_attributes,
    361     fix_invalid=fix_invalid,
    362 )
    363 return prompt | llm | output_parser
File /etc/system/kernel/.venv/lib64/python3.11/site-packages/langchain/chains/query_constructor/base.py:99, in StructuredQueryOutputParser.from_components(cls, allowed_comparators, allowed_operators, allowed_attributes, fix_invalid)
     96         return fixed
     98 else:
---> 99     ast_parse = get_parser(
    100         allowed_comparators=allowed_comparators,
    101         allowed_operators=allowed_operators,
    102         allowed_attributes=allowed_attributes,
    103     ).parse
    104 return cls(ast_parse=ast_parse)
File /etc/system/kernel/.venv/lib64/python3.11/site-packages/langchain/chains/query_constructor/parser.py:174, in get_parser(allowed_comparators, allowed_operators, allowed_attributes)
    172 # QueryTransformer is None when Lark cannot be imported.
    173 if QueryTransformer is None:
--> 174     raise ImportError(
    175         "Cannot import lark, please install it with 'pip install lark'."
    176     )
    177 transformer = QueryTransformer(
    178     allowed_comparators=allowed_comparators,
    179     allowed_operators=allowed_operators,
    180     allowed_attributes=allowed_attributes,
    181 )
    182 return Lark(GRAMMAR, parser="lalr", transformer=transformer, start="program")
ImportError: Cannot import lark, please install it with 'pip install lark'.
```

### Expected behavior

Be able to instantiate SelfQueryRetriever.from_llm successfully