综合介绍
FastAPI DocGPT 是一个基于 FastAPI 的文档问答系统,允许用户上传 PDF 文件并基于文档内容进行问答。该系统使用 OpenAI 的嵌入技术将文档内容嵌入到向量数据库 Qdrant 中,从而实现智能问答功能。用户可以通过 API 接口上传文档并提出问题,系统将返回基于文档内容的智能回答。
功能列表
- PDF 上传:用户可以上传 PDF 文件,系统会处理并存储到向量数据库中。
- 问答系统:用户可以基于上传的 PDF 内容提出问题,系统会返回智能回答。
- API 文档:通过 Swagger 提供自动生成的 API 文档,方便开发者使用。
- 跨域资源共享:支持 CORS,允许来自不同域的前端请求。
使用帮助
安装与设置
- 克隆仓库
git clone https://github.com/shaheryaryousaf/fastapi-docgpt cd fastapi-docgpt
- 设置虚拟环境
python3 -m venv venv source venv/bin/activate # Windows: venv\Scripts\activate
- 安装依赖
pip install -r requirements.txt
- 配置环境变量 在项目根目录创建
.env
文件,并添加 OpenAI 和 Qdrant 的 API 密钥:OPENAI_API_KEY=your-openai-api-key QDRANT_URL=your-qdrant-url QDRANT_API_KEY=your-qdrant-api-key
使用指南
- 启动 FastAPI 应用
uvicorn app:app --reload
这将启动 FastAPI 应用,并在
http://127.0.0.1:8000
提供服务。 - 上传 PDF 文件 通过
/upload-pdf/
端点上传 PDF 文件:curl -X POST "http://127.0.0.1:8000/upload-pdf/" -F "file=@yourfile.pdf"
系统会处理 PDF 文件并将其内容嵌入到向量数据库中。
- 提出问题 通过
/ask-question/
端点提出问题:curl -X POST "http://127.0.0.1:8000/ask-question/" -H "Content-Type: application/json" -d '{"question": "你的问题"}'
系统会基于文档内容返回智能回答。
项目结构
app.py
:主 FastAPI 应用文件,包含 PDF 上传和问答系统的 API 端点。utils.py
:包含处理 PDF 文件、发送嵌入到向量数据库以及从嵌入中检索答案的实用函数。.env
文件:管理 OpenAI 和 Qdrant 的 API 密钥。
依赖库
- FastAPI:用于构建 Web API。
- Qdrant Client:用于存储和检索文档嵌入。
- LangChain:用于处理 PDF 和嵌入。
- OpenAI:用于生成嵌入和 AI 模型响应。
- PyPDFLoader:用于从 PDF 文件中提取文本。
- CORS Middleware:处理跨域资源共享(CORS),允许来自不同域的前端请求。
- dotenv:管理环境变量(如 API 密钥)。