一个基于 Vue 3 + FastAPI + PageIndex 的文档问答项目。
现在这套代码只保留一条主线:
- 前端上传文档
- 后端用
PageIndex为文档建树 - 基于树结构和命中页内容做 reasoning-based RAG 搜索
- 支持上传
PDF、Markdown - 支持列出和删除已索引文档
- 支持选择一个或多个文档做检索
- 回答时返回命中的章节和页码/行号来源
CodeIndex/
├─ .vendor/PageIndex/ # 本地 PageIndex vendor
├─ backend/
│ ├─ routes/
│ ├─ schemas/
│ ├─ services/
│ ├─ main.py
│ └─ requirements.txt
├─ frontend/
│ ├─ src/
│ │ ├─ api/
│ │ ├─ App.vue
│ │ ├─ main.js
│ │ └─ styles.css
│ ├─ index.html
│ └─ package.json
└─ environment.yml
conda env create -f environment.yml
conda activate code_rag_env需要准备一个可用的 LLM API Key,二选一即可:
$env:OPENAI_API_KEY="your_key"或者:
$env:DASHSCOPE_API_KEY="your_key"如果你走 DashScope OpenAI 兼容接口,也可以按需覆盖:
$env:DASHSCOPE_BASE_URL="https://dashscope.aliyuncs.com/compatible-mode/v1"uvicorn backend.main:app --host 127.0.0.1 --port 8000 --reload可访问:
http://127.0.0.1:8000/http://127.0.0.1:8000/healthhttp://127.0.0.1:8000/docs
cd frontend
npm install
npm run dev默认地址:
http://127.0.0.1:5173
前端已在 frontend/vite.config.js 中把 /api 代理到本地 8000 端口。
GET /api/documentsPOST /api/documents/uploadDELETE /api/documents/{document_id}POST /api/search
- 上传后的原始文件和 PageIndex 工作区会保存到
.codeindex/ - 当前实现优先支持
PDF和结构化较好的Markdown - 旧的仓库问答脚本和脚手架演示文件已经移除,不再保留两套实现