You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用llama-index的SimpleDirectoryReader/VectorStoreIndex并行处理文件?

优化PDF读取与Embedding生成的并行处理方案

一、优化PDF文件读取的并行效率

SimpleDirectoryReader 支持通过 num_workers 参数开启多进程并行读取解析文件,直接指定该参数为你的CPU核心数(比如12)即可利用全部核心加速处理:

from llama_index.core import SimpleDirectoryReader

reader = SimpleDirectoryReader(
    input_dir="/home/ovo/code/datasets/ebooks/compsci/",
    num_workers=12  # 设置为CPU核心数,启用多进程并行
)

docs = reader.load_data()
print(f"Loaded {len(docs)} docs")

该参数会让阅读器同时启动多个进程处理不同的PDF文件,充分利用多核CPU资源,大幅提升读取解析速度。

二、优化Embedding生成的并行效率

针对Embedding生成速度慢的问题,可以从以下几点优化:

1. 调整Embedding模型的批量与并行参数

给 HuggingFaceEmbedding 设置更大的 batch_size,同时开启多进程处理的 num_workers,并启用半精度计算减少内存占用、提升速度:

from llama_index.embeddings.huggingface import HuggingFaceEmbedding
from llama_index.core import Settings, VectorStoreIndex

Settings.embed_model = HuggingFaceEmbedding(
    model_name="BAAI/bge-small-en-v1.5",
    batch_size=64,  # 根据内存情况调大,比如32/64/128
    num_workers=8,  # 启用多进程处理Embedding
    model_kwargs={"device": "cuda", "torch_dtype": "float16"}  # 用GPU半精度加速
)

# 生成索引时指定并行处理的worker数
index = VectorStoreIndex.from_documents(docs, num_workers=12)

2. 确保模型正确加载到GPU

如果GPU显存充足,确认模型加载到CUDA设备上(上述代码已设置device="cuda"),避免默认用CPU计算导致速度慢。半精度(float16)能大幅降低显存占用,让GPU同时处理更多数据。

3. 文档分块的并行处理

如果文档分块后数量极大,构建索引时通过 num_workers 参数让分块的Embedding计算并行执行,充分利用多核CPU或GPU的并行能力。

内容的提问来源于stack exchange,提问作者J. Taylor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 17:39:59