这是一个基于检索增强生成 (RAG, Retrieval-Augmented Generation) 技术构建的 Web 问答系统。它允许知识库所有者上传私有文档,并使访问者能够基于这些文档进行智能问答。
该方案在技术上是完全可行的。
- 技术基础:利用大语言模型 (LLM) 的上下文理解能力,配合向量数据库 (Vector Database) 进行语义检索。
- 核心逻辑:
- 知识导入:文档 -> 切片 -> 向量化 (Embedding) -> 存储至向量数据库。
- 问答流程:用户提问 -> 提问向量化 -> 检索相似知识切片 -> 组合 Prompt -> LLM 生成回答。
- 记录保存:问答对及引用的知识点实时保存至关系型数据库,用于历史追溯。
- 前端:React.js / Next.js + Tailwind CSS (构建现代化 UI)
- 后端:Python (FastAPI / Flask) 或 Node.js (NestJS)
- 大模型框架:LangChain 或 LlamaIndex (核心 RAG 编排)
- 向量数据库:ChromaDB / Pinecone / Milvus (存储向量化知识)
- 关系数据库:PostgreSQL / MySQL (存储用户信息及对话历史)
- 模型支持:OpenAI (GPT-4o), Claude, 或本地部署的 DeepSeek / Llama 3
graph TD
A[所有者] -->|上传文档| B(后端 API)
B --> C{切片与向量化}
C --> D[(向量数据库)]
E[普通用户] -->|发起提问| B
B --> F{检索相似知识}
D --> F
F --> G[组合 Prompt]
G --> H(大语言模型 LLM)
H -->|生成回答| B
B -->|保存对话| I[(关系型数据库)]
B -->|返回答案| E
- 文档上传:支持 PDF, Markdown, TXT, Word 等格式。
- 自动处理:后端自动完成文本提取、分段 (Chunking) 和向量化。
- 清空/更新:所有者可以管理知识库内容,清空后模型回归通用状态。
- 语义检索:根据用户问题从向量库中匹配最相关的知识。
- 兜底机制:若知识库为空或检索不到相关内容,调用 LLM 通用能力回答。
- 引用溯源:回答中会注明参考了哪些文档片段。
- 对话存储:保存用户提问、AI 回答、匹配的知识片段及时间戳。
- 反馈系统:用户可以对回答进行点赞/踩,帮助优化知识库。
| 字段 | 类型 | 说明 |
|---|---|---|
| id | UUID | 主键 |
| filename | String | 文件名 |
| status | Enum | 处理状态 (Success/Processing/Failed) |
| 字段 | 类型 | 说明 |
|---|---|---|
| id | UUID | 主键 |
| question | Text | 用户问题 |
| answer | Text | AI 回答 |
| context_used | JSON | 使用到的知识切片引用 |
| created_at | Timestamp | 创建时间 |
- Prompt 优化:设计严谨的系统提示词,要求模型“若知识库中没有相关信息,请告知用户”。
- 流式响应:使用 Server-Sent Events (SSE) 实现打字机效果,提升用户体验。
- 多租户支持:未来可以扩展为支持多个所有者拥有各自独立的知识库。