|
@@ -341,66 +341,70 @@ class Completion:
|
|
|
app = conversation_message_task.app
|
|
|
annotation_reply = app_model_config.annotation_reply_dict
|
|
|
if annotation_reply['enabled']:
|
|
|
- score_threshold = annotation_reply.get('score_threshold', 1)
|
|
|
- embedding_provider_name = annotation_reply['embedding_model']['embedding_provider_name']
|
|
|
- embedding_model_name = annotation_reply['embedding_model']['embedding_model_name']
|
|
|
- # get embedding model
|
|
|
- embedding_model = ModelFactory.get_embedding_model(
|
|
|
- tenant_id=app.tenant_id,
|
|
|
- model_provider_name=embedding_provider_name,
|
|
|
- model_name=embedding_model_name
|
|
|
- )
|
|
|
- embeddings = CacheEmbedding(embedding_model)
|
|
|
+ try:
|
|
|
+ score_threshold = annotation_reply.get('score_threshold', 1)
|
|
|
+ embedding_provider_name = annotation_reply['embedding_model']['embedding_provider_name']
|
|
|
+ embedding_model_name = annotation_reply['embedding_model']['embedding_model_name']
|
|
|
+ # get embedding model
|
|
|
+ embedding_model = ModelFactory.get_embedding_model(
|
|
|
+ tenant_id=app.tenant_id,
|
|
|
+ model_provider_name=embedding_provider_name,
|
|
|
+ model_name=embedding_model_name
|
|
|
+ )
|
|
|
+ embeddings = CacheEmbedding(embedding_model)
|
|
|
|
|
|
- dataset_collection_binding = DatasetCollectionBindingService.get_dataset_collection_binding(
|
|
|
- embedding_provider_name,
|
|
|
- embedding_model_name,
|
|
|
- 'annotation'
|
|
|
- )
|
|
|
+ dataset_collection_binding = DatasetCollectionBindingService.get_dataset_collection_binding(
|
|
|
+ embedding_provider_name,
|
|
|
+ embedding_model_name,
|
|
|
+ 'annotation'
|
|
|
+ )
|
|
|
|
|
|
- dataset = Dataset(
|
|
|
- id=app.id,
|
|
|
- tenant_id=app.tenant_id,
|
|
|
- indexing_technique='high_quality',
|
|
|
- embedding_model_provider=embedding_provider_name,
|
|
|
- embedding_model=embedding_model_name,
|
|
|
- collection_binding_id=dataset_collection_binding.id
|
|
|
- )
|
|
|
+ dataset = Dataset(
|
|
|
+ id=app.id,
|
|
|
+ tenant_id=app.tenant_id,
|
|
|
+ indexing_technique='high_quality',
|
|
|
+ embedding_model_provider=embedding_provider_name,
|
|
|
+ embedding_model=embedding_model_name,
|
|
|
+ collection_binding_id=dataset_collection_binding.id
|
|
|
+ )
|
|
|
|
|
|
- vector_index = VectorIndex(
|
|
|
- dataset=dataset,
|
|
|
- config=current_app.config,
|
|
|
- embeddings=embeddings
|
|
|
- )
|
|
|
+ vector_index = VectorIndex(
|
|
|
+ dataset=dataset,
|
|
|
+ config=current_app.config,
|
|
|
+ embeddings=embeddings
|
|
|
+ )
|
|
|
|
|
|
- documents = vector_index.search(
|
|
|
- conversation_message_task.query,
|
|
|
- search_type='similarity_score_threshold',
|
|
|
- search_kwargs={
|
|
|
- 'k': 1,
|
|
|
- 'score_threshold': score_threshold,
|
|
|
- 'filter': {
|
|
|
- 'group_id': [dataset.id]
|
|
|
+ documents = vector_index.search(
|
|
|
+ conversation_message_task.query,
|
|
|
+ search_type='similarity_score_threshold',
|
|
|
+ search_kwargs={
|
|
|
+ 'k': 1,
|
|
|
+ 'score_threshold': score_threshold,
|
|
|
+ 'filter': {
|
|
|
+ 'group_id': [dataset.id]
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
- )
|
|
|
- if documents:
|
|
|
- annotation_id = documents[0].metadata['annotation_id']
|
|
|
- score = documents[0].metadata['score']
|
|
|
- annotation = AppAnnotationService.get_annotation_by_id(annotation_id)
|
|
|
- if annotation:
|
|
|
- conversation_message_task.annotation_end(annotation.content, annotation.id, annotation.account.name)
|
|
|
- # insert annotation history
|
|
|
- AppAnnotationService.add_annotation_history(annotation.id,
|
|
|
- app.id,
|
|
|
- annotation.question,
|
|
|
- annotation.content,
|
|
|
- conversation_message_task.query,
|
|
|
- conversation_message_task.user.id,
|
|
|
- conversation_message_task.message.id,
|
|
|
- from_source,
|
|
|
- score)
|
|
|
- return True
|
|
|
+ )
|
|
|
+ if documents:
|
|
|
+ annotation_id = documents[0].metadata['annotation_id']
|
|
|
+ score = documents[0].metadata['score']
|
|
|
+ annotation = AppAnnotationService.get_annotation_by_id(annotation_id)
|
|
|
+ if annotation:
|
|
|
+ conversation_message_task.annotation_end(annotation.content, annotation.id, annotation.account.name)
|
|
|
+ # insert annotation history
|
|
|
+ AppAnnotationService.add_annotation_history(annotation.id,
|
|
|
+ app.id,
|
|
|
+ annotation.question,
|
|
|
+ annotation.content,
|
|
|
+ conversation_message_task.query,
|
|
|
+ conversation_message_task.user.id,
|
|
|
+ conversation_message_task.message.id,
|
|
|
+ from_source,
|
|
|
+ score)
|
|
|
+ return True
|
|
|
+ except Exception as e:
|
|
|
+ logging.warning(f'Query annotation failed, exception: {str(e)}.')
|
|
|
+ return False
|
|
|
return False
|
|
|
|
|
|
@classmethod
|