Spaces:
Runtime error
Runtime error
| """Vector store factory. | |
| Uses pgvector (Postgres) when DATABASE_URL points at Postgres so embeddings | |
| PERSIST across restarts; falls back to local ChromaDB for local dev. | |
| """ | |
| import logging | |
| from config import settings | |
| from services.llm import get_embeddings | |
| from database import SQLALCHEMY_DATABASE_URL, IS_POSTGRES | |
| logger = logging.getLogger(__name__) | |
| def get_vectorstore(collection_name: str): | |
| """Return a vector store bound to `collection_name`.""" | |
| embeddings = get_embeddings() | |
| if IS_POSTGRES: | |
| from langchain_community.vectorstores import PGVector | |
| return PGVector( | |
| connection_string=SQLALCHEMY_DATABASE_URL, | |
| collection_name=collection_name, | |
| embedding_function=embeddings, | |
| ) | |
| from langchain_chroma import Chroma | |
| return Chroma( | |
| collection_name=collection_name, | |
| embedding_function=embeddings, | |
| persist_directory=str(settings.CHROMA_DIR), | |
| ) | |
| def drop_collection(collection_name: str) -> bool: | |
| """Delete an entire collection (PGVector or Chroma).""" | |
| try: | |
| store = get_vectorstore(collection_name) | |
| store.delete_collection() | |
| logger.info(f"Deleted collection: {collection_name}") | |
| return True | |
| except Exception as e: | |
| logger.error(f"Failed to delete collection {collection_name}: {e}") | |
| return False | |