完整教程:构建 ExamAI 上传 PDF 笔记并基于文档内容问答,采用 RAG 架构,模型和数据均运行在本地,不依赖付费云端 API。
上传笔记 → 提问问题 → 根据文档得到答案。
我想构建一个真正对学习有帮助的工具,同时也能借此理解 AI 应用背后的运作原理。
ExamAI 支持以下功能:
上传 PDF 学习资料
从文档中提取文本
将内容切分为可搜索的块
将块存储到 ChromaDB
提问时搜索相关信息
将相关上下文发送给本地 LLM
通过 React 界面获取答案
通过追问继续对话
关键在于,AI 通过 Ollama 在本地运行,而不需要付费的云端 AI API。
该应用遵循基本的 RAG(检索增强生成)架构。
PDF
↓
Text Extraction
↓
Chunking
↓
Embeddings
↓
ChromaDB
↓
User Question
↓
Similarity Search
↓
Relevant Context
↓
Ollama
↓
AI Answer
ExamAI 不会每次都将整个 PDF 发送给模型,而是检索文档中最相关的部分,并将其作为上下文使用。
项目包含了 Windows 设置和启动脚本,以简化运行流程。
在设置好所需依赖后,应用可以同时启动 FastAPI 后端和 React 前端。
项目已在 GitHub 开源:
https://github.com/apoorvaapoorva0160-droid/ExamAI
构建这个项目让我学到了远超"将 LLM 连接到前端"的东西。
React 前端与后端通信
使用 Ollama 的本地 LLM
通过 .bat 脚本实现 Windows 自动化
我也在此过程中遇到了大量的 bug。
一些最重要的经验教训来自修复这些 bug,而非编写初始代码。
这个项目让我喜欢的地方之一是 AI 处理可以在本地进行。
这意味着学生可以在不需要云端 LLM 的 API Key 的情况下实验这个应用。
这也使得该项目成为我理解本地 AI 应用内部运作原理的良好方式。
ExamAI 仍在不断完善中。
我希望改进的一些方向包括:
更完善的文档管理
提升检索质量
更准确的答案
更好的多文档支持
更健壮的错误处理
更稳健的对话与会话管理
我还希望最终能让其他学生更轻松地安装和使用这个项目。
这是我最早期的正式 AI 项目之一,分享出来是因为我真的希望得到其他开发者的反馈。
如果你对 RAG 架构、代码结构、检索方法、UI 或其他任何方面有建议,我非常期待听到你的意见。
https://github.com/apoorvaapoorva0160-droid/ExamAI
