【Datawhale AI 夏令营】第四期 基于2B源大模型RAG 的三体问答

【定位】:Datawhale AI 夏令营 第四期 Task3 应用练手demo
【学习手册链接】:https://linklearner.com/activity/14/11/25
【练手材料来源】:《三体》 https://github.com/JessyTsui/awesome_LLM_beginner.git

  • 本文不会按照baseline和代码顺序讲解代码,而是以项目实践顺序来讲解,推荐先阅读学习手册后有各个模块的简易理解,再阅读本篇笔记。(偷一个流程图充下场面。)

在这里插入图片描述

  • 这篇baseline很有特点,没有调用什么langchain框架,文档处理那些步骤几乎都是很原始的。

在这里插入图片描述

1. 数据准备与预处理

当我们顺利跑通baseline之后,由于baseline的测试knowledge仅为一个三行文本。
我们是否可以直接基于baseline的代码应用于其他材料?
碰巧同组队友推荐了上述练手材料,故下载仓库

# 切换到Task3位置,再新建终端
git clone https://github.com/JessyTsui/awesome_LLM_beginner.git

完成后直接修改文档地址:

在这里插入图片描述
我们可以看到此时的文件编码不对,是因为再构建索引的时候是指定utf-8读取的。

解决方案:

  • 方案1:确认源文档的编码方式后,在向量库索引构建时指定对应的编码方式,不过遇到其他的编码方式可能得再次修改代码。
    在这里插入图片描述
  • 方案2:靠代码去读取并且转为utf-8编码。我们新增一个格式转化的代码块进行处理。
import codecs

file_list = ["./awesome_LLM_beginner/resource/三体1疯狂年代.txt",
            "./awesome_LLM_beginner/resource/三体2黑暗森林.txt",
             "./awesome_LLM_beginner/resource/三体3死神永生.txt",
]

def convert_to_utf8(file_list):
    for file_path in file_list:
        try:
            # 尝试以 utf-8 编码读取文件
            with open(file_path, 'r', encoding='utf-8') as file:
                content = file.read()
            # 如果读取成功,则以 utf-8 编码写入同一个文件
            with open(file_path, 'w', encoding='utf-8') as file:
                file.write(content)
            print(f"文件 '{
     
     file_path}' 已经是 UTF-8 编码。")
        
        except UnicodeDecodeError:
            # 如果出现 UnicodeDecodeError,尝试使用其他常见编码读取
            common_encodings = ['gbk', 'iso-8859-1', 'windows-1252']
            for encoding in common_encodings:
                try:
                    with open(file_path, 'r', encoding=encoding) as file:
                        content = file.read()
                    # 如果读取成功,则以 utf-8 编码写入文件
                    with open(file_path, 'w', encoding='utf-8'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

如果皮卡会coding

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值