mirror of
https://github.com/hwchase17/langchain.git
synced 2025-07-04 12:18:24 +00:00
Add async search with relevance score (#4558)
Add the async version for the search with relevance score Co-authored-by: Dev 2049 <dev.dev2049@gmail.com>
This commit is contained in:
parent
616e9a93e0
commit
22d844dc07
@ -166,6 +166,17 @@ class VectorStore(ABC):
|
|||||||
"""
|
"""
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
|
|
||||||
|
async def asimilarity_search_with_relevance_scores(
|
||||||
|
self, query: str, k: int = 4, **kwargs: Any
|
||||||
|
) -> List[Tuple[Document, float]]:
|
||||||
|
"""Return docs most similar to query."""
|
||||||
|
|
||||||
|
# This is a temporary workaround to make the similarity search
|
||||||
|
# asynchronous. The proper solution is to make the similarity search
|
||||||
|
# asynchronous in the vector store implementations.
|
||||||
|
func = partial(self.similarity_search_with_relevance_scores, query, k, **kwargs)
|
||||||
|
return await asyncio.get_event_loop().run_in_executor(None, func)
|
||||||
|
|
||||||
async def asimilarity_search(
|
async def asimilarity_search(
|
||||||
self, query: str, k: int = 4, **kwargs: Any
|
self, query: str, k: int = 4, **kwargs: Any
|
||||||
) -> List[Document]:
|
) -> List[Document]:
|
||||||
@ -384,6 +395,13 @@ class VectorStoreRetriever(BaseRetriever, BaseModel):
|
|||||||
docs = await self.vectorstore.asimilarity_search(
|
docs = await self.vectorstore.asimilarity_search(
|
||||||
query, **self.search_kwargs
|
query, **self.search_kwargs
|
||||||
)
|
)
|
||||||
|
elif self.search_type == "similarity_score_threshold":
|
||||||
|
docs_and_similarities = (
|
||||||
|
await self.vectorstore.asimilarity_search_with_relevance_scores(
|
||||||
|
query, **self.search_kwargs
|
||||||
|
)
|
||||||
|
)
|
||||||
|
docs = [doc for doc, _ in docs_and_similarities]
|
||||||
elif self.search_type == "mmr":
|
elif self.search_type == "mmr":
|
||||||
docs = await self.vectorstore.amax_marginal_relevance_search(
|
docs = await self.vectorstore.amax_marginal_relevance_search(
|
||||||
query, **self.search_kwargs
|
query, **self.search_kwargs
|
||||||
|
Loading…
Reference in New Issue
Block a user