Skip to content

项目 04:RAG 个人知识库 ​

1. 项目定位 ​

这是 AI 全栈方向的关键项目。用户可以上传学习文档、技术笔记、PDF 或 Markdown,系统完成解析、切分、检索,并基于来源回答问题。

重点不是“聊天”,而是完整展示 RAG 产品链路:上传、解析、索引、检索、引用、追问、反馈。

2. 对应学习资料 ​

  • Python系统学习文档.md
  • LangChain系统学习文档.md
  • PostgreSQL系统学习文档.md
  • MongoDB系统学习文档.md
  • Prisma ORM系统学习文档.md
  • Node.js系统学习文档.md
  • Vue系统学习文档.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/feedback

7. 数据模型 ​

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。
  • 增加回答质量评分。
  • 增加文档权限。
  • 增加引用高亮定位。

基于 VitePress 构建的个人学习文档知识库