AI学习教练

一个基于AI的全栈学习教练,支持文档上传、内容嵌入、学习进度跟踪和每日摘要生成。

  • by TechMaverickHub
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 TechMaverickHub/AI-learning-coach-MCP

使用说明

📚 人工智能学习教练——MCP+Streamlit+Supabase+Groq

一个全栈AI驱动的学习教练,使用:

  • Supabase Postgres+pgvector
  • Groq法学硕士(llama3.1-8b-instant)
  • 句子转换器(all-MiniLM-L6-v2)
  • FastMCP服务器
  • 流线型仪表板
  • Python RAG管道

该项目允许用户:

  1. 上传文件(PDF/TXT/MD)
  2. 使用句子转换器提取+嵌入内容
  3. 在Supabase中存储内容+嵌入
  4. 跟踪每周学习进度
  5. 使用Groq LLM生成每日/每周学习摘要
  6. 通过MCP服务器公开所有功能(与Claude Desktop配合使用)

🚀 特性

✅ 内容物摄入

  • 上传PDF、文本或markdown文件
  • 提取文本
  • 生成嵌入 all-MiniLM-L6-v2
  • 在Supabase中存储文本+嵌入(content 表)

✅ 矢量搜索(pgvector)

  • 余弦相似度使用 <=> 操作员
  • Top-K检索用于学习摘要生成

✅ 学习进度跟踪

  • 存储在Supabase中的每周进度(user_progress 表)

✅ 每日摘要生成

  • 使用RAG+Groq生成5项见解
  • 根据学习者的每周进度量身定制
  • 存储在Supabase中(digests 表)

✅ MCP服务器集成

显示工具:

  • add_content_source
  • list_content_sources
  • fetch_sources
  • update_progress
  • generate_daily_digest

✅ 流线型仪表板

  • 上传文件
  • 更新每周学习计划
  • 直观地生成学习摘要
  • 在干净的选项卡式UI中查看存储的内容

🏗️ 架构概述

User → Streamlit UI → Backend (Python)
                              ↓
                       SentenceTransformers (Embeddings)
                              ↓
                         Supabase (pgvector)
                              ↓
                          RAG Pipeline
                              ↓
                      Groq LLM (Digest Generation)
                              ↓
                      Supabase → Digests
                              ↓
                  Claude Desktop via MCP Tools

🛠️ 技术栈

组件 技术
后端 Python 3.11
矢量搜索 Supabase上的pgvector
法学硕士 Groq llama3.1-8b-instant
嵌入 句子转换器(all-MiniLM-L6-v2)
UI 流光显示
MCP服务器 FastMCP
RSS获取 提要解析器
文件解析 pdfplumber

📦 安装

1.创建虚拟环境

python -m venv env
source env/bin/activate  # Windows: env\Scripts\activate

2.安装依赖项

pip install -r requirements.txt

3.创建 .env 文件

DATABASE_URL=postgresql://postgres:YOUR_PASSWORD@db.PROJECT_REF.supabase.co:6543/postgres
GROQ_API_KEY=your_groq_key

4.初始化辅助数据库表

在Supabase SQL编辑器中运行以下命令:

create extension if not exists vector;

create table if not exists sources (
  id serial primary key,
  url text not null,
  created_at timestamptz default now()
);

create table if not exists content (
  id serial primary key,
  title text,
  text text,
  url text,
  embedding vector(384),
  created_at timestamptz default now()
);

create table if not exists user_progress (
  id serial primary key,
  week int not null,
  topics text,
  created_at timestamptz default now()
);

create table if not exists digests (
  id serial primary key,
  week int,
  digest text,
  created_at timestamptz default now()
);

▶️ 运行Streamlit仪表板

streamlit run dashboard.py

🔧 MCP服务器设置(克劳德桌面)

添加到:

视窗

%APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "LearningCoach": {
      "command": "C:\\Path\\To\\python.exe",
      "args": [
        "D:\\Path\\To\\learning-coach-mcp\\src\\server.py"
      ],
      "env": {
        "DATABASE_URL": "postgresql://postgres:YOUR_PASSWORD@db.PROJECT_REF.supabase.co:6543/postgres",
        "GROQ_API_KEY": "your_groq_key"
      }
    }
  }
}

🧪 MCP测试提示

Add this RSS source: https://hnrss.org/frontpage
Fetch content from all sources.
Update my progress to week 1 learning Python.
Generate my daily learning digest.

📐 项目结构

learning-coach-mcp/
├── src/
│   ├── server.py
│   ├── ingestion/
│   ├── rag/
│   ├── utils/
│   └── ...
├── dashboard.py
├── requirements.txt
├── README.md
└── .env

🎯 任务映射

此项目实现了任务文档中的所有要求。

必需 已实施
使用pgvector的RAG ✔
文档摄取 ✔
语义搜索 ✔
每日消化生成 ✔
学习进度跟踪 ✔
MCP工具 ✔
流线型仪表板 ✔

🤝 贡献

欢迎PR和建议!


📜 许可证

MIT许可证–开源和完全可编辑