基于 LangChain + RAG 的自动化知识管理系统
连接你的所有知识。通过深度网络检索、AI 内容总结和向量化存储,Nexus 帮助你构建和管理自动更新的个人知识库。
- 🤖 智能知识主题 - 基于关键词自动深度搜索,AI 生成结构化知识文档
- 🔄 自动更新 - 定时任务自动检索新内容,持续更新知识库
- 💬 AI 对话助手 - 基于 LangChain RAG 的智能问答,支持上下文记忆
- 🔍 语义搜索 - 使用 Supabase pgvector 进行向量相似度检索
- 📊 更新历史 - 完整记录每次更新的来源和状态
- 📱 响应式设计 - Desktop First 设计,完美适配桌面端
- 框架: React 18 + TypeScript
- 构建工具: Vite
- 样式: Tailwind CSS + SCSS
- 状态管理: Zustand
- UI 组件: Ant Design
- Markdown 渲染: react-markdown + remark-gfm
- 运行时: Node.js + Express
- AI 框架: LangChain.js
- 数据库: Supabase (PostgreSQL + pgvector)
- 深度检索: Bocha API
- AI 服务:
- OpenAI Embedding API(文本向量化)
- OpenAI GPT-4(对话生成和内容总结)
- DeepSeek(可选)
- 定时任务: node-cron
- Node.js >= 18
- pnpm >= 8
- Supabase 账号
- OpenAI API Key(通过 agicto.cn 代理)
- Bocha API Key(可选,用于深度网络检索)
pnpm install创建 .env 文件:
# Supabase 配置(前端)
VITE_SUPABASE_URL=your_supabase_url
VITE_SUPABASE_ANON_KEY=your_supabase_anon_key
# Supabase 配置(后端)
SUPABASE_URL=your_supabase_url
SUPABASE_KEY=your_supabase_anon_key
# OpenAI Embedding(通过 agicto.cn 代理)
OPENAI_API_KEY=your_openai_api_key
OPENAI_BASE_URL=https://api.agicto.cn/v1
# DeepSeek Chat(可选)
DEEPSEEK_API_KEY=your_deepseek_api_key
DEEPSEEK_BASE_URL=https://api.deepseek.com
# Bocha API(深度网络检索,可选)
BOCHA_API_KEY=your_bocha_api_key
BOCHA_API_URL=https://api.bochaai.com/v1
# 定时任务
SCHEDULE_ENABLED=true
SCHEDULE_CHECK_INTERVAL=60000在 Supabase SQL Editor 中依次执行迁移文件:
# 基础表结构
supabase/migrations/001_initial_schema.sql
supabase/migrations/002_documents_and_chunks.sql
# 聊天历史
supabase/migrations/008_chat_history.sql
# 知识主题系统
supabase/migrations/011_knowledge_topics.sql
# LangChain 向量检索函数
supabase/migrations/012_langchain_match_documents.sql# 启动前端 (http://localhost:5173)
pnpm dev
# 启动后端 (http://localhost:3000)
pnpm server创建主题:
- 输入关键词(如 "React 性能优化")
- 系统自动执行深度网络检索(Bocha API)
- AI 生成结构化 Markdown 文档
- 自动向量化存储到知识库
自动更新:
- 支持 12 小时、每天、每周、仅手动四种频率
- 定时任务自动检索新内容
- AI 智能整合新旧内容,避免重复
- 完整记录更新历史
知识文档结构:
- 📝 概述 - 主题核心内容总结
- 💡 核心概念 - 关键知识点解析
- ✅ 最佳实践 - 实用技巧和建议
- 🔗 参考来源 - 所有来源 URL
智能问答(基于 LangChain RAG):
- 语义搜索知识库相关内容
- 基于检索结果生成精准回答
- 支持多轮对话上下文记忆
- 自动引用来源知识主题
对话管理:
- 自动创建和管理会话
- 历史对话持久化存储
- 上下文超限自动摘要
- 支持流式输出(后端已实现)
使用场景:
- "React 性能优化有哪些方法?"
- "解释一下虚拟 DOM 的原理"
- "对比 Vue 和 React 的区别"
- "推荐学习前端的路径"
主题列表:
- 显示所有知识主题
- 实时状态指示(等待中/处理中/已就绪/错误)
- 搜索和筛选功能
- 一键删除(带确认)
主题详情:
- Markdown 格式渲染知识文档
- 更新频率设置
- 手动触发更新
- 查看更新历史(最近 10 条)
- 显示来源数量和更新时间
Nexus/
├── src/ # 前端源码
│ ├── pages/ # 页面组件
│ │ ├── Knowledge.tsx # 知识主题列表页
│ │ ├── KnowledgeDetail.tsx # 知识主题详情页
│ │ └── Chat.tsx # AI 对话页面
│ ├── components/ # 可复用组件
│ │ ├── Knowledge/ # 知识库组件
│ │ │ ├── TopicCard.tsx # 主题卡片
│ │ │ └── TopicForm.tsx # 创建表单
│ │ └── Chat/ # 聊天组件
│ ├── api/ # API 请求封装
│ │ ├── topics.ts # 知识主题 API
│ │ └── chat.ts # 聊天 API
│ ├── stores/ # Zustand 状态管理
│ ├── types/ # TypeScript 类型定义
│ └── utils/ # 工具函数
├── server/ # 后端源码
│ ├── routes/ # API 路由
│ │ ├── topics.js # 知识主题路由
│ │ ├── chat.js # 聊天路由
│ │ └── conversations.js # 会话路由
│ ├── services/ # 业务逻辑
│ │ ├── langchain/ # LangChain 服务
│ │ │ ├── embeddings.js # OpenAI Embeddings
│ │ │ ├── chatModel.js # ChatOpenAI
│ │ │ ├── vectorStore.js # SupabaseVectorStore
│ │ │ ├── textSplitter.js # 文本分块器
│ │ │ └── ragChain.js # RAG Chain
│ │ ├── deepSearchService.js # Bocha 深度检索
│ │ ├── contentSummarizer.js # AI 内容总结
│ │ ├── topicService.js # 知识主题管理
│ │ ├── scheduleService.js # 定时任务
│ │ ├── chatService.js # 聊天服务
│ │ └── retrievalService.js # 向量检索
│ └── index.js # 服务器入口
├── supabase/ # 数据库
│ └── migrations/ # 迁移文件
│ ├── 011_knowledge_topics.sql # 知识主题表
│ └── 012_langchain_match_documents.sql # 向量检索函数
├── docs/ # 文档
│ └── star-*.md # STAR 格式技术文档
└── .kiro/ # 项目配置
├── specs/ # 功能规格
└── steering/ # 开发规范
┌─────────────────────────────────────────────────────────────────┐
│ 前端 (React) │
├─────────────────────────────────────────────────────────────────┤
│ 知识主题列表页 │ 知识详情页 │ AI 聊天页(RAG) │
└────────┬────────────────┬────────────────┬─────────────────────┘
│ │ │
▼ ▼ ▼
┌─────────────────────────────────────────────────────────────────┐
│ 后端 API (Express) │
├─────────────────────────────────────────────────────────────────┤
│ /api/topics │ /api/topics/:id │ /api/chat │
└────────┬────────────────┬────────────────┬─────────────────────┘
│ │ │
▼ ▼ ▼
┌─────────────────────────────────────────────────────────────────┐
│ 服务层 (LangChain.js) │
├──────────────┬──────────────┬──────────────┬───────────────────┤
│ DeepSearch │ Content │ Schedule │ LangChain RAG │
│ Service │ Summarizer │ Service │ Chain │
│ (Bocha API) │ (GPT-4) │ (node-cron) │ (向量检索+问答) │
└──────────────┴──────────────┴──────────────┴───────────────────┘
│ │ │
▼ ▼ ▼
┌─────────────────────────────────────────────────────────────────┐
│ 数据层 (Supabase + SupabaseVectorStore) │
├──────────────┬──────────────┬──────────────┬───────────────────┤
│ knowledge_ │ update_ │ conversations│ document_ │
│ topics │ history │ & messages │ chunks │
└──────────────┴──────────────┴──────────────┴───────────────────┘
知识主题创建流程:
用户输入关键词
↓
Bocha API 深度网络检索
↓
GPT-4 生成结构化 Markdown 文档
↓
RecursiveCharacterTextSplitter 文本分块
↓
OpenAI Embeddings 向量化
↓
SupabaseVectorStore 存储
↓
定时任务自动更新
AI 对话流程:
用户提问
↓
OpenAI Embeddings 向量化问题
↓
SupabaseVectorStore 语义搜索(Top 5)
↓
LangChain RAG Chain 构建上下文
↓
ChatOpenAI 生成回答
↓
保存对话历史
- ✅ 基础页面和导航
- ✅ Supabase 数据存储
- ✅ 用户认证系统
- ✅ LangChain RAG 服务重构
- ✅ 智能知识主题系统
- ✅ 深度网络检索(Bocha API)
- ✅ AI 内容总结(GPT-4)
- ✅ 定时自动更新
- ✅ 向量化存储(pgvector)
- ✅ 对话历史和上下文记忆
- 📋 前端流式输出
- 📋 文件上传支持(PDF、Markdown)
- 📋 知识导出和分享
- 📋 浏览器插件
- 📋 移动端适配
# 运行测试
pnpm test
# 运行测试(单次)
pnpm test:run
# 测试 UI
pnpm test:ui- ES Modules 导入问题 - Node.js ES Modules 环境变量加载
- 自动化知识系统 - 知识主题系统实现
欢迎提交 Issue 和 Pull Request!
MIT License
Made with ❤️ by Nexus Team