langchain: Update ContextualCompressionRetriever base_retriever type to RetrieverLike #24192
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description:
When initializing retrievers with
configurable_fields
as base retriever,ContextualCompressionRetriever
validation fails with the following error:Example code:
It seems like the issue stems from ContextualCompressionRetriever insisting that base retrievers must be strictly
BaseRetriever
inherited, and doesn't take into account cases where retrievers need to be chained and can have configurable fields defined.langchain/libs/langchain/langchain/retrievers/contextual_compression.py
Lines 15 to 22 in 0a1e475
This PR proposes that the base_retriever type be set to
RetrieverLike
, similar to howEnsembleRetriever
validates its list of retrievers:langchain/libs/langchain/langchain/retrievers/ensemble.py
Lines 58 to 75 in 0a1e475