🌟 项目亮点
🎯 解决核心痛点
- 告别翻文档找答案的痛苦 – 一问一答,秒速获取精准信息
 - 支持多种文档格式 – PDF、图片、Office文档、文本,想上传什么传什么
 - 智能理解图片内容 – 连图片中的文字信息都能提取和问答
 
🏆 技术架构优势
- FastAPI + LangChain – 现代化后端架构,性能卓越
 - Pinecone向量数据库 – 毫秒级检索,准确度惊人
 - OpenAI GPT模型 – 基于最新AI技术,回答专业可靠
 - 双前端设计 – 既有简洁的Python界面,也有炫酷的企业级HTML5界面
 
🎨 用户体验突出
- Bento Grid设计语言 – 参考阿里巴巴官网,现代简约
 - 拖拽上传文件 – 就像把文件丢到桌子上一样自然
 - 实时状态反馈 – 系统状态一目了然,处理进度实时显示
 - 响应式设计 – 手机、平板、电脑都能完美使用
 
🚀 快速开始
🔧 环境准备
- 克隆项目
 
git clone <repository-url>
cd rag_system_fastapi
- 创建虚拟环境
 
python -m venv venv
source venv/bin/activate  # Mac/Linux
# 或者 Windows 用户使用:
# venv\Scripts\activate
- 安装依赖
 
pip install -r requirements.txt
- 配置API密钥
 
# 复制环境变量模板
cp .env.example .env
# 编辑 .env 文件,填入你的API密钥:
# OPENAI_API_KEY=your-openai-api-key
# PINECONE_API_KEY=your-pinecone-api-key
# UNSTRUCTURED_API_KEY=your-unstructured-api-key  # 可选,用于Office文档
🎬 启动系统
方式一:标准启动
# 启动后端API服务
bash run.sh
# 新开一个终端,启动前端
bash start_frontend.sh
方式二:企业级前端
# 启动后端API服务
bash run.sh
# 新开一个终端,启动企业级HTML5前端
bash start_premium_frontend.sh
🌐 访问地址
- 🎨 企业级前端: http://localhost:8080 (推荐)
 - 🔧 开发者前端: http://localhost:8505
 - 📚 API文档: http://localhost:8000/docs
 - 🔗 后端API: http://localhost:8000
 
💡 功能特色
📚 智能文档处理
| 文档类型 | 支持格式 | 最大大小 | 处理方式 | 
|---|---|---|---|
| PDF文档 | .pdf | 
15MB | 直接文本提取 | 
| 图片文件 | .jpg .png .webp .gif .bmp | 
5MB | AI视觉识别 | 
| Office文档 | .doc .docx .xls .xlsx .ppt .pptx | 
10MB | 专业解析器 | 
| 纯文本 | .txt | 
2MB | 直接处理 | 
🧠 核心工作流程
graph TD
    A[📁 上传文档] --> B[🔍 智能解析]
    B --> C[✂️ 智能分块]
    C --> D[🧮 向量化]
    D --> E[💾 存储到Pinecone]
    
    F[❓ 用户提问] --> G[🔍 向量检索]
    G --> H[📋 找到相关文档]
    H --> I[🤖 AI生成回答]
    I --> J[✅ 返回答案 + 来源]
🎨 双前端体验
🏢 企业级前端 (HTML5)
- ✨ 现代化界面 – Bento Grid布局,阿里巴巴配色
 - 🎭 流畅动画 – 仿苹果官网动效,丝滑体验
 - 📊 数据可视化 – Chart.js图表,数据一目了然
 - 📱 响应式设计 – 完美适配各种设备
 - 🎯 专业图标 – Font Awesome图标库
 
🔧 开发者前端 (Streamlit)
- 🚀 快速原型 – 适合开发调试
 - 📈 数据分析 – Plotly图表支持
 - 🌙 深色模式 – 保护开发者眼睛
 - ⚡ 实时更新 – 代码改动立即生效
 
📖 使用指南
🎯 基本使用
- 
📤 上传文档
- 点击上传区域或拖拽文件
 - 支持批量上传
 - 自动识别文件类型
 
 - 
💬 开始问答
- 在聊天框输入问题
 - AI会基于上传的文档回答
 - 每个回答都会显示信息来源
 
 - 
📊 查看统计
- 实时查看文档数量
 - 向量存储状态
 - 系统运行状态
 
 
🔥 高级功能
📋 快速问题模板
- "这份文档的主要内容是什么?"
 - "请总结关键要点"
 - "有哪些重要的数据或结论?"
 
