📚 人工智能学习教练——MCP+Streamlit+Supabase+Groq
一个全栈AI驱动的学习教练,使用:
- Supabase Postgres+pgvector
- Groq法学硕士(
llama3.1-8b-instant) - 句子转换器(
all-MiniLM-L6-v2) - FastMCP服务器
- 流线型仪表板
- Python RAG管道
该项目允许用户:
- 上传文件(PDF/TXT/MD)
- 使用句子转换器提取+嵌入内容
- 在Supabase中存储内容+嵌入
- 跟踪每周学习进度
- 使用Groq LLM生成每日/每周学习摘要
- 通过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_sourcelist_content_sourcesfetch_sourcesupdate_progressgenerate_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\activate2.安装依赖项
pip install -r requirements.txt3.创建 .env 文件
DATABASE_URL=postgresql://postgres:YOUR_PASSWORD@db.PROJECT_REF.supabase.co:6543/postgres
GROQ_API_KEY=your_groq_key4.初始化辅助数据库表
在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/frontpageFetch 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许可证–开源和完全可编辑
