RAG的数据清洗和拆分

在大模型实际落地的时候,存在一些问题,主要集中在以下方面:

  • 缺少垂直领域知识:虽然大模型压缩了大量的人类知识,但在垂直场景上明显存在短板,需要专业化的服务去解决特定问题。

  • 存在幻觉、应用有一定门槛:在大模型使用上有一些幻觉、合规问题,没有办法很好地落地,配套工作不足,缺乏现成的方案来管理非结构化文本、进行测试、运营和管理等。

  • 存在重复建设:各业务孤立摸索,资产无法沉淀,存在低水平重复建设,对公司来说ROI低,不够高效。

站在应用的角度,需要一种能够有效解决大模型在垂直领域知识短板、降低应用门槛、提高效率并发挥规模优势的技术方案。

在经过一段时间对RAG整个流程的了解和优化,感受到数据的清洗和拆分对于知识库的检索有很重要的影响,这个环节对于一个完善的rag来说是至关重要的

一、数据的提取 

对于上传的一些文件来说也是各式各样的,有PDF,WORD,EXCEL,TXT等等 甚至还有图片

首先要做的第一步就是把文本提取出来

由于pdf的解析效果比较好,所以在这我将全部文件转换成pdf再用pymupdf进行解析获取内容 

安装pymupdf库!这个库主要是干文本提取用!

pip install --upgrade pymupdf

 

安装pandas库!用它生成CSV表格信息!

pip install --upgrade pandas
def extract_text_and_tables(pdf_path):    """    从PDF文件中提取文本和表格。

    :param pdf_path: PDF文件的路径。    :return: 提取的文本字符串和表格列表。    """    text = ""    tables = []

    with fitz.open(pdf_path) as doc:        for page in doc:            text += page.get_text()

    with pdfplumber.open(pdf_path) as doc:        for page in doc.pages:            for table in page.extract_tables():                tables.append(table)

然后处理路径中的所有PDF文档,如果找不到文档的话,返回找不到!

def process_pdf_folder(folder_path):    """    处理给定文件夹中的所有PDF文件,提取文本和表格。

    :param folder_path: 包含PDF文件的文件夹的路径。    """    if not os.path.exists(folder_path):        print(f"未找到文件夹: {folder_path}")        return

 

对于一些图片可以采用ocr的方式进行提取 

import numpy as np  # 导入numpy库

# 初始化OCR模型,可以指定使用不同的模型,例如:chineseocr_mobile_v2.0,或者使用默认的
ocr = PaddleOCR(use_angle_cls=True, lang='ch')  # lang参数指定识别语言,'ch'代表中英文

# 读取图片
img_path = '测试.jpg'
img = Image.open(img_path).convert('RGB')

# 将PIL图像转换为numpy数组
img = np.array(img)
# 进行OCR识别
result = ocr.ocr(img, cls=True)

# 打印识别结果
for line in result[0]:
    print(line[1])

二、数据清洗

与任何数据科学管道一样,数据的质量严重影响RAG管道的结果。在继续执行以下任何步骤之前,请确保您的数据符合以下标准:

1)数据干净:可以应用一些自然语言处理中常用的基本数据清理技术,例如确保所有特殊字符都正确编码;

2)数据准确:确保信息一致且事实准确,以避免信息冲突误导LLM

一方面我们可以把pdf的像页眉页脚等进行删除 还有一些像电子邮件URL等都可以删除

另一方面可以交给大模型进行数据的清洗和拆解,保证语义的完整性

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值