RAGFlow嵌入自定义文件解析代码


进入docker容器

docker exec -it ragflow-server /bin/bash

一、写自己的文档解析代码

来到路径

/ragflow/deepdoc/parser/

在该目录下创建自己的文档解析文件,可以参考txt_parser.py

  • 其中fnm是文件名、binary是二进制文件数据
  • 如果你写的文件能通过二进制直接解析,那么return self.parser_txt(txt, chunk_token_num, delimiter)这里就不用动了
  • fnm讲道理应该是文件路径的,因为with open(fnm, "r") as f:,但是我实验时,得到的都是文件名,这个不能作为路径去打开文件

1、def __call__

所以,这部分函数在改动时,能直接走二进制数据流的就是删除else:和后面的代码直到return即可
不能走通的,就使用txt = fnm,在naive.py给到临时文件路径,在def parser_txt解析即可

2、def parser_txt

这里比较简单,自己的解析完成后,将分好的段落放入列表text_list,返回时为

return [[c,""] for c in text_list]

3、__init__.py

仿照其他解析器,导入即可

二、导入到naive.py

1、找到文件

/ragflow/rag/app/naive.py

2、添加代码

from deepdoc.parser import yourParser
import tempfile
# 236行添加新的elif,我这里以vsdx文件为例
    elif re.search(r"\.vsdx$", filename, re.IGNORECASE):
        callback(0.1, "Start to parse.")
        with tempfile.NamedTemporaryFile(suffix='.vsdx', delete=True) as temp_file:
            temp_file.write(binary)
            temp_file.flush()  # 确保数据写入文件
            sections = VsdxParser()(temp_file,binary,
                                parser_config.get("chunk_token_num", 128),
                                parser_config.get("delimiter", "\n!?;。;!?"))
        callback(0.8, "Finish parsing.")

三、file_utils.py

1、找到文件

/ragflow/api/utils/file_utils.py

文档解析在159行添加你的文件格式
音频解析在163行添加你的文件格式
图像解析在166行添加你的文件格式

2、重启容器

结束

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值