多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

RAG-Anything 批量解析如何开启增量扫描,跳过未变更文件只重跑改动文档

RAG-Anything 批量解析如何开启增量扫描,跳过未变更文件只重跑改动文档 RAG-Anything 批量解析如何开启增量扫描跳过未变更文件只重跑改动文档【免费下载链接】RAG-AnythingRAG-Anything: All-in-One RAG Framework项目地址: https://gitcode.com/GitHub_Trending/ra/RAG-Anything如果你的文档目录是持续更新的——比如每天往同一个文件夹里追加、修改几份 PDF 或 Word 文档——那么每次都跑全量批处理会浪费大量时间在没变过的文件上。RAG-Anything 的批处理模块BatchParser提供了一个增量扫描开关开启后它会在输出目录里维护一份清单manifest下次运行时自动跳过与上次成功运行相比没有变化的文件只重新解析有改动的文档。本文的目标是在同一个输入目录和输出目录上连续运行两次批量解析第二次运行能观察到未变更文件被跳过、只有改动文件被重新处理。功能细节以 docs/batch_processing.md 为准实现逻辑可查看 raganything/batch_parser.py。准备条件按 docs/batch_processing.md 的说明安装依赖# Basic installation pip install raganything[all] # Required for batch processing pip install tqdm # Optional for parserpaddleocr pip install raganything[paddleocr]其中tqdm是批处理的必需依赖用于进度条。解析器有三种内置选择mineru默认、docling、paddleocr后两者按需通过--parser参数指定即可。通过命令行开启增量扫描命令行方式是最短主路径。第一次运行做全量解析之后的运行加--incremental参数# 首次全量批处理 python -m raganything.batch_parser examples/sample_docs/ --output ./output --workers 4 # 增量运行跳过自上次成功批量运行以来未变更的文件 python -m raganything.batch_parser examples/sample_docs/ --output ./output --incremental上面命令沿用了文档中的示例路径examples/sample_docs/实际使用时请替换为你自己的文档目录。--output是必填参数且必须每次保持一致增量清单保存在输出目录内换了输出目录等于重新全量解析。指定其他解析器或调整扫描方式时参数可以这样组合# 指定解析器与解析方法 python -m raganything.batch_parser examples/sample_docs/ --parser mineru --method auto python -m raganything.batch_parser examples/sample_docs/ --parser paddleocr --method ocr # 只处理目录第一层文件不递归子目录 python -m raganything.batch_parser examples/sample_docs/ --output ./output --incremental --no-recursive # 帮助 python -m raganything.batch_parser --help验证跳过了哪些文件运行结束后CLI 会打印result.summary()的汇总见 raganything/batch_parser.py 中的BatchProcessingResult.summary其中包含本次跳过数Batch Processing Summary: Total files: N Successful: A Failed: B Skipped: C Success rate: X% Processing time: ... Output directory: ... Dry run: False以上为汇总格式示意具体数值以你本地的目录为准。判断增量是否生效看Skipped一行第二次对同一目录运行且文件未变动时Skipped应等于文件总数Successful应为 0。此外可以检查输出目录下是否生成了增量清单文件.raganything_batch_manifest.json——它的存在说明上次运行以增量方式成功落盘。用 Python API 开启增量扫描如果批处理嵌入你自己的脚本process_batch提供incremental参数文档给出的写法如下同样请将目录替换为自己的路径from raganything.batch_parser import BatchParser batch_parser BatchParser( parser_typemineru, # or docling or paddleocr max_workers4, show_progressTrue, ) result batch_parser.process_batch( file_paths[./documents], output_dir./output, recursiveTrue, incrementalTrue, ) print(fProcessed: {len(result.successful_files)}) print(fSkipped unchanged: {len(result.skipped_files)})返回值BatchProcessingResult中与增量直接相关的字段见 docs/batch_processing.md 的 API Referencesuccessful_files本次实际解析成功的文件skipped_files增量模式下因未变更而被跳过的文件success_rate按(successful skipped) / total计算全部文件被跳过时也是 100%。仓库的测试 tests/testbatch_incremental.py 完整演示了这个行为序列第一次运行处理全部文件且skipped_files为空第二次运行successful_files为空、全部文件进入skipped_files修改其中一个文件后第三次运行只重新处理被改的那个文件。增量判定的依据与边界文档docs/batch_processing.md “Incremental Folder Scans” 一节对跳过逻辑的说明是清单文件为输出目录下的.raganything_batch_manifest.json保存上次成功运行的文件元数据文件的大小和修改时间与清单一致时直接判定未变更并跳过只有两者不同才会重新计算 MD5 并比较内容——所以大文件在未变更时不会每次运行都被重新哈希增量只记录成功解析的文件签名见 raganything/batch_parser.py 中process_batch末尾的清单写入逻辑因此上次失败的文件下次会重新进入解析队列。两个容易踩的边界dry-run 不写清单。--dry-run只是预览会处理哪些文件不运行解析器也不会更新.raganything_batch_manifest.json。可以先用--dry-run --incremental组合预览哪些文件会被重跑、哪些会被跳过再执行正式运行清单损坏时回退为全量。如果清单 JSON 无法解析实现会打一条 warning 并忽略它所有文件重新解析tests/testbatch_incremental.py 中的test_incremental_ignores_corrupt_manifest覆盖了这一行为。此时表现为一次全量运行不需要人工干预。相关示例与限制仓库提供了一个只列文件、不跑解析器的示例脚本 examples/batch_dry_run_example.py适合先确认目录里哪些文件会被扫描到python examples/batch_dry_run_example.py 目录 --parser mineru--output参数在 dry-run 下不会真正使用但 API 要求必须传。增量扫描与递归扫描正交默认递归子目录需要只扫第一层时用--no-recursiveAPI 为recursiveFalse。批量参数worker 数、单文件超时等的调优属于常规批处理配置参见 docs/batch_processing.md 的 Configuration 与 Performance Considerations 小节与增量开关本身无关。【免费下载链接】RAG-AnythingRAG-Anything: All-in-One RAG Framework项目地址: https://gitcode.com/GitHub_Trending/ra/RAG-Anything创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表