# RAGKnowledgeBase **Repository Path**: CanFlyhang/RAGKnowledgeBase ## Basic Information - **Project Name**: RAGKnowledgeBase - **Description**: 这是一个基于检索增强生成 (RAG, Retrieval-Augmented Generation) 技术构建的 Web 问答系统。它允许知识库所有者上传私有文档,并使访问者能够基于这些文档进行智能问答。 - **Primary Language**: Python - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-02-15 - **Last Updated**: 2026-03-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 智能知识库问答系统 (RAG-Based QA System) 这是一个基于检索增强生成 (RAG, Retrieval-Augmented Generation) 技术构建的 Web 问答系统。它允许知识库所有者上传私有文档,并使访问者能够基于这些文档进行智能问答。 ## 1. 项目可行性分析 该方案在技术上是完全可行的。 - **技术基础**:利用大语言模型 (LLM) 的上下文理解能力,配合向量数据库 (Vector Database) 进行语义检索。 - **核心逻辑**: 1. **知识导入**:文档 -> 切片 -> 向量化 (Embedding) -> 存储至向量数据库。 2. **问答流程**:用户提问 -> 提问向量化 -> 检索相似知识切片 -> 组合 Prompt -> LLM 生成回答。 3. **记录保存**:问答对及引用的知识点实时保存至关系型数据库,用于历史追溯。 ## 2. 技术栈推荐 - **前端**: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 ## 3. 系统架构 ```mermaid 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 ``` ## 4. 核心功能模块设计 ### 4.1 知识管理 (Owner Only) - **文档上传**:支持 PDF, Markdown, TXT, Word 等格式。 - **自动处理**:后端自动完成文本提取、分段 (Chunking) 和向量化。 - **清空/更新**:所有者可以管理知识库内容,清空后模型回归通用状态。 ### 4.2 智能问答 (Public/Private) - **语义检索**:根据用户问题从向量库中匹配最相关的知识。 - **兜底机制**:若知识库为空或检索不到相关内容,调用 LLM 通用能力回答。 - **引用溯源**:回答中会注明参考了哪些文档片段。 ### 4.3 历史记录 (Persistent) - **对话存储**:保存用户提问、AI 回答、匹配的知识片段及时间戳。 - **反馈系统**:用户可以对回答进行点赞/踩,帮助优化知识库。 ## 5. 数据库设计 (简易版) ### `knowledge_meta` (知识元数据) | 字段 | 类型 | 说明 | | :--- | :--- | :--- | | id | UUID | 主键 | | filename | String | 文件名 | | status | Enum | 处理状态 (Success/Processing/Failed) | ### `chat_history` (问答记录) | 字段 | 类型 | 说明 | | :--- | :--- | :--- | | id | UUID | 主键 | | question | Text | 用户问题 | | answer | Text | AI 回答 | | context_used | JSON | 使用到的知识切片引用 | | created_at | Timestamp| 创建时间 | ## 6. 后续开发建议 1. **Prompt 优化**:设计严谨的系统提示词,要求模型“若知识库中没有相关信息,请告知用户”。 2. **流式响应**:使用 Server-Sent Events (SSE) 实现打字机效果,提升用户体验。 3. **多租户支持**:未来可以扩展为支持多个所有者拥有各自独立的知识库。