IAAR-Shanghai / Meta-Chunking

Meta-Chunking: Learning Efficient Text Segmentation via Logical Perception
Apache License 2.0
84 stars 3 forks source link

如何从本地读入embedding模型实现语义分割 #4

Closed LRW2000 closed 3 weeks ago

LRW2000 commented 4 weeks ago

想使用本地embedding模型实现语义分割,不使用HuggingFaceEmbedding类。请问能给一个参考代码吗? 122

Robot2050 commented 4 weeks ago

您好,非常感谢您对本项目的关注!在这里我们的baseline主要采用的LLama_index中封装好的语义分块接口,其中split_path中存储的是您需要进行分块的系列文档。如果您希望改用其他embedding模型,只需要修改HuggingFaceEmbedding函数中的模型路径即可,这个函数主要用于加载语义分块模型。如果您的模型无法使用HuggingFaceEmbedding函数加载的话,您可以告诉我更多模型信息,我尝试下载到本地测试,看能否为您解答。

LRW2000 commented 4 weeks ago

感谢您的回复。 我在使用Hugingface时经常出错,因为不能连网,所以考虑能不能使用本地的模型—bge-large-zh-v1.5来进行文本分割,不去hugingface上联网下载。

------------------ 原始邮件 ------------------ 发件人: "IAAR-Shanghai/Meta-Chunking" @.>; 发送时间: 2024年11月3日(星期天) 下午4:37 @.>; @.**@.>; 主题: Re: [IAAR-Shanghai/Meta-Chunking] 如何从本地读入embedding模型实现语义分割 (Issue #4)

您好,非常感谢您对本项目的关注!在这里我们的baseline主要采用的LLama_index中封装好的语义分块接口,其中split_path中存储的是您需要进行分块的系列文档。如果您希望改用其他embedding模型,只需要修改HuggingFaceEmbedding函数中的模型路径即可,这个函数主要用于加载语义分块模型。如果您的模型无法使用HuggingFaceEmbedding函数加载的话,您可以告诉我更多模型信息,我尝试下载到本地测试,看能否为您解答。

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you authored the thread.Message ID: @.***>

Robot2050 commented 4 weeks ago

明白您遇到的问题了,您可以不使用Hugingface,而使用如下链接进行模型下载。手动下载或使用git命令下载均可,不过使用git下载时要注意服务器是否安装了 lfs,否则会导致下载不完整而报错。

https://modelscope.cn/models/BAAI/bge-large-zh-v1.5/files 使用git来下载模型: sudo apt-get update sudo apt-get install git-lfs git下载命令

LRW2000 commented 4 weeks ago

明白了,刚刚试了,原来HuggingFaceEmbedding函数能够直接加载本地模型。分割后的都是编码,要转换才能看到原文吗? 微信截图_20241103171039

Robot2050 commented 4 weeks ago

这应该是中文文本导致的文字编码问题,您可以在open函数里面加encoding='utf-8'来控制保存时文字的编码。这种情况对分块是没有影响的,只是在将分块结果保存时编码不同导致的。

LRW2000 commented 4 weeks ago

with open(save_path, 'w', encoding='utf-8') as file:     json.dump(save_list, file)

加了utf-8,生成的json文件还是编码形式,想先简单直观看下分块效果,json文件看不出哪里分块了,您有什么方法吗?

json: ["\u5173\u4e8e\u6253\u9020\u6d88\u8d39\u65b0\u573a\u666f\u57f9\u80b2\u6d88\u8d39\u65b0\u589e\u957f\u70b9\u7684\u63aa\u65bd\r\n\u6d88\u8d39\u65b0\u573a\u666f\u662f\u6d88\u8d39\u65b0\u4e1a。。。。。。。"]

------------------ 原始邮件 ------------------ 发件人: "IAAR-Shanghai/Meta-Chunking" @.>; 发送时间: 2024年11月3日(星期天) 下午5:18 @.>; @.**@.>; 主题: Re: [IAAR-Shanghai/Meta-Chunking] 如何从本地读入embedding模型实现语义分割 (Issue #4)

这应该是中文文本导致的文字编码问题,您可以在open函数里面加encoding='utf-8'来控制保存时文字的编码。

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you authored the thread.Message ID: @.***>

Robot2050 commented 4 weeks ago
with open(save_path, 'w', encoding='utf-8') as file:
    json.dump(save_list, file, ensure_ascii=False, indent=4)

您可以将代码改为如上格式,这样适合查看分块效果。

LRW2000 commented 4 weeks ago

作者您好,方便留下个人邮箱吗,想探讨一下meta-chunking论文中的一些内容。(最近也在研究文本分块)

---原始邮件--- 发件人: "Jihao @.> 发送时间: 2024年11月3日(周日) 下午5:55 收件人: @.>; 抄送: @.**@.>; 主题: Re: [IAAR-Shanghai/Meta-Chunking] 如何从本地读入embedding模型实现语义分割 (Issue #4)

with open(save_path, 'w', encoding='utf-8') as file: json.dump(save_list, file, ensure_ascii=False, indent=4) 您可以将代码改为如上格式,这样适合查看分块效果。

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you authored the thread.Message ID: @.***>

Robot2050 commented 4 weeks ago

您好!非常感谢您对本工作的关注,这是我的个人邮箱:zhaojihao@ruc.edu.cn,欢迎一起探讨!

18410080631 commented 3 weeks ago

您好,为什么我设置了meta_chunking(t,"PPL Chunking","zh",0.7,150) 但是返回的块儿的文本长度还是远大于150啊

Robot2050 commented 3 weeks ago

您好!通过您遇到的问题,我觉得可能您分块的文本ppl值变动幅度不是很大,在这种情况下直接将0.7取值为0试一试。如果取值为0的情况下长度还是比较大的话,说明这些文本对于大模型来说存在较多幻觉的地方,您可以适当增大分块长度。

对于该工作,我们最初的直觉是希望在分块时,尽量保证在模型确定的地方分割,在不确定的地方保持文本完整。这样子对于后续的检索生成是更有利的。所以,事实上困惑度分块就是在利用大模型的幻觉来感知文本的边界(相对大模型的边界),从而使得分块中大模型出现幻觉的地方不分割,避免在大模型检索问答时引入更多的幻觉。

非常感谢您对本工作的关注!