From 0316900d2f0e142666fd173dd3a775b9197ad3e4 Mon Sep 17 00:00:00 2001 From: Fabian Venturini Cabau Date: Fri, 7 Apr 2023 02:27:47 -0300 Subject: [PATCH] feat: implements similarity_search_by_vector on Weaviate (#2522) This PR implements `similarity_search_by_vector` in the Weaviate vectorstore. --- langchain/vectorstores/weaviate.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/langchain/vectorstores/weaviate.py b/langchain/vectorstores/weaviate.py index 29e67ced..22a9a037 100644 --- a/langchain/vectorstores/weaviate.py +++ b/langchain/vectorstores/weaviate.py @@ -89,6 +89,19 @@ class Weaviate(VectorStore): docs.append(Document(page_content=text, metadata=res)) return docs + def similarity_search_by_vector( + self, embedding: List[float], k: int = 4, **kwargs: Any + ) -> List[Document]: + """Look up similar documents by embedding vector in Weaviate.""" + vector = {"vector": embedding} + query_obj = self._client.query.get(self._index_name, self._query_attrs) + result = query_obj.with_near_vector(vector).with_limit(k).do() + docs = [] + for res in result["data"]["Get"][self._index_name]: + text = res.pop(self._text_key) + docs.append(Document(page_content=text, metadata=res)) + return docs + @classmethod def from_texts( cls,