Skip to content

LeeAt67/Yourself

Repository files navigation

Nexus - 智能知识枢纽

基于 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(可选,用于深度网络检索)

1. 安装依赖

pnpm install

2. 配置环境变量

创建 .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

3. 数据库设置

在 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

4. 启动开发服务器

# 启动前端 (http://localhost:5173)
pnpm dev

# 启动后端 (http://localhost:3000)
pnpm server

📖 功能详解

1. 智能知识主题

创建主题:

  • 输入关键词(如 "React 性能优化")
  • 系统自动执行深度网络检索(Bocha API)
  • AI 生成结构化 Markdown 文档
  • 自动向量化存储到知识库

自动更新:

  • 支持 12 小时、每天、每周、仅手动四种频率
  • 定时任务自动检索新内容
  • AI 智能整合新旧内容,避免重复
  • 完整记录更新历史

知识文档结构:

  • 📝 概述 - 主题核心内容总结
  • 💡 核心概念 - 关键知识点解析
  • ✅ 最佳实践 - 实用技巧和建议
  • 🔗 参考来源 - 所有来源 URL

2. AI 对话助手

智能问答(基于 LangChain RAG):

  • 语义搜索知识库相关内容
  • 基于检索结果生成精准回答
  • 支持多轮对话上下文记忆
  • 自动引用来源知识主题

对话管理:

  • 自动创建和管理会话
  • 历史对话持久化存储
  • 上下文超限自动摘要
  • 支持流式输出(后端已实现)

使用场景:

  • "React 性能优化有哪些方法?"
  • "解释一下虚拟 DOM 的原理"
  • "对比 Vue 和 React 的区别"
  • "推荐学习前端的路径"

3. 知识库管理

主题列表:

  • 显示所有知识主题
  • 实时状态指示(等待中/处理中/已就绪/错误)
  • 搜索和筛选功能
  • 一键删除(带确认)

主题详情:

  • 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

📚 文档

项目规范

技术文档(STAR 格式)

功能规格

🤝 贡献

欢迎提交 Issue 和 Pull Request!

📄 许可证

MIT License


Made with ❤️ by Nexus Team

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published