LangChain / app /vectorstores /pgvector.py
dcd018's picture
Initial commit.
b88c922
Raw
History Blame Contribute Delete
1.32 kB
import sqlalchemy
from langchain.vectorstores.pgvector import PGVector as Base,CollectionStore
from sqlalchemy.orm import Session
class PGVector(Base):
def __init__(
self,
pre_delete_embeddings: bool = False,
**kwargs
) -> None:
self.pre_delete_embeddings = pre_delete_embeddings
Base.__init__(self, **kwargs)
def connect(self) -> sqlalchemy.engine.Connection:
engine = sqlalchemy.create_engine(self.connection_string, echo=True)
conn = engine.connect()
return conn
def delete_embeddings(self) -> None:
self.logger.debug("Trying to delete embeddings")
with Session(self._conn) as session:
collection = self.get_collection(session)
if not collection:
self.logger.error("Collection not found")
return
session.delete(collection.embeddings)
session.commit()
def create_collection(self) -> None:
if self.pre_delete_collection:
self.delete_collection()
with Session(self._conn) as session:
CollectionStore.get_or_create(
session, self.collection_name, cmetadata=self.collection_metadata
)
if self.pre_delete_embeddings:
self.delete_embeddings()