Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CRAG 铁路标准 RAG API

简介

本项目实现了论文中的 Corrective RAG(CRAG)流程:

  1. 先检索;2) 用交叉编码器评估检索质量;3) 根据阈值选择 correct / ambiguous / incorrect
  2. 对不确定或错误情况进行知识精炼(sentence-level filtering),必要时走 Web 搜索。

后端使用 FastAPI + LangChain,支持 MinerU 解析 PDF 并按标题层级切分。

目录结构

  • app/ API 服务与 CRAG 流程
  • app/ingest/ MinerU 调用与解析
  • app/rag/ 检索、评估、修正、提示词
  • data/raw/ 放置原始 PDF
  • data/parsed/ MinerU 输出
  • data/index/ Chroma 向量索引
  • data/samples/ 示例标准元数据与问题
  • scripts/ 小工具脚本

依赖安装(uv + Python 3.13)

uv python install 3.13
uv venv -p 3.13
uv sync

配置(Qwen + Google Search)

复制 .env.example.env,并填写:

  • QWEN_API_KEYQWEN_MODEL(例如 qwen-turbo
  • GOOGLE_API_KEYGOOGLE_CSE_ID(Google Custom Search)
  • USE_WEB_SEARCH=true(需要时开启)

MinerU(PDF 解析与标题切分)

先安装 MinerU:

uv pip install mineru

解析示例:

set MINERU_MODEL_SOURCE=modelscope
uv run mineru -p data\raw\your.pdf -o data\parsed

系统读取 content_list.json,使用 text_level + 编号标题(1/1.1/1.1.1)进行分层切分。

入库

uv run python scripts\ingest_docs.py --run-mineru-first true

只使用示例元数据:

uv run python scripts\ingest_docs.py --run-mineru-first false --include-samples true

启动 API

uv run uvicorn app.main:app --reload

接口

  • POST /ingest 触发入库
  • POST /chat 进行问答
  • GET /health 健康检查

示例问题

data/samples/questions.json

重新抓取样例元数据

uv run python scripts\download_hbba_metadata.py --keyword TB --max-pages 2

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages