Skip to content

ao-wei/PolicyRAG

Repository files navigation

Policy RAG v1

一个面向“政策/制度类文档”的 RAG 单体仓库(monorepo),包含共享包、离线入库、在线检索/对话 API 与前端界面。

项目特点

  • Milvus 2.4+ 作为向量库,collection 默认 policy_chunks
  • 向量检索:BAAI/bge-m3(1024 维,L2 normalize,Milvus metric=IP)
  • 稀疏检索:Milvus Sparse + BM25(若不可用自动降级 dense-only)
  • 融合:BM25 + Dense 各自 TopK,应用侧做 RRF(k=60)
  • 重排:BAAI/bge-reranker-v2-m3
  • LLM:Qwen API(DashScope OpenAI compatible),SSE 流式输出
  • PDF 解析:unstructured partition_pdf(strategy="hi_res", infer_table_structure=True)
  • 表格 OCR:Pix2Text 输出 table_md,整表=1 chunk
  • 公式 OCR:pix2tex(LaTeX-OCR,保守触发)
  • 双文本版本
    • Milvus content = retrieval_text(检索用)
    • Milvus metadata.llm_text = 可读原文(Markdown 表格 + LaTeX)
  • 引用定位:固定格式 p{page} ¶{para_id},标题不占号
  • 文档标识doc_id = PDF 二进制 SHA1 前10位

目录结构

  • src/policy_rag_shared/ 共享包(配置、常量、schema、工具)
  • src/ingest_worker/ 离线解析/切分/OCR/向量入库
  • src/rag_api/ 在线检索与对话 API(FastAPI)
  • web/vite-app/ 前端(Vite + React,Chat + Debug)
  • docker/milvus/ Milvus 运行配置

运行效果

运行效果图

快速开始

1) 创建环境

conda create -n policy-rag python=3.11 -y
conda activate policy-rag
pip install -e .

2) 系统依赖(PDF/OCR)

macOS:

brew install poppler tesseract

Linux: 使用包管理器安装 poppler-utilstesseract-ocr

3) 配置环境变量

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

  • MILVUS_URI / MILVUS_COLLECTION
  • DASHSCOPE_API_KEY / QWEN_BASE_URL / QWEN_MODEL
  • EMBED_MODEL / RERANK_MODEL
  • TOP_K / RETRIEVE_K / RRF_K
  • CHUNK_*API_PORTCORS_ORIGINS

4) 启动 Milvus

docker compose -f docker/milvus/docker-compose.yml up -d

5) 入库 PDF

ingest-worker ingest --input ./data/pdfs --rebuild

6) 启动 API

uvicorn rag_api.app:app --reload --port 8000

7) 启动前端

cd web/vite-app
npm i
npm run dev

主要模块说明

  • Ingest Worker
    • PDF 解析 → 分段/合并 → OCR → 生成 chunk → 向量化 → Milvus 入库
  • RAG API
    • /search 返回检索结果与候选列表
    • /chat SSE 流式输出(含检索引用)
  • Web UI
    • Chat:对话 + 证据栏
    • Debug:查看候选分数与内容

注意事项

  • --rebuild 会重建 collection(v1 策略为全量重建)。
  • 模型加载采用懒加载,避免 import 时重操作。
  • OCR 与模型推理耗时较高,首次运行可能较慢。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published