delete_annotation_index_task.py 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import datetime
  2. import logging
  3. import time
  4. import click
  5. from celery import shared_task
  6. from core.index.index import IndexBuilder
  7. from models.dataset import Dataset
  8. from services.dataset_service import DatasetCollectionBindingService
  9. @shared_task(queue='dataset')
  10. def delete_annotation_index_task(annotation_id: str, app_id: str, tenant_id: str,
  11. collection_binding_id: str):
  12. """
  13. Async delete annotation index task
  14. """
  15. logging.info(click.style('Start delete app annotation index: {}'.format(app_id), fg='green'))
  16. start_at = time.perf_counter()
  17. try:
  18. dataset_collection_binding = DatasetCollectionBindingService.get_dataset_collection_binding_by_id_and_type(
  19. collection_binding_id,
  20. 'annotation'
  21. )
  22. dataset = Dataset(
  23. id=app_id,
  24. tenant_id=tenant_id,
  25. indexing_technique='high_quality',
  26. collection_binding_id=dataset_collection_binding.id
  27. )
  28. vector_index = IndexBuilder.get_default_high_quality_index(dataset)
  29. if vector_index:
  30. try:
  31. vector_index.delete_by_metadata_field('annotation_id', annotation_id)
  32. except Exception:
  33. logging.exception("Delete annotation index failed when annotation deleted.")
  34. end_at = time.perf_counter()
  35. logging.info(
  36. click.style('App annotations index deleted : {} latency: {}'.format(app_id, end_at - start_at),
  37. fg='green'))
  38. except Exception as e:
  39. logging.exception("Annotation deleted index failed:{}".format(str(e)))