From 0a4ff6667984684c4408663dc765239fb4d73815 Mon Sep 17 00:00:00 2001 From: yanqiangmiffy <1185918903@qq.com> Date: Fri, 10 Jan 2025 16:22:06 +0800 Subject: [PATCH 1/6] update --- trustrag/modules/document/chunk.py | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/trustrag/modules/document/chunk.py b/trustrag/modules/document/chunk.py index b192fa5..ff4cbd7 100644 --- a/trustrag/modules/document/chunk.py +++ b/trustrag/modules/document/chunk.py @@ -6,17 +6,6 @@ class TextChunker: def __init__(self, ): self.tokenizer = rag_tokenizer - - # def split_sentences(self, text): - # # 使用正则表达式按中英文标点符号进行分句 - # sentence_endings = re.compile(r'([。!?])') - # sentences = sentence_endings.split(text) - # - # # 将标点符号和前面的句子合并 - # sentences = ["".join(i) for i in zip(sentences[0::2], sentences[1::2])] + sentences[2::2] - # sentences=[sentence.strip() for sentence in sentences if sentence.strip()] - # return sentences - def split_sentences(self, text): # 使用正则表达式按中文标点符号进行分句 sentence_endings = re.compile(r'([。!?.!?])') From ee141876f5e8a426fc34bafccfe36a6f1ddfa882 Mon Sep 17 00:00:00 2001 From: yanqiangmiffy <1185918903@qq.com> Date: Fri, 10 Jan 2025 16:22:11 +0800 Subject: [PATCH 2/6] update@chunk --- trustrag/modules/document/chunk.py | 228 +++++++---------------------- 1 file changed, 51 insertions(+), 177 deletions(-) diff --git a/trustrag/modules/document/chunk.py b/trustrag/modules/document/chunk.py index ff4cbd7..34748e8 100644 --- a/trustrag/modules/document/chunk.py +++ b/trustrag/modules/document/chunk.py @@ -4,36 +4,58 @@ class TextChunker: - def __init__(self, ): + def __init__(self): + """ + Initializes the TextChunker with a tokenizer. + """ self.tokenizer = rag_tokenizer - def split_sentences(self, text): - # 使用正则表达式按中文标点符号进行分句 + + def split_sentences(self, text: str) -> list[str]: + """ + Splits the input text into sentences based on Chinese and English punctuation marks. + + Args: + text (str): The input text to be split into sentences. + + Returns: + list[str]: A list of sentences extracted from the input text. + """ + # Use regex to split text by sentence-ending punctuation marks sentence_endings = re.compile(r'([。!?.!?])') sentences = sentence_endings.split(text) - # 将标点符号和前面的句子合并 + # Merge punctuation marks with their preceding sentences result = [] for i in range(0, len(sentences) - 1, 2): if sentences[i]: result.append(sentences[i] + sentences[i + 1]) - # 处理最后一个可能没有标点的句子 + # Handle the last sentence if it lacks punctuation if sentences[-1]: result.append(sentences[-1]) - # 去除空白并过滤空句子 + # Remove whitespace and filter out empty sentences result = [sentence.strip() for sentence in result if sentence.strip()] return result - def process_text_chunks(self, chunks): + def process_text_chunks(self, chunks: list[str]) -> list[str]: + """ + Preprocesses text chunks by normalizing excessive newlines and spaces. + + Args: + chunks (list[str]): A list of text chunks to be processed. + + Returns: + list[str]: A list of processed text chunks with normalized formatting. + """ processed_chunks = [] for chunk in chunks: - # 处理连续的四个及以上换行符 + # Normalize four or more consecutive newlines while '\n\n\n\n' in chunk: chunk = chunk.replace('\n\n\n\n', '\n\n') - # 处理连续的四个及以上空格 + # Normalize four or more consecutive spaces while ' ' in chunk: chunk = chunk.replace(' ', ' ') @@ -41,208 +63,60 @@ def process_text_chunks(self, chunks): return processed_chunks - def chunk_sentences(self, paragraphs, chunk_size): + def chunk_sentences(self, paragraphs: list[str], chunk_size: int) -> list[str]: """ - 将段落列表按照指定的块大小进行分块。 - - 首先对拼接的paragraphs进行分句,然后按照句子token个数拼接成chunk + Splits a list of paragraphs into chunks based on a specified token size. - 如果小于chunk_size,添加下一个句子,直到超过chunk_size,那么形成一个chunk - 依次生成新的chuank + Args: + paragraphs (list[str]): A list of paragraphs to be chunked. + chunk_size (int): The maximum number of tokens allowed per chunk. - 参数: - paragraphs (list): 要分块的段落列表。 - - 返回: - list: 包含分块后的文本的列表。 + Returns: + list[str]: A list of text chunks, each containing sentences that fit within the token limit. """ - # 将段落列表拼接成一个大文本 + # Combine paragraphs into a single text text = ''.join(paragraphs) - # 分句 + # Split the text into sentences sentences = self.split_sentences(text) - # print(sentences) + # If no sentences are found, treat paragraphs as sentences if len(sentences) == 0: sentences = paragraphs + chunks = [] current_chunk = [] current_chunk_tokens = 0 + # Iterate through sentences and build chunks based on token count for sentence in sentences: tokens = self.tokenizer.tokenize(sentence) if current_chunk_tokens + len(tokens) <= chunk_size: + # Add sentence to the current chunk if it fits current_chunk.append(sentence) current_chunk_tokens += len(tokens) else: + # Finalize the current chunk and start a new one chunks.append(''.join(current_chunk)) current_chunk = [sentence] current_chunk_tokens = len(tokens) + # Add the last chunk if it contains any sentences if current_chunk: chunks.append(''.join(current_chunk)) + + # Preprocess the chunks to normalize formatting chunks = self.process_text_chunks(chunks) return chunks if __name__ == '__main__': - - # 示例使用 - paragraphs = ['2020年9期', '总第918期商业研究', '一、研究背景和意义', - '2020年新春伊始 ,一场突如其来的疫情打乱了人们欢天喜', - '地回家过年的计划 ,节日的气氛被病毒侵肆 ,1月23日,武汉打', - '响“封城”第一枪,接着从湖北各市区乃至全国各地纷纷开 启一', - '级应急响应 ,全国人民停工 、停产、停学,开始居家隔离 ,春节档电', - '影除夕当天宣布延期上映 ,电影院、商场、中小商铺 、外卖、快递', - '几乎全部停工 ,居民消费行为呈现出 “宅经济”的特点,经济社会', - '运行受到严重冲击 。国家统计局数据显示 ,2020年1月-2月,我', - '国社会消费品零售总额同比下降 20.5%。消费不仅是衡量 居民生', - '活水平的重要指标 ,同时亦是我国经济增长的主要驱动 力。因', - '此,新冠疫情在国内得到基本控制的情况下 ,国家一手紧 抓复工', '复产,一手紧抓内外防控 。', - '有学者认为疫情期间居家隔离举措会影响消费者消费理', - '念,降低整体消费水平 ,也有学者认为 ,疫情结束以后 ,居民会产', - '生“报复性消费 ”,显著提高消费水平 ,更有认为疫情只是暂时 延', - '缓了经济社会发展进程 ,长久看来 ,并不会对消费行为造成较 大', - '影响。研究新冠肺炎疫情下消费者心理 、消费能力 、消费方式 、消', - '费对象等方面的变化有助于判断未来消费行为变动趋势以及 企', - '业应对措施 ,有助于充分挖掘国内市场 、重振居民消费 、全面建', - '成小康社会以及实现 2020年经济社会发展目标 。', - '二、新冠肺炎疫情特点及现状', '新型冠状病毒肺炎 ,简称“新冠肺炎 ”,2020年2月11日,世', - '界卫生组织其命名为 “COVID-19 ”。疫情开始于 2019年末,湖北', - '省武汉市部分医院陆续发现了多例有华南海鲜市场暴露史的 不', - '明原因肺炎病例 ,后经证实为 2019新型冠状病毒感染引起的 急', - '性呼吸道传染病 。以发热、乏力、干咳为主要表现 ,感染病人约 有', - '1天-14天的潜伏期 ,早期症状与普通感冒相似 ,不易发觉 ,具有', - '传播性强、严重程度高的特点 ,死亡率大约为 3%,其传播途径主', - '要为直接传播 、气溶胶传播和接触传播等人传人形式 ,呈现聚集', - '性感染。目前国内确诊人数超八万人 ,全球病例更达到 288万这', - '个骇人听闻的数字 ,全球国家经济受到严重冲击 ,疫情防控更是', '重中之重。', - '三、新冠肺炎疫情对居民消费行为的影响', '1.消费者心理', - '2020年1月30日,世界卫生组织宣布新冠肺炎疫情为国 际', - '关注的突发公共卫生事件 ,当时国外疫情还未完全爆发 ,中国政', - '府为了保证人民的安全健康 ,冒着经济社会可能受到重创的 风', - '险,出台了一系列 “封城”、“封路”、“停工停产 ”等措施进行 疫情', - '防控。居民在居家防控期间 ,安全健康意识显著提高 ,消费者对', - '于防控用品的需求增加 ,在进行消费时也更加注重环境的 安全卫生,由于疫情期间出行受限 ,消费由线下进一步向线上转 变,', - '居民的精神文化需求进一步增高 ,对于资讯以及社交需求方 面', '消费相应提高 。', '2.消费能力', - '由于疫情防控 ,许多人都表示今年过了最长的一个春节假', - '期,各企业工厂等不得不停工停产 ,大量从业人员无法复工 ,只', - '有基本生活保障收入 ,消费能力显著下降 。疫情期间部分企业经', - '营困难,甚至出现资金流断裂 、退出市场的情况 ,大量小型企业', - '倒闭或是选择暂时停业 ,更有部分企业有减员计划 ,其余对普通', - '员工只发放基本生活保障或按本地最低工资标准发放 ,导致从', '业人员收入和消费能力大大下降 。', - '3.消费方式', - '受到疫情防控出行限制 ,线下消费受到了抑制 ,在快递、外', - '卖等未停工地区 ,居民线上消费意愿强烈 ,主要体现在线上购', - '物、线上教育 、网络影视等方面 。居民线上购物大范围替代线下', - '购物,例如湖北各市区小区封闭时 ,居民采取线上下单 ,由社区', - '工作人员或志愿者等上门送货 。居民居家隔离期间 ,对于科普 、', - '文化等服务类消费的意愿普遍增加 ,普遍愿意增加医疗保健 、保', '险等服务消费 。', '4.消费对象', - '首先,居民安全健康意识提高 ,对于疫情防控用品 ,例如口', - '罩、护目镜、消毒液、酒精等消费大幅度增加 ,对于医疗保健用', - '品、保险的消费也有一定程度提高 。2020年1月19日至22日期', - '间,京东平台累计销售口罩 1.26亿只、消毒液31万瓶、洗手液', - '100万瓶,其中电子体温计 、感冒药、VC泡腾片、护目镜等相关商', '品较平时也有一定程度提高 ,', - '其次,居民线上消费对象不断拓展 ,网购对象从标准化程度', - '较高和易于快递配送的商品向生鲜 、医药等非标准化和低频商', - '品延伸,春节期间 ,京东到家全平台销售额相比去年同期增长', - '470%,盒马鲜生日均蔬菜供应量是平时的 6倍,美团外卖慢性处', '方药销量增长 237%。', - '第三,居民的旅游支出降低 ,许多消费者由于疫情影响取消', - '了春节期间的出行计划 ,旅游行业遭受重大冲击 ,疫情结束后各', - '大景点采取一定免费形式吸引消费者出行 ,但是居民旅游总支', '出仍然大幅度降低 。', - '最后,居民对于数字文化娱乐服务产品消费显著提高 ,例如', - '网络视频会员 、游戏、线上教育 、办公等用户大量增加 ,线上消费', - '群体则迅速扩张 ,老年居民和学龄儿童也开始进行线上购物 。', '四、未来居民消费行为变动趋势', - '1.线上线下消费融合浅谈新冠肺炎疫情对居民消费行为的影响', '■谭诗怡 湘潭大学商学院', - '摘要:随着新冠肺炎疫情突发 ,不仅对中国经济和产业会产生很大影响 ,而且会短期或长期地改变民众的消费行为模式 ,这引', - '起了各类政府机构 、工商企业 、平台商家的高度关注 。不仅消费者的消费理念 、消费方式 、消费对象 、消费能力在疫情影响下发生了 一', - '系列改变 ,同时餐饮 、住宿、旅游、娱乐等传统服务业也受到了严重冲击 。本文通过网络渠道等途径 ,收集相关资料 ,研究未来居民 消', - '费行为的变动趋势分析以及企业对消费者行为模式变化后的应对措施 ,并提出相关国内市场发展建议 。', - '关键词:新冠肺炎 ;居民消费 ;消费者行为', '10Copyright©博看网 www.bookan.com.cn. All Rights Reserved.', - '商业研究', '目前居民消费由线下向线上转移 ,会形成居民的消费惯性 ,', - '在疫情结束以后 ,并不会大幅降低线上消费水平 ,且国内疫情暂', - '时处于稳定期 ,后续还存在二次爆发的可能性 ,电影院、KTV、电', - '玩城等聚集性娱乐场所也未复工 ,居民日常出行仍然要注意安', - '全防护,去公共场所要佩戴口罩 ,在餐厅、医院等人员聚集场所 ,', - '排队须有间隔 ,座位要相隔而坐 ,并且还有大量师生还未返校 ,', - '学生居家上网课 。因此,复工复产的企业员工消费能力有所回', - '暖,但居民生活方面以及精神方面的消费还要依靠线上得以满', - '足。线上线下消费融合是未来居民消费变动一大重要趋势 ,不仅', - '可以保证一定程度的安全健康 ,还极大地便利了居民消费 、满足', '了他们的需求欲望 。', - '2.注重安全健康消费', - '居民消费时更加注重安全性以及健康性 ,首先消费者优先', - '考虑线上服务 ,例如线上教育 、线上娱乐 、线上购物等 ,在进行线', - '下消费时 ,更多考虑实体店的通风性 、安全性、是否进行消毒 、是', - '否人员聚集等条件 ;其次,共享消费模式会受到一定程度的影', - '响,消费者会考虑共享汽车 、共享单车等卫生程度 ,减少人员接', - '触,倾向于“非接触式消费 ”,这会促进远程消费模式发展 ;最后,', - '居民对于健康安全方面消费增多 ,由于新冠肺炎疫情 ,居民意识', - '到身体素质 的重要性 ,更加注意安全防护 ,对于保健品 、防护用', - '品、消毒用具 、药品等消费增多 ,对于医疗保健 、健康运动 、保险', '等服务性产品消费也相应增多 。', - '3.海外消费回流国内', '由于中国政府的强力举措 ,全国人民上下一心 ,众志成城 ,', - '广大医护人员 、志愿者、服务人员投入抗疫工作中 ,国内疫情得', - '以控制住 ,并很大程度缓解 ,但是境外疫情现在到达了爆发期 ,', - '且没有得到很好的控制 ,目前美国新冠肺炎确诊人数现已超 过', - '100万,国内现在严防境外输入病例 ,许多中外合资院校已经 确', - '定本学期不返校 ,全球范围内人员流动受到影响 ,居民在韩 国、', - '日本、美国、德国等国家的海外消费受到很大影响 ,加上国外 经', - '济受到疫情影响 ,而中国开始积极推进复工复产 ,消费逐步回 流', '国内。', - '五、企业对消费者行为模式变化后的应对措施', '1.预测消费变化趋势 ,挖掘新的商机', - '未受到较大影响导致停工停产的企业 ,在应对新冠疫情导', - '致的消费者行为模式变化后 ,应该积极预测消费变化趋势 ,做好', - '安全防控工作并履行社会责任的前提下 ,挖掘新的商机 ,关于居', - '民对于安全 、健康、便捷的消费诉求快速响应 ,采取一系列措施', - '加以满足 。并且根据未来预测的变化趋势 ,企业调整下一步发展', '目标以及计划 。', - '2.融合新的营销渠道 ,创新经营模式', '居民消费呈现线上线下消费融合趋势 ,企业应该根据这一', - '消费模式变化 ,进行营销升级 ,融合新的营销渠道 ,实现线上线', - '下一体化 ,一方面企业办公可以采取线上线下结合模式 ,提高员', - '工办公效率 ,方便未能到岗员工创造价值 ,另一方面企业为客户', - '群体提供产品服务也可以开通线上线下融合模式 ,抓住客户群', - '体需求,获取更大利益 。同时企业也可以抓住市场整合机遇 ,优', '化资源配置 ,更好地满足消费者的需求变化 。', - '3.抓住消费风口 ,拓展市场领域', '企业应该抓住新冠肺炎疫情这一契机 ,了解消费行为改变', - '后新的市场风口 ,拓展市场领域 ,重新定位新的目标客户群体以', - '及新的非接触式消费需求 ,并提出针对性发展举措 。企业应该牢', - '牢把握住疫情影响对医药 、教育、娱乐等产业来带的新的机遇 ,开辟新的发展领域 ,并制定可持续发展策略 。', - '六、推动国内市场发展建议', '1.加强健康消费教育宣传引导', - '居民消费是国内市场发展的主要推动力 ,在疫情影响下的', - '经济寒冬 ,国家政府也应该采取一系列举措推动国内市场发展 ,', - '为企业以及经营个体户创造良好的发展环境 。从青少年抓起 ,加', - '强健康教育宣传引导工作 ,帮助他们确立正确的消费观念 ,以及', - '倡导良好的公共卫生习惯 ,通过播放宣传片 、公益广告 ,开展志', - '愿活动等形式 ,做好健康普及工作 ,进一步引导全体居民健康消', - '费的观念意识 ,战胜疫情 ,推动居民健康消费 ,营造良好的国内', '市场发展氛围 。', '2.增加居民收入保障', - '面对天灾 ,政府应该积极给予保障措施用来保护居民权益 ,', - '例如给无法及时复工复产的居家人员一定的生活保障 ,或是财', - '政拨款保障居民养老保险 、医疗保险 ,以及完善基础设施建设 ,', - '加强失业保障 、提供就业援助 ,可以稳定居民消费水平 。另外鼓', - '励社会资本参与教育 、医疗、文化设施建设 ,降低居民税收负担', '鼓励消费 。', '3.提升商品服务质量监管', - '疫情期间出现了一些故意囤货 、哄抬物价的行为 ,更有出现', - '制造假冒伪劣商品 、以次充好 ,赚取不正当利益的欺诈行为 。对', - '此政府应该加强监管 ,严厉制止这种行为 ,保证物价水平不乱', - '涨,稳定居民消费 ,另一方面对于商品服务质量也应该有完善的', '监督举措 ,对非法行为依法惩处 。', - '4.正确引导舆论发展方向', '新冠肺炎疫情期间 ,社交媒体平台上出现了一些别具用心', - '的人散布不实谣言 ,引得人人自危 ,相关部门应该加以监管 ,做', - '到信息公开化 、透明化,严厉打击谣言散布者 ,并加以宣传 ,让居', - '民不信谣 、不传谣,正确引导舆论发展方向 ,有助于维护国内市', - '场稳定发展 ,维持物价稳定 ,保证居民正常 、健康消费 。', - '2020年到来的新型冠状肺炎疫情是对全人类的一大重要考', - '验,国家在面对紧急突发公共卫生事件 ,每个人紧紧团结在一', - '起,以坚决的姿态走出 “逆行者”的风采,政府也采取了一系列 强', - '有力的举措 ,控制了疫情发展 ,并加快推进复工复产 、返工返学,', - '但是战役并未结束 ,我们不能掉以轻心 ,更应该积极采取举 措恢', - '复经济发展 ,维护市场稳定 ,努力全面建成小康社会和实现 2020', '年经济社会发展目标 。', '参考文献 :', - '[1]关利欣 ,梁威.中美消费发展升级历程比较及启示 [J].中国流通经济 ,', '2019(5):13-21.', - '[2]郑江淮 ,付一夫 ,陶金.新冠肺炎疫情对消费经济的影响及对策分析', '[J].消费经济 ,2020,(2):3-9.', - '[3]梁威,关利欣 ,胡雪.消费国际化趋势下的中国对策 [J].国际贸易 ,', '2020(2):25-29.', - '[4]Keynes,J. M. The General Theory of Employment,In terest and', - 'Money[M].United Kingdom:Palgrave Macmillan, 1936.', - '[5]欧阳金雨 .及早抓住疫情过后的消费机会 [N].湖南日报 ,2020', '-02-23(003).', - '作者简介 :谭诗怡(1999.10- ),女,籍贯:湖南湘乡 ,湘潭大学,本', '科在读,研究方向 :电子商务', - '11Copyright©博看网 www.bookan.com.cn. All Rights Reserved.'] + # Example usage paragraphs = ['Hello!\nHi!\nGoodbye!'] tc = TextChunker() chunk_size = 512 chunks = tc.chunk_sentences(paragraphs, chunk_size) + # Print the resulting chunks for i, chunk in enumerate(chunks): - print(f"块 {i + 1}: {chunk}\n") + print(f"Chunk {i + 1}: {chunk}\n") \ No newline at end of file From 9847429d29d00f6e28a2fbbd89d9f6c781fe2ee2 Mon Sep 17 00:00:00 2001 From: yanqiangmiffy <1185918903@qq.com> Date: Fri, 10 Jan 2025 17:39:37 +0800 Subject: [PATCH 3/6] features@update chunker --- api/apps/core/parser/views.py | 4 +- examples/chunks/char_chunker_example.py | 11 ++ examples/chunks/langchain_spliter_exmaple.py | 13 +++ trustrag/modules/chunks/base.py | 5 + trustrag/modules/chunks/char_chunk.py | 19 ++++ trustrag/modules/chunks/sentence_chunk.py | 114 +++++++++++++++++++ trustrag/modules/chunks/token_chunk.py | 32 ++++++ trustrag/modules/document/chunk.py | 4 +- 8 files changed, 198 insertions(+), 4 deletions(-) create mode 100644 examples/chunks/char_chunker_example.py create mode 100644 examples/chunks/langchain_spliter_exmaple.py create mode 100644 trustrag/modules/chunks/base.py create mode 100644 trustrag/modules/chunks/char_chunk.py create mode 100644 trustrag/modules/chunks/sentence_chunk.py create mode 100644 trustrag/modules/chunks/token_chunk.py diff --git a/api/apps/core/parser/views.py b/api/apps/core/parser/views.py index ea44799..76888e8 100644 --- a/api/apps/core/parser/views.py +++ b/api/apps/core/parser/views.py @@ -67,13 +67,13 @@ async def parser(file: UploadFile = File(...), chunk_size: int = 512): for section in contents: # chunks = tc.chunk_sentences(section['content'], chunk_size=chunk_size) if 'chunks' not in section: - chunks = tc.chunk_sentences(section['content'], chunk_size=chunk_size) + chunks = tc.get_chunks(section['content'], chunk_size=chunk_size) section['chunks'] = chunks else: section['chunks'] = section['chunks'] results.append(section) else: - chunks = tc.chunk_sentences(contents, chunk_size=chunk_size) + chunks = tc.get_chunks(contents, chunk_size=chunk_size) results.append( { 'source': filename, diff --git a/examples/chunks/char_chunker_example.py b/examples/chunks/char_chunker_example.py new file mode 100644 index 0000000..5db853a --- /dev/null +++ b/examples/chunks/char_chunker_example.py @@ -0,0 +1,11 @@ +from trustrag.modules.chunks.char_chunk import CharChunker + +if __name__ == '__main__': + with open("../../data/docs/news.txt","r",encoding="utf-8") as f: + content=f.read() + print(content) + + cc=CharChunker(chunk_size=64) + + chunks=cc.get_chunks([content]) + print(chunks) \ No newline at end of file diff --git a/examples/chunks/langchain_spliter_exmaple.py b/examples/chunks/langchain_spliter_exmaple.py new file mode 100644 index 0000000..b0ad064 --- /dev/null +++ b/examples/chunks/langchain_spliter_exmaple.py @@ -0,0 +1,13 @@ +from langchain.text_splitter import CharacterTextSplitter +text = "This is the text I would like to ch up. It is the example text for this exercise." + + +text_splitter = CharacterTextSplitter( + separator=".", + chunk_size=2, + chunk_overlap=0, + length_function=len, + is_separator_regex=False, +) + +print(text_splitter.create_documents([text])) \ No newline at end of file diff --git a/trustrag/modules/chunks/base.py b/trustrag/modules/chunks/base.py new file mode 100644 index 0000000..16f89a3 --- /dev/null +++ b/trustrag/modules/chunks/base.py @@ -0,0 +1,5 @@ +class BaseChunker(object): + def __init__(self): + pass + def get_chunks(self, chunk): + raise NotImplementedError \ No newline at end of file diff --git a/trustrag/modules/chunks/char_chunk.py b/trustrag/modules/chunks/char_chunk.py new file mode 100644 index 0000000..b279e6c --- /dev/null +++ b/trustrag/modules/chunks/char_chunk.py @@ -0,0 +1,19 @@ +from trustrag.modules.chunks.base import BaseChunker +from typing import List + +class CharChunker(BaseChunker): + def __init__(self,chunk_size:int=64): + super().__init__() + self.chunk_size = chunk_size + def get_chunks(self, texts:List[str]) -> List[str]: + chunks= [] + for paragraph in texts: + for i in range(0, len(paragraph), self.chunk_size): + chunk = paragraph[i:i + self.chunk_size] + chunks.append(chunk) + return chunks + + +if __name__ == "__main__": + cc=CharChunker(chunk_size=64) + print(cc.get_chunks(["我喜欢北京。"])) \ No newline at end of file diff --git a/trustrag/modules/chunks/sentence_chunk.py b/trustrag/modules/chunks/sentence_chunk.py new file mode 100644 index 0000000..ffe8f23 --- /dev/null +++ b/trustrag/modules/chunks/sentence_chunk.py @@ -0,0 +1,114 @@ +import re + +from chonkie import BaseChunker +from tqdm import tqdm +from trustrag.modules.document import rag_tokenizer +from trustrag.modules.chunks.base import BaseChunker + +class SentenceChunker(BaseChunker): + def __init__(self,chunk_size=512): + """ + Initializes the TextChunker with a tokenizer. + """ + super().__init__() + self.tokenizer = rag_tokenizer + self.chunk_size=chunk_size + + def split_sentences(self, text: str) -> list[str]: + """ + Splits the input text into sentences based on Chinese and English punctuation marks. + + Args: + text (str): The input text to be split into sentences. + + Returns: + list[str]: A list of sentences extracted from the input text. + """ + # Use regex to split text by sentence-ending punctuation marks + sentence_endings = re.compile(r'([。!?.!?])') + sentences = sentence_endings.split(text) + + # Merge punctuation marks with their preceding sentences + result = [] + for i in range(0, len(sentences) - 1, 2): + if sentences[i]: + result.append(sentences[i] + sentences[i + 1]) + + # Handle the last sentence if it lacks punctuation + if sentences[-1]: + result.append(sentences[-1]) + + # Remove whitespace and filter out empty sentences + result = [sentence.strip() for sentence in result if sentence.strip()] + + return result + + def process_text_chunks(self, chunks: list[str]) -> list[str]: + """ + Preprocesses text chunks by normalizing excessive newlines and spaces. + + Args: + chunks (list[str]): A list of text chunks to be processed. + + Returns: + list[str]: A list of processed text chunks with normalized formatting. + """ + processed_chunks = [] + for chunk in chunks: + # Normalize four or more consecutive newlines + while '\n\n\n\n' in chunk: + chunk = chunk.replace('\n\n\n\n', '\n\n') + + # Normalize four or more consecutive spaces + while ' ' in chunk: + chunk = chunk.replace(' ', ' ') + + processed_chunks.append(chunk) + + return processed_chunks + + def get_chunks(self, paragraphs: list[str]) -> list[str]: + """ + Splits a list of paragraphs into chunks based on a specified token size. + + Args: + paragraphs (list[str]|str): A list of paragraphs to be chunked. + chunk_size (int): The maximum number of tokens allowed per chunk. + + Returns: + list[str]: A list of text chunks, each containing sentences that fit within the token limit. + """ + # Combine paragraphs into a single text + text = ''.join(paragraphs) + + # Split the text into sentences + sentences = self.split_sentences(text) + + # If no sentences are found, treat paragraphs as sentences + if len(sentences) == 0: + sentences = paragraphs + + chunks = [] + current_chunk = [] + current_chunk_tokens = 0 + + # Iterate through sentences and build chunks based on token count + for sentence in sentences: + tokens = self.tokenizer.tokenize(sentence) + if current_chunk_tokens + len(tokens) <= self.chunk_size: + # Add sentence to the current chunk if it fits + current_chunk.append(sentence) + current_chunk_tokens += len(tokens) + else: + # Finalize the current chunk and start a new one + chunks.append(''.join(current_chunk)) + current_chunk = [sentence] + current_chunk_tokens = len(tokens) + + # Add the last chunk if it contains any sentences + if current_chunk: + chunks.append(''.join(current_chunk)) + + # Preprocess the chunks to normalize formatting + chunks = self.process_text_chunks(chunks) + return chunks \ No newline at end of file diff --git a/trustrag/modules/chunks/token_chunk.py b/trustrag/modules/chunks/token_chunk.py new file mode 100644 index 0000000..158b20c --- /dev/null +++ b/trustrag/modules/chunks/token_chunk.py @@ -0,0 +1,32 @@ +from trustrag.modules.chunks.base import BaseChunker +from typing import List +from trustrag.modules.document.rag_tokenizer import RagTokenizer +class TokenChunker(BaseChunker): + def __init__(self,chunk_size:int=64,tokenizer_name="rag"): + super().__init__() + self.chunk_size = chunk_size + self.tokenizer_func = self.init_tokenizer(tokenizer_name) + + def init_tokenizer(self,tokenizer_name="rag"): + if tokenizer_name=="rag": + self.tokenizer_func = RagTokenizer() + return self.tokenizer_func + + def get_chunks(self, paragraphs:List[str]) -> List[str]: + chunks= [] + for paragraph in paragraphs: + tokens = self.tokenizer_func.tokenize(paragraph) + for i in range(0, len(tokens), self.chunk_size): + chunk = "".join(tokens[i:i + self.chunk_size]) + chunks.append(chunk) + return chunks + + + +if __name__ == '__main__': + with open("../../../data/docs/news.txt","r",encoding="utf-8") as f: + content=f.read() + print(content) + tc=TokenChunker() + chunks = tc.get_chunks([content]) + print(chunks) \ No newline at end of file diff --git a/trustrag/modules/document/chunk.py b/trustrag/modules/document/chunk.py index 34748e8..35ce0f4 100644 --- a/trustrag/modules/document/chunk.py +++ b/trustrag/modules/document/chunk.py @@ -63,7 +63,7 @@ def process_text_chunks(self, chunks: list[str]) -> list[str]: return processed_chunks - def chunk_sentences(self, paragraphs: list[str], chunk_size: int) -> list[str]: + def get_chunks(self, paragraphs: list[str], chunk_size: int) -> list[str]: """ Splits a list of paragraphs into chunks based on a specified token size. @@ -115,7 +115,7 @@ def chunk_sentences(self, paragraphs: list[str], chunk_size: int) -> list[str]: paragraphs = ['Hello!\nHi!\nGoodbye!'] tc = TextChunker() chunk_size = 512 - chunks = tc.chunk_sentences(paragraphs, chunk_size) + chunks = tc.get_chunks(paragraphs, chunk_size) # Print the resulting chunks for i, chunk in enumerate(chunks): From 01a31400b45b3988867b928fac236f89aae01eab Mon Sep 17 00:00:00 2001 From: yanqiangmiffy <1185918903@qq.com> Date: Tue, 14 Jan 2025 11:14:30 +0800 Subject: [PATCH 4/6] update@update en&zh readme --- README.md | 166 +++++++++--------- README_en.md | 23 --- README_zh.md | 317 +++++++++++++++++++++++++++++++++++ resources/trustrag_group.png | Bin 0 -> 279732 bytes setup.py | 2 +- 5 files changed, 399 insertions(+), 109 deletions(-) delete mode 100644 README_en.md create mode 100644 README_zh.md create mode 100644 resources/trustrag_group.png diff --git a/README.md b/README.md index 001a31e..4063c2d 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,8 @@ -# TrustRAG +# TrustRAG:The RAG Framework within Reliable input,Trusted output +A Configurable and Modular RAG Framework. + +\[ English | [中文](README_zh.md) \] -可配置的模块化RAG框架。 [![Python](https://img.shields.io/badge/Python-3.10.0-3776AB.svg?style=flat)](https://www.python.org) ![workflow status](https://github.com/gomate-community/rageval/actions/workflows/makefile.yml/badge.svg) @@ -8,88 +10,84 @@ [![pydocstyle](https://img.shields.io/badge/pydocstyle-enabled-AD4CD3)](http://www.pydocstyle.org/en/stable/) [![PEP8](https://img.shields.io/badge/code%20style-pep8-orange.svg)](https://www.python.org/dev/peps/pep-0008/) -## 🔥TrustRAG 简介 -TrustRAG是一款配置化模块化的Retrieval-Augmented Generation (RAG) 框架,旨在提供**可靠的输入与可信的输出** -,确保用户在检索问答场景中能够获得高质量且可信赖的结果。 +## 🔥Introduction to TrustRAG -TrustRAG框架的设计核心在于其**高度的可配置性和模块化**,使得用户可以根据具体需求灵活调整和优化各个组件,以满足各种应用场景的要求。 +TrustRAG is a configurable and modular Retrieval-Augmented Generation (RAG) framework designed to provide **reliable input and trusted output**, ensuring users can obtain high-quality and trustworthy results in retrieval-based question-answering scenarios. -## 🔨TrustRAG 框架 +The core design of TrustRAG lies in its **high configurability and modularity**, allowing users to flexibly adjust and optimize each component according to specific needs to meet the requirements of various application scenarios. -![framework.png](resources%2Fframework.png) +## 🔨TrustRAG Framework -## ✨主要特色 +![framework.png](resources%2Fframework.png) -**“Reliable input,Trusted output”** +## ✨Key Features -可靠的输入,可信的输出 +**“Reliable input, Trusted output”** -## 🎉 更新记录 +## 🎉 Changelog -- 支持多模态RAG问答,API使用**GLM-4V-Flash**,代码见[trustrag/applications/rag_multimodal.py](trustrag/applications/rag_multimodal.py) -- TrustRAG 打包构建,支持pip和source两种方式安装 -- 添加[MinerU文档解析](https://github.com/gomate-community/TrustRAG/blob/main/docs/mineru.md) - :一站式开源高质量数据提取工具,支持PDF/网页/多格式电子书提取`[20240907] ` -- RAPTOR:递归树检索器实现 -- 支持多种文件解析并且模块化目前支持解析的文件类型包括:`text`,`docx`,`ppt`,`excel`,`html`,`pdf`,`md`等 -- 优化了`DenseRetriever`,支持索引构建,增量追加以及索引保存,保存内容包括文档、向量以及索引 -- 添加`ReRank`的BGE排序、Rewriter的`HyDE` -- 添加`Judge`的BgeJudge,判断文章是否有用 `20240711` +- Support for multimodal RAG question-answering, API using **GLM-4V-Flash**, code available at [trustrag/applications/rag_multimodal.py](trustrag/applications/rag_multimodal.py) +- TrustRAG packaging and build, supporting both pip and source installation +- Added [MinerU document parsing](https://github.com/gomate-community/TrustRAG/blob/main/docs/mineru.md): A one-stop open-source high-quality data extraction tool, supporting PDF/webpage/multi-format e-book extraction `[20240907]` +- RAPTOR: Recursive tree retriever implementation +- Support for multiple file parsing and modularity, currently supported file types include: `text`, `docx`, `ppt`, `excel`, `html`, `pdf`, `md`, etc. +- Optimized `DenseRetriever`, supporting index building, incremental appending, and index saving, including saving documents, vectors, and indexes +- Added `ReRank` with BGE sorting, Rewriter with `HyDE` +- Added `Judge` with BgeJudge, determining the usefulness of articles `20240711` -## 🚀快速上手 +## 🚀Quick Start -## 🛠️ 安装 +## 🛠️ Installation -### 方法1:使用`pip`安装 +### Method 1: Install via `pip` -1. 创建conda环境(可选) +1. Create a conda environment (optional) -```sehll +```shell conda create -n trustrag python=3.9 conda activate trustrag ``` -2. 使用`pip`安装依赖 +2. Install dependencies using `pip` -```sehll +```shell pip install trustrag ``` -### 方法2:源码安装 +### Method 2: Install from source -1. 下载源码 +1. Download the source code ```shell git clone https://github.com/gomate-community/TrustRAG.git ``` -2. 安装依赖 +2. Install dependencies ```shell pip install -e . ``` -## 🚀 快速上手 +## 🚀 Quick Start -### 1 模块介绍📝 +### 1 Module Overview📝 ```text ├── applications ├── modules -| ├── citation:答案与证据引用 -| ├── document:文档解析与切块,支持多种文档类型 -| ├── generator:生成器 -| ├── judger:文档选择 -| ├── prompt:提示语 -| ├── refiner:信息总结 -| ├── reranker:排序模块 -| ├── retrieval:检索模块 -| └── rewriter:改写模块 +| ├── citation: Answer and evidence citation +| ├── document: Document parsing and chunking, supports multiple document types +| ├── generator: Generator +| ├── judger: Document selection +| ├── prompt: Prompts +| ├── refiner: Information summarization +| ├── reranker: Ranking module +| ├── retrieval: Retrieval module +| └── rewriter: Rewriting module ``` - -### 2 导入模块 +### 2 Import Modules ```python import pickle @@ -106,12 +104,11 @@ from trustrag.modules.retrieval.dense_retriever import DenseRetrieverConfig from trustrag.modules.retrieval.hybrid_retriever import HybridRetriever, HybridRetrieverConfig ``` - -### 3 文档解析以及切片 +### 3 Document Parsing and Chunking ```text def generate_chunks(): - tp = TextParser()# 代表txt格式解析 + tp = TextParser() # Represents txt format parsing tc = TextChunker() paragraphs = tp.parse(r'H:/2024-Xfyun-RAG/data/corpus.txt', encoding="utf-8") print(len(paragraphs)) @@ -123,16 +120,15 @@ def generate_chunks(): with open(f'{PROJECT_BASE}/output/chunks.pkl', 'wb') as f: pickle.dump(chunks, f) ``` ->corpus.txt每行为一段新闻,可以自行选取paragraph读取的逻辑,语料来自[大模型RAG智能问答挑战赛](https://challenge.xfyun.cn/topic/info?type=RAG-quiz&option=zpsm) +> Each line in `corpus.txt` is a news paragraph. You can customize the logic for reading paragraphs. The corpus is from [Large Model RAG Intelligent Question-Answering Challenge](https://challenge.xfyun.cn/topic/info?type=RAG-quiz&option=zpsm). -`TextChunker`为文本块切块程序,主要特点使用[InfiniFlow/huqie](https://huggingface.co/InfiniFlow/huqie)作为文本检索的分词器,适合RAG场景。 +`TextChunker` is the text chunking program, primarily using [InfiniFlow/huqie](https://huggingface.co/InfiniFlow/huqie) as the text retrieval tokenizer, suitable for RAG scenarios. +### 4 Building the Retriever -### 4 构建检索器 +**Configuring the Retriever:** -**配置检索器:** - -下面是一个混合检索器`HybridRetriever`配置参考,其中`HybridRetrieverConfig`需要由`BM25RetrieverConfig`和`DenseRetrieverConfig`配置构成。 +Below is a reference configuration for a hybrid retriever `HybridRetriever`, where `HybridRetrieverConfig` is composed of `BM25RetrieverConfig` and `DenseRetrieverConfig`. ```python # BM25 and Dense Retriever configurations @@ -152,34 +148,34 @@ dense_config = DenseRetrieverConfig( config_info = dense_config.log_config() print(config_info) # Hybrid Retriever configuration -# 由于分数框架不在同一维度,建议可以合并 +# Since the score frameworks are not on the same dimension, it is recommended to merge them hybrid_config = HybridRetrieverConfig( bm25_config=bm25_config, dense_config=dense_config, - bm25_weight=0.7, # bm25检索结果权重 - dense_weight=0.3 # dense检索结果权重 + bm25_weight=0.7, # BM25 retrieval result weight + dense_weight=0.3 # Dense retrieval result weight ) hybrid_retriever = HybridRetriever(config=hybrid_config) ``` -**构建索引:** +**Building the Index:** ````python -# 构建索引 +# Build the index hybrid_retriever.build_from_texts(corpus) -# 保存索引 +# Save the index hybrid_retriever.save_index() ```` -如果构建好索引之后,可以多次使用,直接跳过上面步骤,加载索引 +If the index is already built, you can skip the above steps and directly load the index: ```text hybrid_retriever.load_index() ``` -**检索测试:** +**Retrieval Test:** ```python -query = "支付宝" +query = "Alipay" results = hybrid_retriever.retrieve(query, top_k=10) print(len(results)) # Output results @@ -187,22 +183,22 @@ for result in results: print(f"Text: {result['text']}, Score: {result['score']}") ``` -### 5 排序模型 +### 5 Ranking Model ```python reranker_config = BgeRerankerConfig( model_name_or_path=reranker_model_path ) bge_reranker = BgeReranker(reranker_config) ``` -### 6 生成器配置 +### 6 Generator Configuration ```python glm4_chat = GLM4Chat(llm_model_path) ``` -### 6 检索问答 +### 6 Retrieval Question-Answering ```python -# ====================检索问答========================= +# ====================Retrieval Question-Answering========================= test = pd.read_csv(test_path) answers = [] for question in tqdm(test['question'], total=len(test)): @@ -212,7 +208,7 @@ for question in tqdm(test['question'], total=len(test)): documents=[doc['text'] for idx, doc in enumerate(search_docs)] ) # print(search_docs) - content = '\n'.join([f'信息[{idx}]:' + doc['text'] for idx, doc in enumerate(search_docs)]) + content = '\n'.join([f'Information[{idx}]:' + doc['text'] for idx, doc in enumerate(search_docs)]) answer = glm4_chat.chat(prompt=question, content=content) answers.append(answer[0]) print(question) @@ -223,9 +219,9 @@ test['answer'] = answers test[['answer']].to_csv(f'{PROJECT_BASE}/output/gomate_baseline.csv', index=False) ``` -## 🔧定制化RAG +## 🔧Customizing RAG -> 构建自定义的RAG应用 +> Building a custom RAG application ```python import os @@ -253,14 +249,14 @@ class RagApplication(): pass ``` -模块可见[rag.py](trustrag/applications/rag.py) +The module can be found at [rag.py](trustrag/applications/rag.py) -### 🌐体验RAG效果 +### 🌐Experience RAG Effects -可以配置本地模型路径 +You can configure the local model path ```text -# 修改成自己的配置!!! +# Modify to your own configuration!!! app_config = ApplicationConfig() app_config.docs_path = "./docs/" app_config.llm_model_path = "/data/users/searchgpt/pretrained_models/chatglm3-6b/" @@ -284,31 +280,31 @@ application.init_vector_store() python app.py ``` -浏览器访问:[127.0.0.1:7860](127.0.0.1:7860) +Access via browser: [127.0.0.1:7860](127.0.0.1:7860) ![trustrag_demo.png](resources%2Ftrustrag_demo.png) -app后台日志: +App backend logs: ![app_logging3.png](resources%2Fapp_logging3.png) ## ⭐️ Star History [![Star History Chart](https://api.star-history.com/svg?repos=gomate-community/TrustRAG&type=Date)](https://star-history.com/#gomate-community/TrustRAG&Date) -## 研究与开发团队 - -本项目由网络数据科学与技术重点实验室[`GoMate`](https://github.com/gomate-community)团队完成,团队指导老师为郭嘉丰、范意兴研究员。 +## Research and Development Team -## 技术交流群 +This project is completed by the [`GoMate`](https://github.com/gomate-community) team from the Key Laboratory of Network Data Science and Technology, under the guidance of researchers Jiafeng Guo and Yixing Fan. -欢迎多提建议、Bad cases,欢迎进群及时交流,也欢迎大家多提PR
+## Technical Exchange Group - +Welcome to provide suggestions and report bad cases. Join the group for timely communication, and PRs are also welcome.
+ -群满或者合作交流可以联系: +If the group is full or for cooperation and exchange, please contact: -## 致谢 -- 文档解析:[infiniflow/ragflow](https://github.com/infiniflow/ragflow/blob/main/deepdoc/README.md) -- PDF文件解析[opendatalab/MinerU](https://github.com/opendatalab/MinerU) \ No newline at end of file +## Acknowledgments +>This project thanks the following open-source projects for their support and contributions: +- Document parsing: [infiniflow/ragflow](https://github.com/infiniflow/ragflow/blob/main/deepdoc/README.md) +- PDF file parsing: [opendatalab/MinerU](https://github.com/opendatalab/MinerU) \ No newline at end of file diff --git a/README_en.md b/README_en.md deleted file mode 100644 index 74a3938..0000000 --- a/README_en.md +++ /dev/null @@ -1,23 +0,0 @@ -# TrustRAG - -RAG Framework with configurable modules. - -[![python](https://img.shields.io/badge/Python-3.8.18-3776AB.svg?style=flat&logo=python&logoColor=white)](https://www.python.org) -![workflow status](https://github.com/gomate-community/rageval/actions/workflows/makefile.yml/badge.svg) -[![codecov](https://codecov.io/gh/gomate-community/TrustRAG/graph/badge.svg?token=eG99uSM8mC)](https://codecov.io/gh/gomate-community/TrustRAG) -[![pydocstyle](https://img.shields.io/badge/pydocstyle-enabled-AD4CD3)](http://www.pydocstyle.org/en/stable/) -[![PEP8](https://img.shields.io/badge/code%20style-pep8-orange.svg)](https://www.python.org/dev/peps/pep-0008/) - -## Installation - -``` -git clone https://github.com/gomate-community/TrustRAG.git -``` -## Usage - -``` -git install ... -``` - -## Demo -![app_logging3.png](resources%2Fapp_logging3.png) \ No newline at end of file diff --git a/README_zh.md b/README_zh.md new file mode 100644 index 0000000..59aefa5 --- /dev/null +++ b/README_zh.md @@ -0,0 +1,317 @@ +# TrustRAG:可靠输入与可信输出的RAG框架 + +可配置的模块化RAG框架。 + +\[ 中文| [English](README_zh) \] + +[![Python](https://img.shields.io/badge/Python-3.10.0-3776AB.svg?style=flat)](https://www.python.org) +![workflow status](https://github.com/gomate-community/rageval/actions/workflows/makefile.yml/badge.svg) +[![codecov](https://codecov.io/gh/gomate-community/TrustRAG/graph/badge.svg?token=eG99uSM8mC)](https://codecov.io/gh/gomate-community/TrustRAG) +[![pydocstyle](https://img.shields.io/badge/pydocstyle-enabled-AD4CD3)](http://www.pydocstyle.org/en/stable/) +[![PEP8](https://img.shields.io/badge/code%20style-pep8-orange.svg)](https://www.python.org/dev/peps/pep-0008/) + +## 🔥TrustRAG 简介 + +TrustRAG是一款配置化模块化的Retrieval-Augmented Generation (RAG) 框架,旨在提供**可靠的输入与可信的输出** +,确保用户在检索问答场景中能够获得高质量且可信赖的结果。 + +TrustRAG框架的设计核心在于其**高度的可配置性和模块化**,使得用户可以根据具体需求灵活调整和优化各个组件,以满足各种应用场景的要求。 + +## 🔨TrustRAG 框架 + +![framework.png](resources%2Fframework.png) + +## ✨主要特色 + +**“Reliable input,Trusted output”** + +可靠的输入,可信的输出 + +## 🎉 更新记录 + +- 支持多模态RAG问答,API使用**GLM-4V-Flash**,代码见[trustrag/applications/rag_multimodal.py](trustrag/applications/rag_multimodal.py) +- TrustRAG 打包构建,支持pip和source两种方式安装 +- 添加[MinerU文档解析](https://github.com/gomate-community/TrustRAG/blob/main/docs/mineru.md) + :一站式开源高质量数据提取工具,支持PDF/网页/多格式电子书提取`[20240907] ` +- RAPTOR:递归树检索器实现 +- 支持多种文件解析并且模块化目前支持解析的文件类型包括:`text`,`docx`,`ppt`,`excel`,`html`,`pdf`,`md`等 +- 优化了`DenseRetriever`,支持索引构建,增量追加以及索引保存,保存内容包括文档、向量以及索引 +- 添加`ReRank`的BGE排序、Rewriter的`HyDE` +- 添加`Judge`的BgeJudge,判断文章是否有用 `20240711` + +## 🚀快速上手 + +## 🛠️ 安装 + +### 方法1:使用`pip`安装 + +1. 创建conda环境(可选) + +```sehll +conda create -n trustrag python=3.9 +conda activate trustrag +``` + +2. 使用`pip`安装依赖 + +```sehll +pip install trustrag +``` + +### 方法2:源码安装 + +1. 下载源码 + +```shell +git clone https://github.com/gomate-community/TrustRAG.git +``` + +2. 安装依赖 + +```shell +pip install -e . +``` + +## 🚀 快速上手 + +### 1 模块介绍📝 + +```text +├── applications +├── modules +| ├── citation:答案与证据引用 +| ├── document:文档解析与切块,支持多种文档类型 +| ├── generator:生成器 +| ├── judger:文档选择 +| ├── prompt:提示语 +| ├── refiner:信息总结 +| ├── reranker:排序模块 +| ├── retrieval:检索模块 +| └── rewriter:改写模块 +``` + + +### 2 导入模块 + +```python +import pickle +import pandas as pd +from tqdm import tqdm + +from trustrag.modules.document.chunk import TextChunker +from trustrag.modules.document.txt_parser import TextParser +from trustrag.modules.document.utils import PROJECT_BASE +from trustrag.modules.generator.llm import GLM4Chat +from trustrag.modules.reranker.bge_reranker import BgeRerankerConfig, BgeReranker +from trustrag.modules.retrieval.bm25s_retriever import BM25RetrieverConfig +from trustrag.modules.retrieval.dense_retriever import DenseRetrieverConfig +from trustrag.modules.retrieval.hybrid_retriever import HybridRetriever, HybridRetrieverConfig +``` + + +### 3 文档解析以及切片 + +```text +def generate_chunks(): + tp = TextParser()# 代表txt格式解析 + tc = TextChunker() + paragraphs = tp.parse(r'H:/2024-Xfyun-RAG/data/corpus.txt', encoding="utf-8") + print(len(paragraphs)) + chunks = [] + for content in tqdm(paragraphs): + chunk = tc.chunk_sentences([content], chunk_size=1024) + chunks.append(chunk) + + with open(f'{PROJECT_BASE}/output/chunks.pkl', 'wb') as f: + pickle.dump(chunks, f) +``` +>corpus.txt每行为一段新闻,可以自行选取paragraph读取的逻辑,语料来自[大模型RAG智能问答挑战赛](https://challenge.xfyun.cn/topic/info?type=RAG-quiz&option=zpsm) + +`TextChunker`为文本块切块程序,主要特点使用[InfiniFlow/huqie](https://huggingface.co/InfiniFlow/huqie)作为文本检索的分词器,适合RAG场景。 + + +### 4 构建检索器 + +**配置检索器:** + +下面是一个混合检索器`HybridRetriever`配置参考,其中`HybridRetrieverConfig`需要由`BM25RetrieverConfig`和`DenseRetrieverConfig`配置构成。 + +```python +# BM25 and Dense Retriever configurations +bm25_config = BM25RetrieverConfig( + method='lucene', + index_path='indexs/description_bm25.index', + k1=1.6, + b=0.7 +) +bm25_config.validate() +print(bm25_config.log_config()) +dense_config = DenseRetrieverConfig( + model_name_or_path=embedding_model_path, + dim=1024, + index_path='indexs/dense_cache' +) +config_info = dense_config.log_config() +print(config_info) +# Hybrid Retriever configuration +# 由于分数框架不在同一维度,建议可以合并 +hybrid_config = HybridRetrieverConfig( + bm25_config=bm25_config, + dense_config=dense_config, + bm25_weight=0.7, # bm25检索结果权重 + dense_weight=0.3 # dense检索结果权重 +) +hybrid_retriever = HybridRetriever(config=hybrid_config) +``` + +**构建索引:** + +````python +# 构建索引 +hybrid_retriever.build_from_texts(corpus) +# 保存索引 +hybrid_retriever.save_index() +```` + +如果构建好索引之后,可以多次使用,直接跳过上面步骤,加载索引 +```text +hybrid_retriever.load_index() +``` + +**检索测试:** + +```python +query = "支付宝" +results = hybrid_retriever.retrieve(query, top_k=10) +print(len(results)) +# Output results +for result in results: + print(f"Text: {result['text']}, Score: {result['score']}") +``` + +### 5 排序模型 +```python +reranker_config = BgeRerankerConfig( + model_name_or_path=reranker_model_path +) +bge_reranker = BgeReranker(reranker_config) +``` +### 6 生成器配置 +```python +glm4_chat = GLM4Chat(llm_model_path) +``` + +### 6 检索问答 + +```python +# ====================检索问答========================= +test = pd.read_csv(test_path) +answers = [] +for question in tqdm(test['question'], total=len(test)): + search_docs = hybrid_retriever.retrieve(question, top_k=10) + search_docs = bge_reranker.rerank( + query=question, + documents=[doc['text'] for idx, doc in enumerate(search_docs)] + ) + # print(search_docs) + content = '\n'.join([f'信息[{idx}]:' + doc['text'] for idx, doc in enumerate(search_docs)]) + answer = glm4_chat.chat(prompt=question, content=content) + answers.append(answer[0]) + print(question) + print(answer[0]) + print("************************************/n") +test['answer'] = answers + +test[['answer']].to_csv(f'{PROJECT_BASE}/output/gomate_baseline.csv', index=False) +``` + +## 🔧定制化RAG + +> 构建自定义的RAG应用 + +```python +import os + +from trustrag.modules.document.common_parser import CommonParser +from trustrag.modules.generator.llm import GLMChat +from trustrag.modules.reranker.bge_reranker import BgeReranker +from trustrag.modules.retrieval.dense_retriever import DenseRetriever + + +class RagApplication(): + def __init__(self, config): + pass + + def init_vector_store(self): + pass + + def load_vector_store(self): + pass + + def add_document(self, file_path): + pass + + def chat(self, question: str = '', topk: int = 5): + pass +``` + +模块可见[rag.py](trustrag/applications/rag.py) + +### 🌐体验RAG效果 + +可以配置本地模型路径 + +```text +# 修改成自己的配置!!! +app_config = ApplicationConfig() +app_config.docs_path = "./docs/" +app_config.llm_model_path = "/data/users/searchgpt/pretrained_models/chatglm3-6b/" + +retriever_config = DenseRetrieverConfig( + model_name_or_path="/data/users/searchgpt/pretrained_models/bge-large-zh-v1.5", + dim=1024, + index_dir='/data/users/searchgpt/yq/TrustRAG/examples/retrievers/dense_cache' +) +rerank_config = BgeRerankerConfig( + model_name_or_path="/data/users/searchgpt/pretrained_models/bge-reranker-large" +) + +app_config.retriever_config = retriever_config +app_config.rerank_config = rerank_config +application = RagApplication(app_config) +application.init_vector_store() +``` + +```shell +python app.py +``` + +浏览器访问:[127.0.0.1:7860](127.0.0.1:7860) +![trustrag_demo.png](resources%2Ftrustrag_demo.png) + +app后台日志: +![app_logging3.png](resources%2Fapp_logging3.png) + +## ⭐️ Star History + +[![Star History Chart](https://api.star-history.com/svg?repos=gomate-community/TrustRAG&type=Date)](https://star-history.com/#gomate-community/TrustRAG&Date) + +## 研究与开发团队 + +本项目由网络数据科学与技术重点实验室[`GoMate`](https://github.com/gomate-community)团队完成,团队指导老师为郭嘉丰、范意兴研究员。 + +## 技术交流群 + +欢迎多提建议、Bad cases,欢迎进群及时交流,也欢迎大家多提PR
+ + + + +群满或者合作交流可以联系: + + + +## 致谢 +>本项目感谢以下开源项目的支持与贡献: +- 文档解析:[infiniflow/ragflow](https://github.com/infiniflow/ragflow/blob/main/deepdoc/README.md) +- PDF文件解析[opendatalab/MinerU](https://github.com/opendatalab/MinerU) \ No newline at end of file diff --git a/resources/trustrag_group.png b/resources/trustrag_group.png new file mode 100644 index 0000000000000000000000000000000000000000..97bfca8f5e00de5eb122cb942049ac89fafb1dbc GIT binary patch literal 279732 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�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

