Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

delete_annotation_index_task.py 1.6KB

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 extensions.ext_database import db
  7. from models.dataset import Dataset
  8. from services.dataset_service import DatasetCollectionBindingService
  9. logger = logging.getLogger(__name__)
  10. @shared_task(queue="dataset")
  11. def delete_annotation_index_task(annotation_id: str, app_id: str, tenant_id: str, collection_binding_id: str):
  12. """
  13. Async delete annotation index task
  14. """
  15. logger.info(click.style(f"Start delete app annotation index: {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, "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. logger.exception("Delete annotation index failed when annotation deleted.")
  32. end_at = time.perf_counter()
  33. logger.info(click.style(f"App annotations index deleted : {app_id} latency: {end_at - start_at}", fg="green"))
  34. except Exception as e:
  35. logger.exception("Annotation deleted index failed")
  36. finally:
  37. db.session.close()