You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

delete_annotation_index_task.py 1.6KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import logging
  2. import time
  3. import click
  4. from celery import shared_task # type: ignore
  5. from core.rag.datasource.vdb.vector_factory import Vector
  6. from extensions.ext_database import db
  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, 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, "annotation"
  19. )
  20. dataset = Dataset(
  21. id=app_id,
  22. tenant_id=tenant_id,
  23. indexing_technique="high_quality",
  24. collection_binding_id=dataset_collection_binding.id,
  25. )
  26. try:
  27. vector = Vector(dataset, attributes=["doc_id", "annotation_id", "app_id"])
  28. vector.delete_by_metadata_field("annotation_id", annotation_id)
  29. except Exception:
  30. logging.exception("Delete annotation index failed when annotation deleted.")
  31. end_at = time.perf_counter()
  32. logging.info(
  33. click.style("App annotations index deleted : {} latency: {}".format(app_id, end_at - start_at), fg="green")
  34. )
  35. except Exception as e:
  36. logging.exception("Annotation deleted index failed")
  37. finally:
  38. db.session.close()