langchain-ai / langchain

🦜🔗 Build context-aware reasoning applications
https://python.langchain.com
MIT License
92.34k stars 14.76k forks source link

CohereAPIError thrown when base retriever returns empty documents in ContextualCompressionRetriever using Cohere Rank #5304

Closed hanguofeng closed 1 year ago

hanguofeng commented 1 year ago

System Info

Who can help?

No response

Information

Related Components

Reproduction

  1. Set up a retriever using any type of retriever (for example, I used Pinecone).
  2. Pass it into the ContextualCompressionRetriever.
  3. If the base retriever returns empty documents,
  4. It throws an error: cohere.error.CohereAPIError: invalid request: list of documents must not be empty

File "/workspaces/example/.venv/lib/python3.10/site-packages/langchain/retrievers/contextual_compression.py", line 37, in get_relevant_documents compressed_docs = self.base_compressor.compress_documents(docs, query) File "/workspaces/example/.venv/lib/python3.10/site-packages/langchain/retrievers/document_compressors/cohere_rerank.py", line 57, in compress_documents results = self.client.rerank( File "/workspaces/example/.venv/lib/python3.10/site-packages/cohere/client.py", line 633, in rerank reranking = Reranking(self._request(cohere.RERANK_URL, json=json_body)) File "/workspaces/example/.venv/lib/python3.10/site-packages/cohere/client.py", line 692, in _request self._check_response(json_response, response.headers, response.status_code) File "/workspaces/example/.venv/lib/python3.10/site-packages/cohere/client.py", line 642, in _check_response raise CohereAPIError( cohere.error.CohereAPIError: invalid request: list of documents must not be empty

Code is Like


retriever = vectorstore.as_retriever()
compressor = CohereRerank()
compression_retriever = ContextualCompressionRetriever(
    base_compressor=compressor, base_retriever=retriever
)
return compression_retriever

Expected behavior

no error throws and return empty list

dev2049 commented 1 year ago

good catch! happy to review if you want to open a fix, otherwise can get to it this weekend

dev2049 commented 1 year ago

ah see you already opened!