In MergerRetriever async call all retrievers in parallel (#10938)

pull/10940/head
Nuno Campos 11 months ago committed by GitHub
parent 66d5a7e7cf
commit aac2d4dcef
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -1,3 +1,4 @@
import asyncio
from typing import List
from langchain.callbacks.manager import (
@ -100,12 +101,14 @@ class MergerRetriever(BaseRetriever):
"""
# Get the results of all retrievers.
retriever_docs = [
await retriever.aget_relevant_documents(
query, callbacks=run_manager.get_child("retriever_{}".format(i + 1))
retriever_docs = await asyncio.gather(
*(
retriever.aget_relevant_documents(
query, callbacks=run_manager.get_child("retriever_{}".format(i + 1))
)
for i, retriever in enumerate(self.retrievers)
)
for i, retriever in enumerate(self.retrievers)
]
)
# Merge the results of the retrievers.
merged_documents = []

Loading…
Cancel
Save