# 智能知识库langchainRAG-AI **Repository Path**: domaners/langchainRAG-AI ## Basic Information - **Project Name**: 智能知识库langchainRAG-AI - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-29 - **Last Updated**: 2026-08-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 电商企业级 RAG 知识库问答系统 基于 **LangChain** + **FastAPI** + **React** 的企业级 RAG(检索增强生成)知识库问答系统,面向电商平台商品问答场景。 ## 功能特性 ### 核心功能 - 🔍 **智能问答**:基于 LangChain RAG 管线,结合知识库内容回答用户问题 - 📚 **知识库管理**:管理员可创建知识库、上传文档(Markdown/TXT/PDF/CSV/DOCX) - 💬 **多用户多会话**:每个用户独立会话管理,支持会话创建/重命名/删除 - 📝 **对话持久化**:历史对话完整保留,随时恢复之前的会话 - 🔗 **来源引用**:回答中标记引用来源,悬停可预览知识库原文片段 - 👥 **用户认证**:注册/登录/JWT 鉴权/修改密码 - 👑 **权限管理**:管理员(admin/123456)可管理知识库,普通用户仅可问答 ### 技术亮点 - 🚀 **混合检索**:稠密向量(语义)+ 稀疏 BM25(关键词)并行检索,RRF 融合 - 🎯 **Cross-Encoder 重排序**:对候选结果精排,提升答案准确率 20-30% - ⚡ **流式响应**:SSE 逐 Token 推送,首 Token 延迟 <500ms - 💾 **语义缓存**:Redis 存储相似问题的 LLM 答案,常见问题缓存命中率 30-40% - 📦 **自适应分块**:商品规格/政策文档/FAQ 使用不同分块策略 - 🔒 **多层安全**:JWT 双 Token、bcrypt 密码哈希、Redis 滑动窗口限流 ## 技术栈 | 层次 | 技术 | |------|------| | **后端框架** | Python 3.12 + FastAPI | | **前端框架** | React 18 + TypeScript + Vite | | **UI 组件库** | Ant Design 5.x | | **LLM** | OpenAI GPT-4o-mini | | **Embedding** | BAAI/bge-small-zh-v1.5(本地) | | **重排序** | BAAI/bge-reranker-v2-m3 | | **向量数据库** | ChromaDB | | **关系数据库** | PostgreSQL 16 | | **缓存** | Redis 7 | | **异步任务** | Celery | | **部署** | Docker Compose | ## 快速开始 ### 前提条件 - Docker & Docker Compose - OpenAI API Key(在 `.env` 文件中配置) ### 1. 克隆项目 ```bash cd langchainRAG ``` ### 2. 配置环境变量 ```bash cp backend/.env.example backend/.env ``` 编辑 `backend/.env`,填入你的 OpenAI API Key: ``` OPENAI_API_KEY=sk-your-api-key-here ``` ### 3. 启动服务 ```bash docker-compose up -d ``` ### 4. 初始化数据库 ```bash # 进入 backend 容器 docker-compose exec backend bash # 运行数据库迁移 alembic upgrade head # 创建管理员账号 python seed_data.py ``` ### 5. 访问系统 - **前端页面**:http://localhost:80(或 http://localhost:5173) - **后端 API 文档**:http://localhost:8000/api/docs(DEBUG 模式下) - **管理员账号**:admin / 123456 ### 6. 本地开发(不使用 Docker) ```bash # 启动 PostgreSQL 和 Redis docker-compose up -d postgres redis # 后端 cd backend pip install -r requirements.txt alembic upgrade head python seed_data.py uvicorn app.main:app --reload --port 8000 # 前端 cd frontend npm install npm run dev ``` ## 项目结构 ``` langchainRAG/ ├── backend/ │ ├── app/ │ │ ├── main.py # FastAPI 入口 │ │ ├── config.py # 配置管理 │ │ ├── database.py # 异步数据库引擎 │ │ ├── dependencies.py # 依赖注入(认证/授权) │ │ ├── models/ # SQLAlchemy ORM 模型 │ │ ├── schemas/ # Pydantic 请求/响应模型 │ │ ├── api/ # API 路由 │ │ │ ├── auth.py # 认证接口 │ │ │ ├── chat.py # SSE 流式问答 │ │ │ ├── sessions.py # 会话管理 │ │ │ └── admin/ # 管理员接口 │ │ ├── services/ # 业务逻辑 │ │ │ ├── rag_service.py # RAG 核心编排 │ │ │ ├── embedding_service.py │ │ │ ├── vector_store_service.py │ │ │ ├── cache_service.py # 语义缓存 │ │ │ ├── session_service.py │ │ │ ├── document_service.py │ │ │ └── auth_service.py │ │ ├── rag/ # RAG 管线组件 │ │ │ ├── chunking.py # 分块策略 │ │ │ ├── retrieval.py # 混合检索 │ │ │ ├── reranking.py # 重排序 │ │ │ ├── citation.py # 引用格式化 │ │ │ └── prompt_templates.py # 电商 Prompt │ │ ├── core/ # 核心组件 │ │ │ ├── security.py # JWT + bcrypt │ │ │ ├── middleware.py # CORS/限流/日志 │ │ │ ├── exceptions.py │ │ │ └── pagination.py │ │ └── tasks/ # Celery 异步任务 │ ├── alembic/ # 数据库迁移 │ ├── seed_data.py # 种子数据脚本 │ └── requirements.txt ├── frontend/ │ ├── src/ │ │ ├── api/ # API 客户端 │ │ ├── components/ # 可复用组件 │ │ ├── pages/ # 页面组件 │ │ ├── store/ # Zustand 状态管理 │ │ ├── types/ # TypeScript 类型 │ │ └── App.tsx # 路由配置 │ └── package.json ├── nginx/ │ └── default.conf # Nginx 反向代理配置 ├── docker-compose.yml └── README.md ``` ## API 总览 | 方法 | 路径 | 说明 | |------|------|------| | POST | /api/auth/register | 用户注册 | | POST | /api/auth/login | 登录获取 JWT | | POST | /api/auth/refresh | 刷新令牌 | | PUT | /api/auth/password | 修改密码 | | GET | /api/auth/me | 获取用户信息 | | GET | /api/sessions | 获取会话列表 | | POST | /api/sessions | 创建会话 | | PUT | /api/sessions/{id} | 更新会话 | | DELETE | /api/sessions/{id} | 删除会话 | | GET | /api/sessions/{id}/messages | 获取消息 | | GET | /api/sessions/{id}/stream | SSE 流式问答 | | GET | /api/admin/knowledge-bases | 知识库列表(管理员) | | POST | /api/admin/knowledge-bases | 创建知识库(管理员) | | DELETE | /api/admin/knowledge-bases/{id} | 删除知识库(管理员) | | POST | /api/admin/knowledge-bases/{id}/documents | 上传文档(管理员) | | DELETE | /api/admin/documents/{id} | 删除文档(管理员) | | GET | /api/health | 健康检查 | ## RAG 管线流程 ``` 用户提问 → 语义缓存查询(命中则直接返回) → 问题改写(结合对话历史上下文) → 混合检索(Dense向量 + BM25稀疏 + RRF融合)→ Top-10 → Cross-Encoder 重排序 → Top-5 精准片段 → 构建 Prompt(系统指令 + 引用片段 + 对话历史) → LLM 流式生成(SSE 推送) → 解析引用标记 → 存储记录 → 写入语义缓存 ```