3.0 KiB
3.0 KiB
Personal Knowledge Assistant
基于 EINO 框架的个人知识助手 Agent,融合 RAG(检索增强生成)与 Tool Calling(工具调用),采用 Supervisor 多 Agent 编排模式。
架构
用户提问 → Supervisor Agent(路由)
├── Retrieval Agent → 语义搜索 / 关键词搜索
├── Writer Agent → 创建笔记 / 生成摘要
└── Organizer Agent → 标签推荐 / 关联发现
技术栈:Go + Gin + Eino(后端)| React + Vite + Tailwind CSS(前端)
快速开始
1. 配置环境变量
cp .env.example .env
编辑 .env,填入你的 API 配置:
| 变量 | 说明 | 默认值 |
|---|---|---|
OPENAI_API_KEY |
API Key | (必填) |
OPENAI_BASE_URL |
API Base URL | https://api.openai.com/v1 |
OPENAI_MODEL |
Chat Model | gpt-4o |
OPENAI_EMBED_MODEL |
Embedding Model | text-embedding-3-small |
DATA_DIR |
笔记目录 | ./data |
PORT |
HTTP 端口 | 8080 |
OPENAI_BASE_URL支持任意 OpenAI 兼容的 API 接入商。
2. 启动后端
go run .
启动时会自动扫描 data/ 目录下的 .md 文件并建立向量索引。
3. 启动前端
cd web
npm install
npm run dev
访问 http://localhost:5173。
API 接口
| 方法 | 路径 | 说明 |
|---|---|---|
POST |
/api/chat |
发送消息,SSE 流式返回 Agent 响应 |
GET |
/api/notes |
获取笔记列表 |
GET |
/api/notes/:id |
获取笔记详情 |
POST |
/api/notes |
创建笔记 |
DELETE |
/api/notes/:id |
删除笔记 |
POST |
/api/index |
重建向量索引 |
项目结构
├── main.go # 入口:组件装配 + 启动服务
├── config/config.go # 环境变量配置
├── internal/
│ ├── store/ # 笔记存储(内存实现)
│ ├── embedding/ # OpenAI Embedding 封装
│ ├── index/ # 内存向量索引(cosine similarity)
│ ├── rag/ # Markdown 分块 + RAG Pipeline
│ ├── tools/ # 6 个 Agent 工具
│ ├── agent/ # Supervisor + 3 个子 Agent
│ └── api/ # Gin HTTP 路由 + SSE
├── data/ # 笔记目录(Markdown)
└── web/ # React 前端
Agent 工具
| 工具 | Agent | 说明 |
|---|---|---|
semantic_search |
Retrieval | 语义相似度搜索 |
keyword_search |
Retrieval | 关键词精确匹配 |
create_note |
Writer | 创建新笔记 |
generate_summary |
Writer | 生成笔记摘要 |
suggest_tags |
Organizer | 自动推荐标签 |
find_related |
Organizer | 发现关联笔记 |
开发
# 构建
go build ./...
# 运行测试
go test ./...
# 前端构建
cd web && npm run build