| @@ -188,7 +188,6 @@ class AnnotationUpdateDeleteApi(Resource): | |||
| @setup_required | |||
| @login_required | |||
| @account_initialization_required | |||
| @cloud_edition_billing_resource_check('annotation') | |||
| def delete(self, app_id, annotation_id): | |||
| # The role of the current user in the ta table must be admin or owner | |||
| if current_user.current_tenant.current_role not in ['admin', 'owner']: | |||
| @@ -65,7 +65,7 @@ def cloud_edition_billing_resource_check(resource: str, | |||
| abort(403, error_msg) | |||
| elif resource == 'workspace_custom' and not billing_info['can_replace_logo']: | |||
| abort(403, error_msg) | |||
| elif resource == 'annotation' and 0 < annotation_quota_limit['limit'] <= annotation_quota_limit['size']: | |||
| elif resource == 'annotation' and 0 < annotation_quota_limit['limit'] < annotation_quota_limit['size']: | |||
| abort(403, error_msg) | |||
| else: | |||
| return view(*args, **kwargs) | |||
| @@ -371,7 +371,8 @@ class Completion: | |||
| vector_index = VectorIndex( | |||
| dataset=dataset, | |||
| config=current_app.config, | |||
| embeddings=embeddings | |||
| embeddings=embeddings, | |||
| attributes=['doc_id', 'annotation_id', 'app_id'] | |||
| ) | |||
| documents = vector_index.search( | |||
| @@ -100,7 +100,6 @@ class MilvusVectorIndex(BaseVectorIndex): | |||
| """Only for created index.""" | |||
| if self._vector_store: | |||
| return self._vector_store | |||
| attributes = ['doc_id', 'dataset_id', 'document_id'] | |||
| return MilvusVectorStore( | |||
| collection_name=self.get_index_name(self.dataset), | |||
| @@ -9,12 +9,17 @@ from models.dataset import Dataset, Document | |||
| class VectorIndex: | |||
| def __init__(self, dataset: Dataset, config: dict, embeddings: Embeddings): | |||
| def __init__(self, dataset: Dataset, config: dict, embeddings: Embeddings, | |||
| attributes: list = None): | |||
| if attributes is None: | |||
| attributes = ['doc_id', 'dataset_id', 'document_id', 'doc_hash'] | |||
| self._dataset = dataset | |||
| self._embeddings = embeddings | |||
| self._vector_index = self._init_vector_index(dataset, config, embeddings) | |||
| self._vector_index = self._init_vector_index(dataset, config, embeddings, attributes) | |||
| self._attributes = attributes | |||
| def _init_vector_index(self, dataset: Dataset, config: dict, embeddings: Embeddings) -> BaseVectorIndex: | |||
| def _init_vector_index(self, dataset: Dataset, config: dict, embeddings: Embeddings, | |||
| attributes: list) -> BaseVectorIndex: | |||
| vector_type = config.get('VECTOR_STORE') | |||
| if self._dataset.index_struct_dict: | |||
| @@ -33,7 +38,8 @@ class VectorIndex: | |||
| api_key=config.get('WEAVIATE_API_KEY'), | |||
| batch_size=int(config.get('WEAVIATE_BATCH_SIZE')) | |||
| ), | |||
| embeddings=embeddings | |||
| embeddings=embeddings, | |||
| attributes=attributes | |||
| ) | |||
| elif vector_type == "qdrant": | |||
| from core.index.vector_index.qdrant_vector_index import QdrantVectorIndex, QdrantConfig | |||
| @@ -27,9 +27,10 @@ class WeaviateConfig(BaseModel): | |||
| class WeaviateVectorIndex(BaseVectorIndex): | |||
| def __init__(self, dataset: Dataset, config: WeaviateConfig, embeddings: Embeddings): | |||
| def __init__(self, dataset: Dataset, config: WeaviateConfig, embeddings: Embeddings, attributes: list): | |||
| super().__init__(dataset, embeddings) | |||
| self._client = self._init_client(config) | |||
| self._attributes = attributes | |||
| def _init_client(self, config: WeaviateConfig) -> weaviate.Client: | |||
| auth_config = weaviate.auth.AuthApiKey(api_key=config.api_key) | |||
| @@ -111,7 +112,7 @@ class WeaviateVectorIndex(BaseVectorIndex): | |||
| if self._vector_store: | |||
| return self._vector_store | |||
| attributes = ['doc_id', 'dataset_id', 'document_id', 'doc_hash'] | |||
| attributes = self._attributes | |||
| if self._is_origin(): | |||
| attributes = ['doc_id'] | |||
| @@ -36,6 +36,8 @@ def add_annotation_to_index_task(annotation_id: str, question: str, tenant_id: s | |||
| id=app_id, | |||
| tenant_id=tenant_id, | |||
| indexing_technique='high_quality', | |||
| embedding_model_provider=dataset_collection_binding.provider_name, | |||
| embedding_model=dataset_collection_binding.model_name, | |||
| collection_binding_id=dataset_collection_binding.id | |||
| ) | |||