From 8240eb14bf9322ae5e63386da24a5e100e3ccfa9 Mon Sep 17 00:00:00 2001 From: wxg0103 <727495428@qq.com> Date: Mon, 25 Nov 2024 16:36:31 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E4=BC=98=E5=8C=96=E7=9F=A5?= =?UTF-8?q?=E8=AF=86=E6=9D=A5=E6=BA=90=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --story=1016652 --user=王孝刚 【南区】应用对话回复支持显示引用分段来知识库的文档来源等信息 https://www.tapd.cn/57709429/s/1616642 --- .../chat_pipeline/I_base_chat_pipeline.py | 14 +++- .../impl/base_search_dataset_step.py | 1 + ...list_dataset_paragraph_by_paragraph_id.sql | 1 + ui/src/components/ai-chat/KnowledgeSource.vue | 76 ++++++++++++++++--- .../ai-chat/component/ParagraphCard.vue | 61 ++++++++++++++- 5 files changed, 137 insertions(+), 16 deletions(-) diff --git a/apps/application/chat_pipeline/I_base_chat_pipeline.py b/apps/application/chat_pipeline/I_base_chat_pipeline.py index 4c894ddbd..a35bdc39c 100644 --- a/apps/application/chat_pipeline/I_base_chat_pipeline.py +++ b/apps/application/chat_pipeline/I_base_chat_pipeline.py @@ -19,7 +19,7 @@ class ParagraphPipelineModel: def __init__(self, _id: str, document_id: str, dataset_id: str, content: str, title: str, status: str, is_active: bool, comprehensive_score: float, similarity: float, dataset_name: str, document_name: str, - hit_handling_method: str, directly_return_similarity: float): + hit_handling_method: str, directly_return_similarity: float, meta: dict = None): self.id = _id self.document_id = document_id self.dataset_id = dataset_id @@ -33,6 +33,7 @@ class ParagraphPipelineModel: self.document_name = document_name self.hit_handling_method = hit_handling_method self.directly_return_similarity = directly_return_similarity + self.meta = meta def to_dict(self): return { @@ -46,7 +47,8 @@ class ParagraphPipelineModel: 'comprehensive_score': self.comprehensive_score, 'similarity': self.similarity, 'dataset_name': self.dataset_name, - 'document_name': self.document_name + 'document_name': self.document_name, + 'meta': self.meta, } class builder: @@ -58,6 +60,7 @@ class ParagraphPipelineModel: self.dataset_name = None self.hit_handling_method = None self.directly_return_similarity = 0.9 + self.meta = {} def add_paragraph(self, paragraph): if isinstance(paragraph, Paragraph): @@ -97,6 +100,10 @@ class ParagraphPipelineModel: self.similarity = similarity return self + def add_meta(self, meta: dict): + self.meta = meta + return self + def build(self): return ParagraphPipelineModel(str(self.paragraph.get('id')), str(self.paragraph.get('document_id')), str(self.paragraph.get('dataset_id')), @@ -104,7 +111,8 @@ class ParagraphPipelineModel: self.paragraph.get('status'), self.paragraph.get('is_active'), self.comprehensive_score, self.similarity, self.dataset_name, - self.document_name, self.hit_handling_method, self.directly_return_similarity) + self.document_name, self.hit_handling_method, self.directly_return_similarity, + self.meta) class IBaseChatPipelineStep: diff --git a/apps/application/chat_pipeline/step/search_dataset_step/impl/base_search_dataset_step.py b/apps/application/chat_pipeline/step/search_dataset_step/impl/base_search_dataset_step.py index c13b414dc..69d1ee501 100644 --- a/apps/application/chat_pipeline/step/search_dataset_step/impl/base_search_dataset_step.py +++ b/apps/application/chat_pipeline/step/search_dataset_step/impl/base_search_dataset_step.py @@ -79,6 +79,7 @@ class BaseSearchDatasetStep(ISearchDatasetStep): .add_document_name(paragraph.get('document_name')) .add_hit_handling_method(paragraph.get('hit_handling_method')) .add_directly_return_similarity(paragraph.get('directly_return_similarity')) + .add_meta(paragraph.get('meta')) .build()) @staticmethod diff --git a/apps/application/sql/list_dataset_paragraph_by_paragraph_id.sql b/apps/application/sql/list_dataset_paragraph_by_paragraph_id.sql index 2bacd53e1..803b6307e 100644 --- a/apps/application/sql/list_dataset_paragraph_by_paragraph_id.sql +++ b/apps/application/sql/list_dataset_paragraph_by_paragraph_id.sql @@ -2,6 +2,7 @@ SELECT paragraph.*, dataset."name" AS "dataset_name", "document"."name" AS "document_name", + "document"."meta" AS "meta", "document"."hit_handling_method" AS "hit_handling_method", "document"."directly_return_similarity" as "directly_return_similarity" FROM diff --git a/ui/src/components/ai-chat/KnowledgeSource.vue b/ui/src/components/ai-chat/KnowledgeSource.vue index 1fe0ef563..4de9ce1cf 100644 --- a/ui/src/components/ai-chat/KnowledgeSource.vue +++ b/ui/src/components/ai-chat/KnowledgeSource.vue @@ -9,15 +9,28 @@