k 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 literal 0 HcmV?d00001 diff --git a/setup.py b/setup.py index 0d1295b..b85b7d1 100644 --- a/setup.py +++ b/setup.py @@ -18,7 +18,7 @@ install_requires=required, author_email="yanqiang@ict.ac.cn", description="RAG Framework within Reliable input,Trusted output", - long_description=open('README.md').read(), + long_description=open('README_zh.md').read(), long_description_content_type='text/markdown', url="https://github.com/gomate-community/GoMate", python_requires='>=3.9', From cba1938acde86fe0be2cd4681ba931a6c0d53c15 Mon Sep 17 00:00:00 2001 From: yanqiangmiffy <1185918903@qq.com> Date: Tue, 14 Jan 2025 11:18:35 +0800 Subject: [PATCH 5/6] update@update en&zh readme --- README.md | 2 +- README_zh.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 4063c2d..82afb7b 100644 --- a/README.md +++ b/README.md @@ -298,7 +298,7 @@ This project is completed by the [`GoMate`](https://github.com/gomate-community) Welcome to provide suggestions and report bad cases. Join the group for timely communication, and PRs are also welcome.
- + If the group is full or for cooperation and exchange, please contact: diff --git a/README_zh.md b/README_zh.md index 59aefa5..886d98f 100644 --- a/README_zh.md +++ b/README_zh.md @@ -304,7 +304,7 @@ app后台日志: 欢迎多提建议、Bad cases,欢迎进群及时交流,也欢迎大家多提PR
- + 群满或者合作交流可以联系: From d00b02397233f6118dbcb4f681cedd172ec9d062 Mon Sep 17 00:00:00 2001 From: yanqiangmiffy <1185918903@qq.com> Date: Tue, 14 Jan 2025 11:56:01 +0800 Subject: [PATCH 6/6] feature@update llmopenai demo --- examples/llms/deepseek_chat_example.py | 29 ++ trustrag/applications/rag_openai.py | 88 ++++++ trustrag/modules/generator/chat.py | 412 +------------------------ 3 files changed, 131 insertions(+), 398 deletions(-) create mode 100644 examples/llms/deepseek_chat_example.py create mode 100644 trustrag/applications/rag_openai.py diff --git a/examples/llms/deepseek_chat_example.py b/examples/llms/deepseek_chat_example.py new file mode 100644 index 0000000..cdae473 --- /dev/null +++ b/examples/llms/deepseek_chat_example.py @@ -0,0 +1,29 @@ +from trustrag.modules.generator.chat import DeepSeekChat + +if __name__ == '__main__': + + api_key = "替换为你的 DeepSeek API Key" # 替换为你的 DeepSeek API Key + deepseek_chat = DeepSeekChat(key=api_key) + + system_prompt = "You are a helpful assistant." + history = [ + {"role": "user", "content": "Hello"} + ] + gen_conf = { + "temperature": 0.7, + "max_tokens": 100 + } + + # 调用 chat 方法进行对话 + + response, total_tokens = deepseek_chat.chat(system=system_prompt, history=history, gen_conf=gen_conf) + print("Response:", response) + print("Total Tokens:", total_tokens) + + # 调用 chat_streamly 方法进行流式对话 + + for response in deepseek_chat.chat_streamly(system=system_prompt, history=history, gen_conf=gen_conf): + if isinstance(response, str): + print("Stream Response:", response) + else: + print("Total Tokens:", response) \ No newline at end of file diff --git a/trustrag/applications/rag_openai.py b/trustrag/applications/rag_openai.py new file mode 100644 index 0000000..104ee6c --- /dev/null +++ b/trustrag/applications/rag_openai.py @@ -0,0 +1,88 @@ +#!/usr/bin/env python +# -*- coding:utf-8 _*- +""" +@author:quincy qiang +@license: Apache Licence +@file: RagApplication.py +@time: 2024/05/20 +@contact: yanqiangmiffy@gamil.com +@description:use openai etc. llm service demo +""" +import os +from trustrag.modules.document.common_parser import CommonParser +from trustrag.modules.generator.chat import DeepSeekChat +from trustrag.modules.reranker.bge_reranker import BgeReranker +from trustrag.modules.retrieval.dense_retriever import DenseRetriever +from trustrag.modules.document.chunk import TextChunker + +class ApplicationConfig(): + def __init__(self): + self.retriever_config = None + self.rerank_config = None + + +class RagApplication(): + def __init__(self, config): + self.config = config + self.parser = CommonParser() + self.retriever = DenseRetriever(self.config.retriever_config) + self.reranker = BgeReranker(self.config.rerank_config) + self.llm = DeepSeekChat(key=self.config.your_key) + self.tc=TextChunker() + self.rag_prompt="""请结合参考的上下文内容回答用户问题,如果上下文不能支撑用户问题,那么回答不知道或者我无法根据参考信息回答。 + 问题: {question} + 可参考的上下文: + ··· + {context} + ··· + 如果给定的上下文无法让你做出回答,请回答数据库中没有这个内容,你不知道。 + 有用的回答:""" + def init_vector_store(self): + """ + + """ + print("init_vector_store ... ") + all_paragraphs = [] + all_chunks = [] + for filename in os.listdir(self.config.docs_path): + file_path = os.path.join(self.config.docs_path, filename) + try: + paragraphs=self.parser.parse(file_path) + all_paragraphs.append(paragraphs) + except: + pass + print("chunking for paragraphs") + for paragraphs in all_paragraphs: + chunks=self.tc.get_chunks(paragraphs, 256) + all_chunks.extend(chunks) + self.retriever.build_from_texts(all_chunks) + print("init_vector_store done! ") + self.retriever.save_index(self.config.retriever_config.index_path) + + def load_vector_store(self): + self.retriever.load_index(self.config.retriever_config.index_path) + + def add_document(self, file_path): + chunks = self.parser.parse(file_path) + for chunk in chunks: + self.retriever.add_text(chunk) + print("add_document done!") + + def chat(self, question: str = '', top_k: int = 5): + contents = self.retriever.retrieve(query=question, top_k=top_k) + contents = self.reranker.rerank(query=question, documents=[content['text'] for content in contents]) + content = '\n'.join([content['text'] for content in contents]) + + system_prompt = "你是一个人工智能助手." + prompt = self.rag_prompt.format(system_prompt=system_prompt, question=question,context=content) + history = [ + {"role": "user", "content": prompt} + ] + gen_conf = { + "temperature": 0.7, + "max_tokens": 100 + } + + # 调用 chat 方法进行对话 + result = self.llm.chat(system=system_prompt, history=history, gen_conf=gen_conf) + return result, history, contents diff --git a/trustrag/modules/generator/chat.py b/trustrag/modules/generator/chat.py index f201e6b..db77735 100644 --- a/trustrag/modules/generator/chat.py +++ b/trustrag/modules/generator/chat.py @@ -9,30 +9,19 @@ @software: PyCharm @description: coding.. """ -from zhipuai import ZhipuAI -from dashscope import Generation from abc import ABC from openai import OpenAI import openai -from ollama import Client -from volcengine.maas.v2 import MaasService -import tiktoken import re +from langdetect import detect + def is_english(texts): - eng = 0 - if not texts: return False - for t in texts: - if re.match(r"[a-zA-Z]{2,}", t.strip()): - eng += 1 - if eng / len(texts) > 0.8: - return True - return False -encoder = tiktoken.encoding_for_model("gpt-3.5-turbo") + try: + # 检测文本的语言 + return detect(str(texts[0])) == 'en' + except: + return False -def num_tokens_from_string(string: str) -> int: - """Returns the number of tokens in a text string.""" - num_tokens = len(encoder.encode(string)) - return num_tokens class Base(ABC): def __init__(self, key, model_name, base_url): self.client = OpenAI(api_key=key, base_url=base_url) @@ -80,6 +69,13 @@ def chat_streamly(self, system, history, gen_conf): yield total_tokens +class DeepSeekChat(Base): + def __init__(self, key, model_name="deepseek-chat", base_url="https://api.deepseek.com"): + if not base_url: base_url="https://api.deepseek.com" + super().__init__(key, model_name, base_url) + + + class GptTurbo(Base): def __init__(self, key, model_name="gpt-3.5-turbo", base_url="https://api.openai.com/v1"): if not base_url: base_url="https://api.openai.com/v1" @@ -98,386 +94,6 @@ def __init__(self, key=None, model_name="", base_url=""): super().__init__(key, model_name, base_url) -class DeepSeekChat(Base): - def __init__(self, key, model_name="deepseek-chat", base_url="https://api.deepseek.com/v1"): - if not base_url: base_url="https://api.deepseek.com/v1" - super().__init__(key, model_name, base_url) - - -class BaiChuanChat(Base): - def __init__(self, key, model_name="Baichuan3-Turbo", base_url="https://api.baichuan-ai.com/v1"): - if not base_url: - base_url = "https://api.baichuan-ai.com/v1" - super().__init__(key, model_name, base_url) - - @staticmethod - def _format_params(params): - return { - "temperature": params.get("temperature", 0.3), - "max_tokens": params.get("max_tokens", 2048), - "top_p": params.get("top_p", 0.85), - } - - def chat(self, system, history, gen_conf): - if system: - history.insert(0, {"role": "system", "content": system}) - try: - response = self.client.chat.completions.create( - model=self.model_name, - messages=history, - extra_body={ - "tools": [{ - "type": "web_search", - "web_search": { - "enable": True, - "search_mode": "performance_first" - } - }] - }, - **self._format_params(gen_conf)) - ans = response.choices[0].message.content.strip() - if response.choices[0].finish_reason == "length": - ans += "...\nFor the content length reason, it stopped, continue?" if is_english( - [ans]) else "······\n由于长度的原因,回答被截断了,要继续吗?" - return ans, response.usage.total_tokens - except openai.APIError as e: - return "**ERROR**: " + str(e), 0 - - def chat_streamly(self, system, history, gen_conf): - if system: - history.insert(0, {"role": "system", "content": system}) - ans = "" - total_tokens = 0 - try: - response = self.client.chat.completions.create( - model=self.model_name, - messages=history, - extra_body={ - "tools": [{ - "type": "web_search", - "web_search": { - "enable": True, - "search_mode": "performance_first" - } - }] - }, - stream=True, - **self._format_params(gen_conf)) - for resp in response: - if resp.choices[0].finish_reason == "stop": - if not resp.choices[0].delta.content: - continue - total_tokens = resp.usage.get('total_tokens', 0) - if not resp.choices[0].delta.content: - continue - ans += resp.choices[0].delta.content - if resp.choices[0].finish_reason == "length": - ans += "...\nFor the content length reason, it stopped, continue?" if is_english( - [ans]) else "······\n由于长度的原因,回答被截断了,要继续吗?" - yield ans - - except Exception as e: - yield ans + "\n**ERROR**: " + str(e) - - yield total_tokens - - -class QWenChat(Base): - def __init__(self, key, model_name=Generation.Models.qwen_turbo, **kwargs): - import dashscope - dashscope.api_key = key - self.model_name = model_name - - def chat(self, system, history, gen_conf): - from http import HTTPStatus - if system: - history.insert(0, {"role": "system", "content": system}) - response = Generation.call( - self.model_name, - messages=history, - result_format='message', - **gen_conf - ) - ans = "" - tk_count = 0 - if response.status_code == HTTPStatus.OK: - ans += response.output.choices[0]['message']['content'] - tk_count += response.usage.total_tokens - if response.output.choices[0].get("finish_reason", "") == "length": - ans += "...\nFor the content length reason, it stopped, continue?" if is_english( - [ans]) else "······\n由于长度的原因,回答被截断了,要继续吗?" - return ans, tk_count - - return "**ERROR**: " + response.message, tk_count - - def chat_streamly(self, system, history, gen_conf): - from http import HTTPStatus - if system: - history.insert(0, {"role": "system", "content": system}) - ans = "" - tk_count = 0 - try: - response = Generation.call( - self.model_name, - messages=history, - result_format='message', - stream=True, - **gen_conf - ) - for resp in response: - if resp.status_code == HTTPStatus.OK: - ans = resp.output.choices[0]['message']['content'] - tk_count = resp.usage.total_tokens - if resp.output.choices[0].get("finish_reason", "") == "length": - ans += "...\nFor the content length reason, it stopped, continue?" if is_english( - [ans]) else "······\n由于长度的原因,回答被截断了,要继续吗?" - yield ans - else: - yield ans + "\n**ERROR**: " + resp.message if str(resp.message).find("Access")<0 else "Out of credit. Please set the API key in **settings > Model providers.**" - except Exception as e: - yield ans + "\n**ERROR**: " + str(e) - - yield tk_count - - -class ZhipuChat(Base): - def __init__(self, key, model_name="glm-3-turbo", **kwargs): - self.client = ZhipuAI(api_key=key) - self.model_name = model_name - - def chat(self, system, history, gen_conf): - if system: - history.insert(0, {"role": "system", "content": system}) - try: - if "presence_penalty" in gen_conf: del gen_conf["presence_penalty"] - if "frequency_penalty" in gen_conf: del gen_conf["frequency_penalty"] - response = self.client.chat.completions.create( - model=self.model_name, - messages=history, - **gen_conf - ) - ans = response.choices[0].message.content.strip() - if response.choices[0].finish_reason == "length": - ans += "...\nFor the content length reason, it stopped, continue?" if is_english( - [ans]) else "······\n由于长度的原因,回答被截断了,要继续吗?" - return ans, response.usage.total_tokens - except Exception as e: - return "**ERROR**: " + str(e), 0 - - def chat_streamly(self, system, history, gen_conf): - if system: - history.insert(0, {"role": "system", "content": system}) - if "presence_penalty" in gen_conf: del gen_conf["presence_penalty"] - if "frequency_penalty" in gen_conf: del gen_conf["frequency_penalty"] - ans = "" - tk_count = 0 - try: - response = self.client.chat.completions.create( - model=self.model_name, - messages=history, - stream=True, - **gen_conf - ) - for resp in response: - if not resp.choices[0].delta.content:continue - delta = resp.choices[0].delta.content - ans += delta - if resp.choices[0].finish_reason == "length": - ans += "...\nFor the content length reason, it stopped, continue?" if is_english( - [ans]) else "······\n由于长度的原因,回答被截断了,要继续吗?" - tk_count = resp.usage.total_tokens - if resp.choices[0].finish_reason == "stop": tk_count = resp.usage.total_tokens - yield ans - except Exception as e: - yield ans + "\n**ERROR**: " + str(e) - - yield tk_count - - -class OllamaChat(Base): - def __init__(self, key, model_name, **kwargs): - self.client = Client(host=kwargs["base_url"]) - self.model_name = model_name - - def chat(self, system, history, gen_conf): - if system: - history.insert(0, {"role": "system", "content": system}) - try: - options = {} - if "temperature" in gen_conf: options["temperature"] = gen_conf["temperature"] - if "max_tokens" in gen_conf: options["num_predict"] = gen_conf["max_tokens"] - if "top_p" in gen_conf: options["top_k"] = gen_conf["top_p"] - if "presence_penalty" in gen_conf: options["presence_penalty"] = gen_conf["presence_penalty"] - if "frequency_penalty" in gen_conf: options["frequency_penalty"] = gen_conf["frequency_penalty"] - response = self.client.chat( - model=self.model_name, - messages=history, - options=options, - keep_alive=-1 - ) - ans = response["message"]["content"].strip() - return ans, response["eval_count"] + response.get("prompt_eval_count", 0) - except Exception as e: - return "**ERROR**: " + str(e), 0 - - def chat_streamly(self, system, history, gen_conf): - if system: - history.insert(0, {"role": "system", "content": system}) - options = {} - if "temperature" in gen_conf: options["temperature"] = gen_conf["temperature"] - if "max_tokens" in gen_conf: options["num_predict"] = gen_conf["max_tokens"] - if "top_p" in gen_conf: options["top_k"] = gen_conf["top_p"] - if "presence_penalty" in gen_conf: options["presence_penalty"] = gen_conf["presence_penalty"] - if "frequency_penalty" in gen_conf: options["frequency_penalty"] = gen_conf["frequency_penalty"] - ans = "" - try: - response = self.client.chat( - model=self.model_name, - messages=history, - stream=True, - options=options, - keep_alive=-1 - ) - for resp in response: - if resp["done"]: - yield resp.get("prompt_eval_count", 0) + resp.get("eval_count", 0) - ans += resp["message"]["content"] - yield ans - except Exception as e: - yield ans + "\n**ERROR**: " + str(e) - yield 0 - - -class LocalLLM(Base): - class RPCProxy: - def __init__(self, host, port): - self.host = host - self.port = int(port) - self.__conn() - - def __conn(self): - from multiprocessing.connection import Client - self._connection = Client( - (self.host, self.port), authkey=b'infiniflow-token4kevinhu') - - def __getattr__(self, name): - import pickle - - def do_rpc(*args, **kwargs): - for _ in range(3): - try: - self._connection.send( - pickle.dumps((name, args, kwargs))) - return pickle.loads(self._connection.recv()) - except Exception as e: - self.__conn() - raise Exception("RPC connection lost!") - - return do_rpc - - def __init__(self, key, model_name="glm-3-turbo"): - self.client = LocalLLM.RPCProxy("127.0.0.1", 7860) - - def chat(self, system, history, gen_conf): - if system: - history.insert(0, {"role": "system", "content": system}) - try: - ans = self.client.chat( - history, - gen_conf - ) - return ans, num_tokens_from_string(ans) - except Exception as e: - return "**ERROR**: " + str(e), 0 - - def chat_streamly(self, system, history, gen_conf): - if system: - history.insert(0, {"role": "system", "content": system}) - token_count = 0 - answer = "" - try: - for ans in self.client.chat_streamly(history, gen_conf): - answer += ans - token_count += 1 - yield answer - except Exception as e: - yield answer + "\n**ERROR**: " + str(e) - - yield token_count - -class VolcEngineChat(Base): - def __init__(self, key, model_name, base_url): - """ - Since do not want to modify the original database fields, and the VolcEngine authentication method is quite special, - Assemble ak, sk, ep_id into api_key, store it as a dictionary type, and parse it for use - model_name is for display only - """ - self.client = MaasService('maas-api.ml-platform-cn-beijing.volces.com', 'cn-beijing') - self.volc_ak = eval(key).get('volc_ak', '') - self.volc_sk = eval(key).get('volc_sk', '') - self.client.set_ak(self.volc_ak) - self.client.set_sk(self.volc_sk) - self.model_name = eval(key).get('ep_id', '') - - def chat(self, system, history, gen_conf): - if system: - history.insert(0, {"role": "system", "content": system}) - try: - req = { - "parameters": { - "min_new_tokens": gen_conf.get("min_new_tokens", 1), - "top_k": gen_conf.get("top_k", 0), - "max_prompt_tokens": gen_conf.get("max_prompt_tokens", 30000), - "temperature": gen_conf.get("temperature", 0.1), - "max_new_tokens": gen_conf.get("max_tokens", 1000), - "top_p": gen_conf.get("top_p", 0.3), - }, - "messages": history - } - response = self.client.chat(self.model_name, req) - ans = response.choices[0].message.content.strip() - if response.choices[0].finish_reason == "length": - ans += "...\nFor the content length reason, it stopped, continue?" if is_english( - [ans]) else "······\n由于长度的原因,回答被截断了,要继续吗?" - return ans, response.usage.total_tokens - except Exception as e: - return "**ERROR**: " + str(e), 0 - - def chat_streamly(self, system, history, gen_conf): - if system: - history.insert(0, {"role": "system", "content": system}) - ans = "" - tk_count = 0 - try: - req = { - "parameters": { - "min_new_tokens": gen_conf.get("min_new_tokens", 1), - "top_k": gen_conf.get("top_k", 0), - "max_prompt_tokens": gen_conf.get("max_prompt_tokens", 30000), - "temperature": gen_conf.get("temperature", 0.1), - "max_new_tokens": gen_conf.get("max_tokens", 1000), - "top_p": gen_conf.get("top_p", 0.3), - }, - "messages": history - } - stream = self.client.stream_chat(self.model_name, req) - for resp in stream: - if not resp.choices[0].message.content: - continue - ans += resp.choices[0].message.content - if resp.choices[0].finish_reason == "stop": - tk_count = resp.usage.total_tokens - yield ans - - except Exception as e: - yield ans + "\n**ERROR**: " + str(e) - yield tk_count -class MiniMaxChat(Base): - def __init__(self, key, model_name="abab6.5s-chat", - base_url="https://api.minimax.chat/v1/text/chatcompletion_v2"): - if not base_url: - base_url="https://api.minimax.chat/v1/text/chatcompletion_v2" - super().__init__(key, model_name, base_url) \ No newline at end of file