Skip to content

chore: Make the private variable __vs to semi private #206

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 2 commits into from
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
78 changes: 38 additions & 40 deletions langchain_postgres/v2/vectorstores.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ def __init__(self, key: object, engine: PGEngine, vs: AsyncPGVectorStore):
)

self._engine = engine
self.__vs = vs
self._vs = vs

@classmethod
async def create(
Expand Down Expand Up @@ -166,7 +166,7 @@ def create_sync(

@property
def embeddings(self) -> Embeddings:
return self.__vs.embedding_service
return self._vs.embedding_service

async def aadd_embeddings(
self,
Expand All @@ -178,7 +178,7 @@ async def aadd_embeddings(
) -> list[str]:
"""Add data along with embeddings to the table."""
return await self._engine._run_as_async(
self.__vs.aadd_embeddings(texts, embeddings, metadatas, ids, **kwargs)
self._vs.aadd_embeddings(texts, embeddings, metadatas, ids, **kwargs)
)

async def aadd_texts(
Expand All @@ -194,7 +194,7 @@ async def aadd_texts(
:class:`InvalidTextRepresentationError <asyncpg.exceptions.InvalidTextRepresentationError>`: if the `ids` data type does not match that of the `id_column`.
"""
return await self._engine._run_as_async(
self.__vs.aadd_texts(texts, metadatas, ids, **kwargs)
self._vs.aadd_texts(texts, metadatas, ids, **kwargs)
)

async def aadd_documents(
Expand All @@ -209,7 +209,7 @@ async def aadd_documents(
:class:`InvalidTextRepresentationError <asyncpg.exceptions.InvalidTextRepresentationError>`: if the `ids` data type does not match that of the `id_column`.
"""
return await self._engine._run_as_async(
self.__vs.aadd_documents(documents, ids, **kwargs)
self._vs.aadd_documents(documents, ids, **kwargs)
)

def add_embeddings(
Expand All @@ -222,7 +222,7 @@ def add_embeddings(
) -> list[str]:
"""Add data along with embeddings to the table."""
return self._engine._run_as_sync(
self.__vs.aadd_embeddings(texts, embeddings, metadatas, ids, **kwargs)
self._vs.aadd_embeddings(texts, embeddings, metadatas, ids, **kwargs)
)

def add_texts(
Expand All @@ -238,7 +238,7 @@ def add_texts(
:class:`InvalidTextRepresentationError <asyncpg.exceptions.InvalidTextRepresentationError>`: if the `ids` data type does not match that of the `id_column`.
"""
return self._engine._run_as_sync(
self.__vs.aadd_texts(texts, metadatas, ids, **kwargs)
self._vs.aadd_texts(texts, metadatas, ids, **kwargs)
)

def add_documents(
Expand All @@ -253,7 +253,7 @@ def add_documents(
:class:`InvalidTextRepresentationError <asyncpg.exceptions.InvalidTextRepresentationError>`: if the `ids` data type does not match that of the `id_column`.
"""
return self._engine._run_as_sync(
self.__vs.aadd_documents(documents, ids, **kwargs)
self._vs.aadd_documents(documents, ids, **kwargs)
)

async def adelete(
Expand All @@ -266,7 +266,7 @@ async def adelete(
Raises:
:class:`InvalidTextRepresentationError <asyncpg.exceptions.InvalidTextRepresentationError>`: if the `ids` data type does not match that of the `id_column`.
"""
return await self._engine._run_as_async(self.__vs.adelete(ids, **kwargs))
return await self._engine._run_as_async(self._vs.adelete(ids, **kwargs))

def delete(
self,
Expand All @@ -278,7 +278,7 @@ def delete(
Raises:
:class:`InvalidTextRepresentationError <asyncpg.exceptions.InvalidTextRepresentationError>`: if the `ids` data type does not match that of the `id_column`.
"""
return self._engine._run_as_sync(self.__vs.adelete(ids, **kwargs))
return self._engine._run_as_sync(self._vs.adelete(ids, **kwargs))

@classmethod
async def afrom_texts( # type: ignore[override]
Expand Down Expand Up @@ -572,7 +572,7 @@ def similarity_search(
) -> list[Document]:
"""Return docs selected by similarity search on query."""
return self._engine._run_as_sync(
self.__vs.asimilarity_search(query, k, filter, **kwargs)
self._vs.asimilarity_search(query, k, filter, **kwargs)
)

async def asimilarity_search(
Expand All @@ -584,18 +584,18 @@ async def asimilarity_search(
) -> list[Document]:
"""Return docs selected by similarity search on query."""
return await self._engine._run_as_async(
self.__vs.asimilarity_search(query, k, filter, **kwargs)
self._vs.asimilarity_search(query, k, filter, **kwargs)
)

# Required for (a)similarity_search_with_relevance_scores
def _select_relevance_score_fn(self) -> Callable[[float], float]:
"""Select a relevance function based on distance strategy."""
# Calculate distance strategy provided in vectorstore constructor
if self.__vs.distance_strategy == DistanceStrategy.COSINE_DISTANCE:
if self._vs.distance_strategy == DistanceStrategy.COSINE_DISTANCE:
return self._cosine_relevance_score_fn
if self.__vs.distance_strategy == DistanceStrategy.INNER_PRODUCT:
if self._vs.distance_strategy == DistanceStrategy.INNER_PRODUCT:
return self._max_inner_product_relevance_score_fn
elif self.__vs.distance_strategy == DistanceStrategy.EUCLIDEAN:
elif self._vs.distance_strategy == DistanceStrategy.EUCLIDEAN:
return self._euclidean_relevance_score_fn

async def asimilarity_search_with_score(
Expand All @@ -607,7 +607,7 @@ async def asimilarity_search_with_score(
) -> list[tuple[Document, float]]:
"""Return docs and distance scores selected by similarity search on query."""
return await self._engine._run_as_async(
self.__vs.asimilarity_search_with_score(query, k, filter, **kwargs)
self._vs.asimilarity_search_with_score(query, k, filter, **kwargs)
)

async def asimilarity_search_by_vector(
Expand All @@ -619,7 +619,7 @@ async def asimilarity_search_by_vector(
) -> list[Document]:
"""Return docs selected by vector similarity search."""
return await self._engine._run_as_async(
self.__vs.asimilarity_search_by_vector(embedding, k, filter, **kwargs)
self._vs.asimilarity_search_by_vector(embedding, k, filter, **kwargs)
)

async def asimilarity_search_with_score_by_vector(
Expand All @@ -631,7 +631,7 @@ async def asimilarity_search_with_score_by_vector(
) -> list[tuple[Document, float]]:
"""Return docs and distance scores selected by vector similarity search."""
return await self._engine._run_as_async(
self.__vs.asimilarity_search_with_score_by_vector(
self._vs.asimilarity_search_with_score_by_vector(
embedding, k, filter, **kwargs
)
)
Expand All @@ -647,7 +647,7 @@ async def amax_marginal_relevance_search(
) -> list[Document]:
"""Return docs selected using the maximal marginal relevance."""
return await self._engine._run_as_async(
self.__vs.amax_marginal_relevance_search(
self._vs.amax_marginal_relevance_search(
query, k, fetch_k, lambda_mult, filter, **kwargs
)
)
Expand All @@ -663,7 +663,7 @@ async def amax_marginal_relevance_search_by_vector(
) -> list[Document]:
"""Return docs selected using the maximal marginal relevance."""
return await self._engine._run_as_async(
self.__vs.amax_marginal_relevance_search_by_vector(
self._vs.amax_marginal_relevance_search_by_vector(
embedding, k, fetch_k, lambda_mult, filter, **kwargs
)
)
Expand All @@ -679,7 +679,7 @@ async def amax_marginal_relevance_search_with_score_by_vector(
) -> list[tuple[Document, float]]:
"""Return docs and distance scores selected using the maximal marginal relevance."""
return await self._engine._run_as_async(
self.__vs.amax_marginal_relevance_search_with_score_by_vector(
self._vs.amax_marginal_relevance_search_with_score_by_vector(
embedding, k, fetch_k, lambda_mult, filter, **kwargs
)
)
Expand All @@ -693,7 +693,7 @@ def similarity_search_with_score(
) -> list[tuple[Document, float]]:
"""Return docs and distance scores selected by similarity search on query."""
return self._engine._run_as_sync(
self.__vs.asimilarity_search_with_score(query, k, filter, **kwargs)
self._vs.asimilarity_search_with_score(query, k, filter, **kwargs)
)

def similarity_search_by_vector(
Expand All @@ -705,7 +705,7 @@ def similarity_search_by_vector(
) -> list[Document]:
"""Return docs selected by vector similarity search."""
return self._engine._run_as_sync(
self.__vs.asimilarity_search_by_vector(embedding, k, filter, **kwargs)
self._vs.asimilarity_search_by_vector(embedding, k, filter, **kwargs)
)

def similarity_search_with_score_by_vector(
Expand All @@ -717,7 +717,7 @@ def similarity_search_with_score_by_vector(
) -> list[tuple[Document, float]]:
"""Return docs and distance scores selected by similarity search on vector."""
return self._engine._run_as_sync(
self.__vs.asimilarity_search_with_score_by_vector(
self._vs.asimilarity_search_with_score_by_vector(
embedding, k, filter, **kwargs
)
)
Expand All @@ -733,7 +733,7 @@ def max_marginal_relevance_search(
) -> list[Document]:
"""Return docs selected using the maximal marginal relevance."""
return self._engine._run_as_sync(
self.__vs.amax_marginal_relevance_search(
self._vs.amax_marginal_relevance_search(
query, k, fetch_k, lambda_mult, filter, **kwargs
)
)
Expand All @@ -749,7 +749,7 @@ def max_marginal_relevance_search_by_vector(
) -> list[Document]:
"""Return docs selected using the maximal marginal relevance."""
return self._engine._run_as_sync(
self.__vs.amax_marginal_relevance_search_by_vector(
self._vs.amax_marginal_relevance_search_by_vector(
embedding, k, fetch_k, lambda_mult, filter, **kwargs
)
)
Expand All @@ -765,7 +765,7 @@ def max_marginal_relevance_search_with_score_by_vector(
) -> list[tuple[Document, float]]:
"""Return docs and distance scores selected using the maximal marginal relevance."""
return self._engine._run_as_sync(
self.__vs.amax_marginal_relevance_search_with_score_by_vector(
self._vs.amax_marginal_relevance_search_with_score_by_vector(
embedding, k, fetch_k, lambda_mult, filter, **kwargs
)
)
Expand All @@ -778,7 +778,7 @@ async def aapply_vector_index(
) -> None:
"""Create an index on the vector store table."""
return await self._engine._run_as_async(
self.__vs.aapply_vector_index(index, name, concurrently=concurrently)
self._vs.aapply_vector_index(index, name, concurrently=concurrently)
)

def apply_vector_index(
Expand All @@ -789,54 +789,52 @@ def apply_vector_index(
) -> None:
"""Create an index on the vector store table."""
return self._engine._run_as_sync(
self.__vs.aapply_vector_index(index, name, concurrently=concurrently)
self._vs.aapply_vector_index(index, name, concurrently=concurrently)
)

async def areindex(self, index_name: Optional[str] = None) -> None:
"""Re-index the vector store table."""
return await self._engine._run_as_async(self.__vs.areindex(index_name))
return await self._engine._run_as_async(self._vs.areindex(index_name))

def reindex(self, index_name: Optional[str] = None) -> None:
"""Re-index the vector store table."""
return self._engine._run_as_sync(self.__vs.areindex(index_name))
return self._engine._run_as_sync(self._vs.areindex(index_name))

async def adrop_vector_index(
self,
index_name: Optional[str] = None,
) -> None:
"""Drop the vector index."""
return await self._engine._run_as_async(
self.__vs.adrop_vector_index(index_name)
)
return await self._engine._run_as_async(self._vs.adrop_vector_index(index_name))

def drop_vector_index(
self,
index_name: Optional[str] = None,
) -> None:
"""Drop the vector index."""
return self._engine._run_as_sync(self.__vs.adrop_vector_index(index_name))
return self._engine._run_as_sync(self._vs.adrop_vector_index(index_name))

async def ais_valid_index(
self,
index_name: Optional[str] = None,
) -> bool:
"""Check if index exists in the table."""
return await self._engine._run_as_async(self.__vs.is_valid_index(index_name))
return await self._engine._run_as_async(self._vs.is_valid_index(index_name))

def is_valid_index(
self,
index_name: Optional[str] = None,
) -> bool:
"""Check if index exists in the table."""
return self._engine._run_as_sync(self.__vs.is_valid_index(index_name))
return self._engine._run_as_sync(self._vs.is_valid_index(index_name))

async def aget_by_ids(self, ids: Sequence[str]) -> list[Document]:
"""Get documents by ids."""
return await self._engine._run_as_async(self.__vs.aget_by_ids(ids=ids))
return await self._engine._run_as_async(self._vs.aget_by_ids(ids=ids))

def get_by_ids(self, ids: Sequence[str]) -> list[Document]:
"""Get documents by ids."""
return self._engine._run_as_sync(self.__vs.aget_by_ids(ids=ids))
return self._engine._run_as_sync(self._vs.aget_by_ids(ids=ids))

def get_table_name(self) -> str:
return self.__vs.table_name
return self._vs.table_name