From 4ef142674b34533d05112d4d3714540746c33dc3 Mon Sep 17 00:00:00 2001 From: "liunux@office" Date: Tue, 6 Aug 2024 17:03:36 +0800 Subject: [PATCH 1/2] fix: use self.embeddings.aembed_* in async methods --- langchain_postgres/vectorstores.py | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/langchain_postgres/vectorstores.py b/langchain_postgres/vectorstores.py index 6afdd98b..f3c2bf11 100644 --- a/langchain_postgres/vectorstores.py +++ b/langchain_postgres/vectorstores.py @@ -842,7 +842,7 @@ def similarity_search( List of Documents most similar to the query. """ assert not self._async_engine, "This method must be called without async_mode" - embedding = self.embedding_function.embed_query(text=query) + embedding = self.embeddings.embed_query(query) return self.similarity_search_by_vector( embedding=embedding, k=k, @@ -867,7 +867,7 @@ async def asimilarity_search( List of Documents most similar to the query. """ await self.__apost_init__() # Lazy async init - embedding = self.embedding_function.embed_query(text=query) + embedding = await self.embeddings.aembed_query(query) return await self.asimilarity_search_by_vector( embedding=embedding, k=k, @@ -891,7 +891,7 @@ def similarity_search_with_score( List of Documents most similar to the query and score for each. """ assert not self._async_engine, "This method must be called without async_mode" - embedding = self.embedding_function.embed_query(query) + embedding = self.embeddings.embed_query(query) docs = self.similarity_search_with_score_by_vector( embedding=embedding, k=k, filter=filter ) @@ -914,7 +914,7 @@ async def asimilarity_search_with_score( List of Documents most similar to the query and score for each. """ await self.__apost_init__() # Lazy async init - embedding = self.embedding_function.embed_query(query) + embedding = await self.embeddings.aembed_query(query) docs = await self.asimilarity_search_with_score_by_vector( embedding=embedding, k=k, filter=filter ) @@ -968,7 +968,7 @@ def _results_to_docs_and_scores(self, results: Any) -> List[Tuple[Document, floa page_content=result.EmbeddingStore.document, metadata=result.EmbeddingStore.cmetadata, ), - result.distance if self.embedding_function is not None else None, + result.distance if self.embeddings is not None else None, ) for result in results ] @@ -1472,7 +1472,7 @@ async def afrom_texts( **kwargs: Any, ) -> PGVector: """Return VectorStore initialized from documents and embeddings.""" - embeddings = embedding.embed_documents(list(texts)) + embeddings = await embedding.aembed_documents(list(texts)) return await cls.__afrom( texts, embeddings, @@ -1895,7 +1895,7 @@ def max_marginal_relevance_search( Returns: List[Document]: List of Documents selected by maximal marginal relevance. """ - embedding = self.embedding_function.embed_query(query) + embedding = self.embeddings.embed_query(query) return self.max_marginal_relevance_search_by_vector( embedding, k=k, @@ -1934,7 +1934,7 @@ async def amax_marginal_relevance_search( List[Document]: List of Documents selected by maximal marginal relevance. """ await self.__apost_init__() # Lazy async init - embedding = self.embedding_function.embed_query(query) + embedding = await self.embeddings.aembed_query(query) return await self.amax_marginal_relevance_search_by_vector( embedding, k=k, @@ -1973,7 +1973,7 @@ def max_marginal_relevance_search_with_score( List[Tuple[Document, float]]: List of Documents selected by maximal marginal relevance to the query and score for each. """ - embedding = self.embedding_function.embed_query(query) + embedding = self.embeddings.embed_query(query) docs = self.max_marginal_relevance_search_with_score_by_vector( embedding=embedding, k=k, @@ -2014,7 +2014,7 @@ async def amax_marginal_relevance_search_with_score( relevance to the query and score for each. """ await self.__apost_init__() # Lazy async init - embedding = self.embedding_function.embed_query(query) + embedding = await self.embeddings.aembed_query(query) docs = await self.amax_marginal_relevance_search_with_score_by_vector( embedding=embedding, k=k, @@ -2145,7 +2145,7 @@ def upsert(self, items: Sequence[Document], /, **kwargs: Any) -> UpsertResponse: texts = [item.page_content for item in items] metadatas = [item.metadata for item in items] ids = [item.id if item.id is not None else str(uuid.uuid4()) for item in items] - embeddings = self.embedding_function.embed_documents(list(texts)) + embeddings = self.embeddings.embed_documents(list(texts)) added_ids = self.add_embeddings( texts=texts, embeddings=embeddings, metadatas=metadatas, ids=ids, **kwargs ) @@ -2175,7 +2175,7 @@ async def aupsert( texts = [item.page_content for item in items] metadatas = [item.metadata for item in items] ids = [item.id if item.id is not None else str(uuid.uuid4()) for item in items] - embeddings = await self.embedding_function.aembed_documents(list(texts)) + embeddings = await self.embeddings.aembed_documents(list(texts)) added_ids = await self.aadd_embeddings( texts=texts, embeddings=embeddings, metadatas=metadatas, ids=ids, **kwargs ) From 01a7f05125a55a45158759802b01cf336ad73d06 Mon Sep 17 00:00:00 2001 From: Eugene Yurtsev Date: Thu, 12 Sep 2024 17:25:48 -0400 Subject: [PATCH 2/2] x --- pyproject.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 60f1497f..bb5e4fc2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "langchain-postgres" -version = "0.0.11" +version = "0.0.10" description = "An integration package connecting Postgres and LangChain" authors = [] readme = "README.md" @@ -12,7 +12,7 @@ license = "MIT" [tool.poetry.dependencies] python = "^3.8.1" -langchain-core = ">=0.2.13,<0.4.0" +langchain-core = "^0.2.13" psycopg = "^3" psycopg-pool = "^3.2.1" sqlalchemy = "^2"