用途:将一批本地PDF构建为Asta可搜索文档索引,把每个PDF转成Markdown,按约2000字符切块,写入asta-documents YAML索引,从而支持对全文的语义搜索。
安装:需asta CLI 0.16.0,使用uv安装;要求Python 3.11+和uv。命令:PLUGIN_VERSION=0.16.0;若版本不符则 uv tool install --force git+https://github.com/allenai/asta-plugins.git@v$PLUGIN_VERSION。
使用方式:先向用户确认四项信息:PDF目录、Markdown输出目录、集合名、是否包含图片(默认否)。建议将PDF与Markdown作为同级目录置于同一父目录下,索引文件位于该父目录,例如PDF在/data/papers/pdfs,则Markdown建议为/data/papers/markdown,索引为/data/papers/index.yaml;索引存相对路径,便于移植和纳入git。
流程:资产目录含extract-pdfs.sh(经asta pdf-extraction remote把PDF转Markdown)、chunk-and-index.py(切块并写YAML索引)、warm-cache.sh(预热搜索缓存)。步骤:发现PDF并估算规模与耗时;抽取Markdown(可选--images,启用后每个PDF单独子目录);切块建索引(需pyyaml,命令含必填--index-path,可用--chunk-size调整,默认2000字符);预热缓存(必做,参数为含index.yaml的DATASET_ROOT);最后用asta documents列示与展示结果。
搜索:asta documents --root "$DATASET_ROOT" search --summary="查询" --tags="集合名",可加--show-scores,可按--extra过滤来源,或用list列出。
限制:抽取每10页约2-5分钟(远程API,每次50页上限);olmocr更适合超20个PDF,并行约每页10-20秒;切块约1-2秒/PDF;索引约为抽取文本的2-3倍;缓存预热5-30秒。索引为追加式,保留既有文档,需重建时先删除index.yaml。提取与索引可跳过已处理文件,可安全重跑。