🎛️ 系统管理
- 文档管理 – 查看、删除已上传文档
 - 状态监控 – 实时查看系统健康状态
 - 数据统计 – 文档类型分布,使用趋势分析
 
🛠️ API 接口文档
📤 文档管理接口
POST /api/documents/upload
Content-Type: multipart/form-data
上传文档文件
GET /api/documents
获取文档列表
DELETE /api/documents/{doc_id}
删除指定文档
GET /api/documents/stats
获取文档统计信息
💬 问答接口
POST /api/qa/ask
Content-Type: application/x-www-form-urlencoded
question=你的问题内容
📋 完整API文档
启动服务后访问:
- Swagger UI: http://localhost:8000/docs
 - ReDoc: http://localhost:8000/redoc
 
📁 项目结构
rag_system_fastapi/
├── 📁 app/                          # 后端应用
│   ├── 📄 main.py                   # FastAPI应用入口
│   ├── 📁 routers/                  # API路由
│   │   ├── 📄 documents.py          # 文档处理接口
│   │   └── 📄 qa.py                 # 问答接口
│   ├── 📁 services/                 # 业务逻辑
│   │   ├── 📄 document_processor.py # 文档处理服务
│   │   └── 📄 qa_service.py         # 问答服务
│   └── 📁 utils/                    # 工具类
│       └── 📄 config.py             # 配置管理
├── 📄 frontend_pro.py               # Streamlit前端
├── 📄 frontend_premium.html         # 企业级HTML5前端
├── 📄 requirements.txt              # Python依赖
├── 📄 .env.example                  # 环境变量模板
├── 🚀 run.sh                        # 后端启动脚本
├── 🚀 start_frontend.sh             # Streamlit前端启动脚本
└── 🚀 start_premium_frontend.sh     # 企业级前端启动脚本
🛠️ 技术栈
🔧 后端技术
- FastAPI – 高性能异步API框架
 - LangChain – 大语言模型应用开发框架
 - Pinecone – 向量数据库
 - OpenAI API – GPT模型和Embeddings
 - Unstructured – 文档解析工具
 
🎨 前端技术
- Streamlit – 快速数据应用开发
 - HTML5 + TailwindCSS – 现代化Web界面
 - Chart.js – 数据可视化
 - Font Awesome – 专业图标库
 - Plotly – 交互式图表
 
🎯 适用场景
🏢 企业应用
- 📚 企业知识库 – 员工手册、规章制度、技术文档
 - 🎧 智能客服 – 基于产品文档的自动问答
 - 📈 商业智能 – 报告分析、数据挖掘
 
🎓 教育科研
- 📖 学习助手 – 教材、论文、研究资料问答
 - 🔬 研究辅助 – 文献检索、知识发现
 - 👨🏫 教学工具 – 智能答疑、课程辅导
 
⚖️ 专业服务
- 📋 法律文档 – 合同分析、法规查询
 - 🏥 医疗知识 – 医学文献、诊疗指南
 - 💰 金融分析 – 政策解读、市场研究
 
❗ 故障排除
🔧 常见问题
Q: 启动后端时报错 "ModuleNotFoundError"
# 确保在虚拟环境中
source venv/bin/activate
pip install -r requirements.txt
Q: 上传文档失败
- 检查文件大小是否超出限制
 - 确保API密钥配置正确
 - 查看控制台错误信息
 
Q: 问答功能不工作
# 检查后端服务状态
curl http://localhost:8000/api/health
# 检查Pinecone连接
# 查看 .env 文件中的 PINECONE_API_KEY 配置
Q: 企业级前端访问不了
# 确保后端服务已启动
curl http://localhost:8000/
# 确保没有端口冲突
lsof -i :8080
🆘 获取帮助
遇到问题?
- 查看控制台输出日志
 - 检查 
.env文件配置 - 确认网络连接正常
 - 参考项目文档:
项目分享 - 我是怎么做出这个RAG智能问答系统的.md 
🎁 项目文档
🚧 未来规划
🎯 短期目标
- 支持更多文档格式 (Markdown, HTML)
 - 添加用户认证系统
 - 优化移动端体验
 - 支持批量文档处理
 
🌟 长期愿景
- 多语言支持
 - 知识图谱构建
 - 协作功能
 - 企业级部署方案
 
👥 贡献指南
欢迎贡献代码!请遵循以下步骤:
- Fork 这个仓库
 - 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启 Pull Request
 
📞 联系方式
📄 开源协议
本项目基于 MIT License 开源协议。
⭐ 如果这个项目对你有帮助,请给个星标支持一下!
让知识检索变得更智能,让问答体验更自然 🚀