From 82ea6001f26cb11bc9515e079df20cbc036f24ac Mon Sep 17 00:00:00 2001 From: Zouhair Elhadi Date: Mon, 8 May 2023 23:15:32 +0100 Subject: [PATCH] update class Weaviate (weaviate.py): add an attribute (by_text) to check if we need to use query by text or by vector --- langchain/vectorstores/base.py | 6 ++++++ langchain/vectorstores/weaviate.py | 11 +++++++++++ 2 files changed, 17 insertions(+) diff --git a/langchain/vectorstores/base.py b/langchain/vectorstores/base.py index 53c9fa0cd8cb6..8dc2b85ddd138 100644 --- a/langchain/vectorstores/base.py +++ b/langchain/vectorstores/base.py @@ -107,6 +107,12 @@ def similarity_search( ) -> List[Document]: """Return docs most similar to query.""" + @abstractmethod + def similarity_search_by_text( + self, query: str, k: int = 4, **kwargs: Any + ) -> List[Document]: + """Return docs most similar to query.""" + def similarity_search_with_relevance_scores( self, query: str, diff --git a/langchain/vectorstores/weaviate.py b/langchain/vectorstores/weaviate.py index 78d8beec2e905..ae90cb0f77461 100644 --- a/langchain/vectorstores/weaviate.py +++ b/langchain/vectorstores/weaviate.py @@ -83,6 +83,7 @@ def __init__( client: Any, index_name: str, text_key: str, + by_text: bool = True, embedding: Optional[Embeddings] = None, attributes: Optional[List[str]] = None, relevance_score_fn: Optional[ @@ -105,6 +106,7 @@ def __init__( self._index_name = index_name self._embedding = embedding self._text_key = text_key + self._by_text = by_text self._query_attrs = [self._text_key] self._relevance_score_fn = relevance_score_fn if attributes is not None: @@ -154,6 +156,15 @@ def json_serializable(value: Any) -> Any: return ids def similarity_search( + self, query: str, k: int = 4, **kwargs: Any + ) -> List[Document]: + if self._by_text: + return self.similarity_search_by_text(query, k, **kwargs) + else: + embd = self._embedding.embed_query(query) + return self.similarity_search_by_vector(embd, k, **kwargs) + + def similarity_search_by_text( self, query: str, k: int = 4, **kwargs: Any ) -> List[Document]: """Return docs most similar to query.