Paperman619/jesuits-china-letters
0
《耶稣会士中国书简集:中国回忆录》数字人文智能分析平台
AI赋能文献研究 —— 基于大模型 + RAG 的历史文献智能检索与分析系统
项目简介
本平台以《耶稣会士中国书简集:中国回忆录》(上中下卷)为核心文本,通过 AI 智能语义检索与分析,辅助研究人员对 17-18 世纪西方传教士笔下的"中国形象"进行量化统计与质性分析。
核心研究问题:西方传教士构建了怎样的中国形象?又是如何构建的?
功能模块
| 📖 文献浏览 | 书简信件 + 《跨文化形象学》章节双 Tab,支持人工金标准分类 | | 🔍 智能问答 | 分轨 RAG(书简证据 + 周宁理论透镜),多会话管理,点名取文与追问分流 | | 📊 关键词统计 | 书简全文检索(不含理论文献)、频次统计与持久化 | | 🎯 中国形象分析 | 六大维度深度分析 + 建构策略识别 + 综合研究全覆盖流水线 | | 📚 文献管理 | 文献列表、多格式上传(TXT/DOCX/PDF)与可恢复多模态 OCR | | 📝 报告导出 | 导出含双页码出处与证据覆盖核验表格的完整 Word/Markdown 报告 | | 🩺 系统健康与验收 | 系统健康聚合看板、组件诊断、自动化验收套件与运维报告导出 |
技术栈
- Web 框架: Streamlit 1.53+
- 大模型 API: DeepSeek V4 (Flash + Pro) / Qwen 3.7 Plus
- OCR: Qwen VL Max(多模态大模型)
- 向量数据库: ChromaDB
- Embedding: BAAI/bge-large-zh-v1.5(本地运行)
- RAG: 自建混合检索(向量语义 + FTS5 关键词)
- 关系数据库: SQLite + FTS5 全文索引
- 可视化: Plotly
快速开始
1. 环境准备
cd jesuits-china-letters
python -m venv .venv
# Windows:
.\.venv\Scripts\python -m pip install -r requirements.txt
.\.venv\Scripts\python scripts\run_tests.py
# Linux/Mac:
source .venv/bin/activate
python -m pip install -r requirements.txt
python scripts/run_tests.py
运行测试请使用项目虚拟环境入口,脚本会先检查解释器和关键依赖,避免误用 LibreOffice Python:
.\.venv\Scripts\python scripts\run_tests.py2. 配置 API Key
# DeepSeek(必须,批处理 + 问答)
set DEEPSEEK_API_KEY=your_key # Windows CMD
$env:DEEPSEEK_API_KEY="your_key" # PowerShell
export DEEPSEEK_API_KEY=your_key # Linux/Mac
# Qwen 通义千问(可选,OCR + 备选问答)
set DASHSCOPE_API_KEY=your_key也可通过项目根目录 .env 或环境变量配置(不要把密钥写进仓库)。 如需轮换 Hugging Face 凭据或修复 remote,请遵循凭据轮换操作说明。
3. 运行数据处理管线
# 如有扫描版 PDF 需先 OCR(需 DASHSCOPE_API_KEY)
python scripts/00_pdf_to_txt.py
# 依次运行(从项目根目录执行)
python scripts/01_preprocess.py # 文本清洗
python scripts/02_split_letters.py # 书简拆分入库(写入全局 letter_no 1–152)
python scripts/03_batch_analyze.py # AI 批量分析书简(耗时较长)
python scripts/04_build_vectorstore.py # 书简向量化(只删 source_type=primary_source,写入 letter_no)
# 若已有旧版向量库只缺 letter_no metadata,可先做无重嵌入回填
# 有 ChromaDB 依赖时优先走 Chroma collection API;否则回退到本地 SQLite
python scripts/05_backfill_vector_letter_no.py
# 理论文献《跨文化形象学》(可选,与书简分轨)
python scripts/01_preprocess.py --corpus reference
python scripts/02b_split_chapters.py # 章节切分;若用边界 JSON 须 confirmed: true
python scripts/03b_analyze_chapters.py
python scripts/04b_embed_chapters.py # 只重建 source_type=reference,不删书简/上传4. 启动应用
streamlit run app/Home.py浏览器自动打开 http://localhost:8501(Docker / Hugging Face Spaces 为 7860)。
智能问答可写「上卷16、书简16、第16封」点名取文;追问默认锁定上一轮书简。勾选「书简 / 形象学 / 我的文献」才会检索对应轨。侧栏「深度思考」默认关闭(显式关掉模型思考模式)。
项目结构
jesuits-china-letters/
├── config.py # 全局配置(API Key、模型、路径等)
├── requirements.txt
├── .gitignore
├── data/
│ ├── raw/ # PDF 原始文件 + OCR 输出的 TXT
│ ├── processed/ # 清洗后文本(管线自动生成)
│ └── supplementary/ # 用户上传的补充文献
├── database/
│ └── letters.db # SQLite 数据库(管线自动生成)
├── vectorstore/
│ └── chroma_db/ # ChromaDB 向量库(管线自动生成)
├── scripts/
│ ├── 00_pdf_to_txt.py # PDF OCR
│ ├── 01_preprocess.py # 文本清洗(可 --corpus reference)
│ ├── 02_split_letters.py # 书简拆分
│ ├── 02b_split_chapters.py # 理论章节切分
│ ├── 03_batch_analyze.py # 书简批量 AI 分析
│ ├── 03b_analyze_chapters.py # 理论章节分析
│ ├── 04_build_vectorstore.py # 书简向量化(保留理论/上传)
│ ├── 04b_embed_chapters.py # 理论向量化(保留书简/上传)
│ ├── 05_backfill_vector_letter_no.py # 为旧向量库补齐书简号 metadata
│ ├── run_acceptance.py # 离线与真实模型自动化验收套件
│ ├── run_tests.py # 带环境诊断与验收联动的 unittest 入口
│ └── utils.py # 共用工具函数
└── app/
├── Home.py # 主页仪表盘
├── pages/
│ ├── 1_📖_文献浏览.py # 书简 + 理论章节 + 人工分类
│ ├── 2_📊_关键词检索.py # 仅书简全文检索与统计
│ ├── 3_🔍_智能问答.py # 分轨 RAG 问答(点名/追问/上传)
│ ├── 4_🎯_中国形象分析.py # 中国形象专题分析与综合研究
│ ├── 5_📚_文献管理.py # 文献列表与用户上传
│ ├── 6_📝_报告导出.py # 报告导出(含双页码与覆盖表)
│ └── 7_🩺_系统健康与验收.py # 系统健康监控与验收报告导出
└── components/
├── db_manager.py # 数据库操作
├── health_service.py # 系统健康聚合监控服务
├── llm_client.py # 大模型 API 封装(思考模式显式开关)
├── llm_orchestrator.py # 统一模型编排与重试/引用校验
├── rag_engine.py # retrieve_for_question 统一检索
├── letter_refs.py # 书简号解析
└── prompts.py # 提示词模板数据库表结构
注意事项与运维指引
- 全局书简身份:书简使用全局 1–152 连续编号;学术引用契约规范格式为:
书简{n} · 卷次 · 篇名 · 印刷页码 (PDF第n页),严禁将「引文 N」或「卡片 N」作为书简身份。 - 持久化运行目录:系统运行时所有可变数据均集中管理于
APP_DATA_ROOT,支持容器或 Space 重启后无损恢复。 - 运维与验收手册:
- 部署与环境配置:`docs/operations/deployment-runbook.md`
- 数据库备份恢复:`docs/operations/backup-restore-runbook.md`
- 大模型故障排查:`docs/operations/model-troubleshooting.md`
- 师生验收清单与记录:`docs/acceptance/法语学院验收清单.md` 与 `docs/acceptance/验收结果记录.md`
- 批量分析(步骤3)和 OCR(步骤0)支持断点续传;Embedding 模型(约 1.3GB)首次使用会自动下载。
- 网页上传限制为 50MB;PDF/DOCX 会先做轻量格式校验,扫描版由系统检测后支持可恢复多模态 OCR。
- 运行完整离线验收:
python scripts/run_acceptance.py --offline;全量单元测试联动:python scripts/run_tests.py --skip-env-check --acceptance。
