fix (vector store) Database refresh error, vector collection deduplication consistency issue (#2465)

Co-authored-by: tam <tanwe@fulan.com.cn>
This commit is contained in:
Tam 2025-03-14 14:43:44 +08:00 committed by GitHub
parent 11c544ef5d
commit 6a79c8c622
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -201,16 +201,53 @@ class ChromaStore(VectorStoreBase):
return ids
def delete_vector_name(self, vector_name: str):
"""Delete vector name."""
"""Delete vector name and clean up resources.
Args:
vector_name (str): Name of the vector to delete
Returns:
bool: True if deletion was successful, False otherwise
Raises:
Exception: If any error occurs during deletion
"""
try:
from chromadb.api.client import SharedSystemClient
except ImportError:
raise ImportError("Please install chroma package first.")
logger.info(f"chroma vector_name:{vector_name} begin delete...")
self._chroma_client.delete_collection(self._collection.name)
SharedSystemClient.clear_system_cache()
self._clean_persist_folder()
return True
try:
# Check if collection exists first
collections = self._chroma_client.list_collections()
collection_exists = self._collection.name in collections
if not collection_exists:
logger.warning(
f"Collection {self._collection.name} does not exist, skip delete"
)
return True
# Delete collection if it exists
self._chroma_client.delete_collection(self._collection.name)
SharedSystemClient.clear_system_cache()
# Clean persist folder if it exists
if os.path.exists(self.persist_dir):
try:
self._clean_persist_folder()
except Exception as e:
logger.error(f"Failed to clean persist folder: {e}")
# Even if folder cleanup fails, collection deletion succeeded
return True
return True
except Exception as e:
logger.error(f"Error during vector store deletion: {e}")
raise
def delete_by_ids(self, ids):
"""Delete vector by ids."""