Langchain-Chatchat
66 строк · 2.1 Кб
1from server.db.models.knowledge_metadata_model import SummaryChunkModel2from server.db.session import with_session3from typing import List, Dict4
5
6@with_session
7def list_summary_from_db(session,8kb_name: str,9metadata: Dict = {},10) -> List[Dict]:11'''12列出某知识库chunk summary。
13返回形式:[{"id": str, "summary_context": str, "doc_ids": str}, ...]
14'''
15docs = session.query(SummaryChunkModel).filter(SummaryChunkModel.kb_name.ilike(kb_name))16
17for k, v in metadata.items():18docs = docs.filter(SummaryChunkModel.meta_data[k].as_string() == str(v))19
20return [{"id": x.id,21"summary_context": x.summary_context,22"summary_id": x.summary_id,23"doc_ids": x.doc_ids,24"metadata": x.metadata} for x in docs.all()]25
26
27@with_session
28def delete_summary_from_db(session,29kb_name: str30) -> List[Dict]:31'''32删除知识库chunk summary,并返回被删除的Dchunk summary。
33返回形式:[{"id": str, "summary_context": str, "doc_ids": str}, ...]
34'''
35docs = list_summary_from_db(kb_name=kb_name)36query = session.query(SummaryChunkModel).filter(SummaryChunkModel.kb_name.ilike(kb_name))37query.delete(synchronize_session=False)38session.commit()39return docs40
41
42@with_session
43def add_summary_to_db(session,44kb_name: str,45summary_infos: List[Dict]):46'''47将总结信息添加到数据库。
48summary_infos形式:[{"summary_context": str, "doc_ids": str}, ...]
49'''
50for summary in summary_infos:51obj = SummaryChunkModel(52kb_name=kb_name,53summary_context=summary["summary_context"],54summary_id=summary["summary_id"],55doc_ids=summary["doc_ids"],56meta_data=summary["metadata"],57)58session.add(obj)59
60session.commit()61return True62
63
64@with_session
65def count_summary_from_db(session, kb_name: str) -> int:66return session.query(SummaryChunkModel).filter(SummaryChunkModel.kb_name.ilike(kb_name)).count()67