基础 RAG 示例

本章节提供了一个基础的检索增强生成示例。展示了如何从 PDF 文档中提取信息、处理数据、生成向量表示,并将其存储到 Milvus 向量数据库中以便后续检索。

bash scripts/pdf_mineru_to_milvus.sh

示例流程概述

PDF 预处理与统计: 清理无效 PDF 文件并统计文档信息。

PDF 解析: 使用 MinerU 解析 PDF 文件,提取文本和图像数据。

向量化处理: 将解析后的数据转换为向量表示并保存为 PKL 文件。

数据插入 Milvus: 将向量数据导入 Milvus 集合,支持后续检索。

详细步骤

定义共享参数

在脚本 scripts/pdf_mineru_to_milvus.sh 中确定共享参数。

示例命令:

# 需处理的批量 PDF 存放目录
input_path="src/resources/pdf"

# PKL 文件保存路径(支持目录与pkl文件)
pkl_path="src/pkl_files"

# 导入 Milvus 数据库的库名
collection_name="data_search"

# 如果需要测试问答功能,可以设置一个问题
question=""

1. PDF 预处理与统计

运行脚本 get_info_clean_invalid_files.py,清理无效 PDF 文件并统计文档的总页数、大小等信息。

示例命令:

python scripts/pdf_mineru_to_milvus/get_info_clean_invalid_files.py "$input_path"

2. PDF 解析

使用 get_minerU_clean_invalid_files.py 调用 MinerU 解析工具,提取 PDF 中的文本和图像数据。

示例命令:

python scripts/pdf_mineru_to_milvus/get_minerU_clean_invalid_files.py "$input_path"

3. 向量化处理

运行 get_vector_to_pkl.py,将解析后的数据转换为向量表示(支持文本和可选的图像嵌入),存入 PKL 文件中。

示例命令(不包含图像嵌入,使用BGE):

python scripts/pdf_mineru_to_milvus/get_vector_to_pkl.py
    --input_path "$input_path" \
    --output_path "$pkl_path"

示例命令(包含图像嵌入,使用QwenVL):

python scripts/get_vector_to_pkl.py \
    --input_path "$input_path" \
    --output_path "$pkl_path" \
    --image_embedding

4. 数据插入 Milvus

使用 pkl_instert_milvus.py 将向量数据导入 Milvus 集合。

示例命令:

python scripts/pdf_mineru_to_milvus/pkl_instert_milvus.py \
    --collection_name "$collection_name" \
    --pkl_path "$pkl_path" \
    --question "$question" \
    --image_embedding # 此行可选,须与步骤3统一