文档解析与清洗->双路召回(BM25 + Milvus Hybrid)->重排(BGE-M3 Reranker,支持微调)-> 回答生成(Qwen3-8B,支持 LoRA 微调)->离线评估(nDCG@k + RAGAS)
Python
0
1 commits
updated Feb 24, 2026
本项目是一个中文汽车手册问答系统,包含完整链路:
.
├── src/
│ ├── parser/ # PDF 解析、切分、入 Mongo
│ ├── retriever/ # BM25 / Milvus 检索
│ ├── reranker/ # BGE-M3 重排
│ ├── client/ # Mongo/Milvus/LLM 客户端
│ ├── gen_qa/ # QA 对生成与扩写
│ └── config/settings.py # 全局配置(pydantic-settings)
├── data/
│ ├── processed_docs/ # raw/clean/split 文档缓存
│ ├── saved_index/ # bm25 与 milvus_lite 本地索引
│ ├── qa_pairs/ # QA、检索上下文、response 数据
│ ├── rerank_data/ # reranker 训练数据
│ ├── summary_data/ # SFT 训练/测试数据
│ └── rerank_eval/ # reranker 对比评测数据
├── RAG-Retrieval/ # reranker 训练框架
├── LlamaFactory/ # chat model 微调与推理
├── build_index.py # 建库建索引入口
├── generate_sft_data.py # 训练数据转换
├── eval_reranker_ndcg.py # reranker nDCG 评估
├── final_score_runner.py # RAGAS 评估执行
└── run_ragas_split.sh # RAGAS 批量运行脚本
推荐 Python 3.10 ~ 3.12。
uv sync
启动语义切分服务:
python src/server/semantic_chunk.py
.env 配置项目已统一通过 src/config/settings.py 读取 .env,不需要各处手工 load_dotenv()。
最小示例(按需填写):
GEMINI_API_KEY=
GEMINI_API_KEY2=
GEMINI_API_KEY3=
GEMINI_BASE_URL=
GEMINI_MODEL_NAME=gemini-3-flash-preview
MONGO_HOST=localhost
MONGO_PORT=27017
MONGO_DB_NAME=mydatabase
MONGO_COLLECTION_NAME=manual_text
MONGO_USERNAME=
MONGO_PASSWORD=
MONGO_AUTH_SOURCE=admin
SEMANTIC_CHUNK_URL=http://127.0.0.1:6000/v1/semantic_chunks
LOCAL_QWEN_BASE_URL=http://localhost:8000/v1
如果仓库中的 data/ 已有构建结果,可直接做推理/评估。
python build_index.py
python infer.py
说明:本项目部分脚本是“分阶段一次性脚本”,有注释块,需要按阶段启用。推荐顺序:
python src/gen_qa/run.py
python scripts/filter.py
cd scripts
python add_response.py
cd ..
python generate_sft_data.py
主要产物:
data/rerank_data/train.jsondata/rerank_data/dev.jsondata/rerank_data/test.jsondata/summary_data/train.jsondata/summary_data/test.jsonRAG-Retrieval/rag_retrieval/train/reranker/config/training_bert.yaml请先确认以下路径与机器一致:
model_name_or_pathtrain_datasetval_datasetoutput_dircd RAG-Retrieval/rag_retrieval/train/reranker
accelerate launch --config_file ../../../config/xlmroberta_default_config.yaml train_reranker.py --config config/training_bert.yaml
tensorboard --logdir RAG-Retrieval/rag_retrieval/train/reranker/output
LlamaFactory/data/summary_train.jsonLlamaFactory/data/dataset_info.json 中 faq_summarycd LlamaFactory
llamafactory-cli train examples/train_lora/qwen3_lora_sft.yaml
cd LlamaFactory
bash vllm_serve.sh
predict.py 依赖根目录 src 包,建议:
cd LlamaFactory
PYTHONPATH=.. python predict.py
python scripts/generate_reranked_docs.py
python eval_reranker_ndcg.py
bash run_ragas_split.sh serial all 1
或单项运行:
python final_score_runner.py --dataset before --metric precision --api-key-index 1
python final_score_runner.py --dataset before --metric recall --api-key-index 1
python final_score_runner.py --dataset after --metric precision --api-key-index 1
python final_score_runner.py --dataset after --metric recall --api-key-index 1
MilvusException: unsupported rank typemilvus-lite 与某些 ranker 参数组合不兼容。优先使用 RRFRanker 并确认 pymilvus 与 milvus-lite 版本匹配。too_many_pings / GOAWAY(grpc)MilvusConfig 已配置)。milvus_lite 文件锁冲突data/saved_index/milvus.db 在多进程并发写时会锁冲突。output_dir,避免覆盖历史结果。PROJECT_REVIEW_MINDMAP.md项目总结.md文档解析与清洗->双路召回(BM25 + Milvus Hybrid)->重排(BGE-M3 Reranker,支持微调)-> 回答生成(Qwen3-8B,支持 LoRA 微调)->离线评估(nDCG@k + RAGAS)
Python
0
1 commits
updated Feb 24, 2026
本项目是一个中文汽车手册问答系统,包含完整链路:
.
├── src/
│ ├── parser/ # PDF 解析、切分、入 Mongo
│ ├── retriever/ # BM25 / Milvus 检索
│ ├── reranker/ # BGE-M3 重排
│ ├── client/ # Mongo/Milvus/LLM 客户端
│ ├── gen_qa/ # QA 对生成与扩写
│ └── config/settings.py # 全局配置(pydantic-settings)
├── data/
│ ├── processed_docs/ # raw/clean/split 文档缓存
│ ├── saved_index/ # bm25 与 milvus_lite 本地索引
│ ├── qa_pairs/ # QA、检索上下文、response 数据
│ ├── rerank_data/ # reranker 训练数据
│ ├── summary_data/ # SFT 训练/测试数据
│ └── rerank_eval/ # reranker 对比评测数据
├── RAG-Retrieval/ # reranker 训练框架
├── LlamaFactory/ # chat model 微调与推理
├── build_index.py # 建库建索引入口
├── generate_sft_data.py # 训练数据转换
├── eval_reranker_ndcg.py # reranker nDCG 评估
├── final_score_runner.py # RAGAS 评估执行
└── run_ragas_split.sh # RAGAS 批量运行脚本
推荐 Python 3.10 ~ 3.12。
uv sync
启动语义切分服务:
python src/server/semantic_chunk.py
.env 配置项目已统一通过 src/config/settings.py 读取 .env,不需要各处手工 load_dotenv()。
最小示例(按需填写):
GEMINI_API_KEY=
GEMINI_API_KEY2=
GEMINI_API_KEY3=
GEMINI_BASE_URL=
GEMINI_MODEL_NAME=gemini-3-flash-preview
MONGO_HOST=localhost
MONGO_PORT=27017
MONGO_DB_NAME=mydatabase
MONGO_COLLECTION_NAME=manual_text
MONGO_USERNAME=
MONGO_PASSWORD=
MONGO_AUTH_SOURCE=admin
SEMANTIC_CHUNK_URL=http://127.0.0.1:6000/v1/semantic_chunks
LOCAL_QWEN_BASE_URL=http://localhost:8000/v1
如果仓库中的 data/ 已有构建结果,可直接做推理/评估。
python build_index.py
python infer.py
说明:本项目部分脚本是“分阶段一次性脚本”,有注释块,需要按阶段启用。推荐顺序:
python src/gen_qa/run.py
python scripts/filter.py
cd scripts
python add_response.py
cd ..
python generate_sft_data.py
主要产物:
data/rerank_data/train.jsondata/rerank_data/dev.jsondata/rerank_data/test.jsondata/summary_data/train.jsondata/summary_data/test.jsonRAG-Retrieval/rag_retrieval/train/reranker/config/training_bert.yaml请先确认以下路径与机器一致:
model_name_or_pathtrain_datasetval_datasetoutput_dircd RAG-Retrieval/rag_retrieval/train/reranker
accelerate launch --config_file ../../../config/xlmroberta_default_config.yaml train_reranker.py --config config/training_bert.yaml
tensorboard --logdir RAG-Retrieval/rag_retrieval/train/reranker/output
LlamaFactory/data/summary_train.jsonLlamaFactory/data/dataset_info.json 中 faq_summarycd LlamaFactory
llamafactory-cli train examples/train_lora/qwen3_lora_sft.yaml
cd LlamaFactory
bash vllm_serve.sh
predict.py 依赖根目录 src 包,建议:
cd LlamaFactory
PYTHONPATH=.. python predict.py
python scripts/generate_reranked_docs.py
python eval_reranker_ndcg.py
bash run_ragas_split.sh serial all 1
或单项运行:
python final_score_runner.py --dataset before --metric precision --api-key-index 1
python final_score_runner.py --dataset before --metric recall --api-key-index 1
python final_score_runner.py --dataset after --metric precision --api-key-index 1
python final_score_runner.py --dataset after --metric recall --api-key-index 1
MilvusException: unsupported rank typemilvus-lite 与某些 ranker 参数组合不兼容。优先使用 RRFRanker 并确认 pymilvus 与 milvus-lite 版本匹配。too_many_pings / GOAWAY(grpc)MilvusConfig 已配置)。milvus_lite 文件锁冲突data/saved_index/milvus.db 在多进程并发写时会锁冲突。output_dir,避免覆盖历史结果。PROJECT_REVIEW_MINDMAP.md项目总结.md