外观
项目 04:RAG 个人知识库
1. 项目定位
这是 AI 全栈方向的关键项目。用户可以上传学习文档、技术笔记、PDF 或 Markdown,系统完成解析、切分、检索,并基于来源回答问题。
重点不是“聊天”,而是完整展示 RAG 产品链路:上传、解析、索引、检索、引用、追问、反馈。
2. 对应学习资料
Python系统学习文档.mdLangChain系统学习文档.mdPostgreSQL系统学习文档.mdMongoDB系统学习文档.mdPrisma ORM系统学习文档.mdNode.js系统学习文档.mdVue系统学习文档.md
3. 技术栈
- 前端:Vue 3、TypeScript、Tailwind CSS。
- BFF:NestJS。
- AI 服务:Python FastAPI + LangChain。
- 数据库:PostgreSQL 存业务数据,向量能力可用 pgvector;MongoDB 可选用于原始文档结构。
- 文件存储:本地目录或对象存储 mock。
4. 核心流程
text
上传文档
-> 解析文本
-> 切分 chunk
-> 生成 embedding
-> 写入向量库
-> 用户提问
-> 检索相关 chunk
-> 拼接上下文
-> 生成回答
-> 返回引用来源5. 核心功能
5.1 文档管理
- 上传 Markdown、TXT、PDF。
- 展示解析状态。
- 展示文档 chunk 数量。
- 支持删除文档并清理索引。
5.2 知识库管理
- 创建知识库。
- 设置知识库描述。
- 添加文档到知识库。
- 查看索引状态。
5.3 RAG 问答
- 选择知识库提问。
- 支持流式回答。
- 展示引用来源。
- 展示检索片段。
- 支持追问。
- 支持回答反馈:有用、无用、引用错误。
5.4 检索调试
- 输入 query 查看 topK chunk。
- 展示相似度。
- 展示 chunk 来源位置。
- 调整 topK 和 score threshold。
6. API 契约
text
POST /knowledge-bases
GET /knowledge-bases
POST /knowledge-bases/:id/documents
GET /knowledge-bases/:id/documents
DELETE /documents/:id
POST /rag/chat
POST /rag/retrieve-debug
POST /rag/feedback7. 数据模型
ts
type DocumentStatus = 'uploaded' | 'parsing' | 'indexed' | 'failed'
type SourceCitation = {
documentId: string
documentTitle: string
chunkId: string
snippet: string
score: number
}
type RagAnswer = {
answer: string
citations: SourceCitation[]
followUpQuestions: string[]
}8. 验收标准
- 能创建知识库并上传文档。
- 文档有清晰处理状态。
- 能基于知识库提问并得到回答。
- 回答必须展示引用来源。
- 能打开引用来源并定位片段。
- 能使用检索调试页面查看 topK 结果。
- 前端能处理解析失败、无引用、模型失败、空知识库状态。
9. 进阶挑战
- 增加多知识库混合检索。
- 增加 chunk 策略可视化。
- 增加 rerank。
- 增加回答质量评分。
- 增加文档权限。
- 增加引用高亮定位。