Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

delete_annotation_index_task.py 1.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  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. @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(f"Start delete app annotation index: {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(click.style(f"App annotations index deleted : {app_id} latency: {end_at - start_at}", fg="green"))
  33. except Exception as e:
  34. logging.exception("Annotation deleted index failed")
  35. finally:
  36. db.session.close()