delete_annotation_index_task.py 1.6 KB

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