106 lines
3.0 KiB
Markdown
106 lines
3.0 KiB
Markdown
# Personal Knowledge Assistant
|
||
|
||
基于 [EINO](https://github.com/cloudwego/eino) 框架的个人知识助手 Agent,融合 RAG(检索增强生成)与 Tool Calling(工具调用),采用 Supervisor 多 Agent 编排模式。
|
||
|
||
## 架构
|
||
|
||
```
|
||
用户提问 → Supervisor Agent(路由)
|
||
├── Retrieval Agent → 语义搜索 / 关键词搜索
|
||
├── Writer Agent → 创建笔记 / 生成摘要
|
||
└── Organizer Agent → 标签推荐 / 关联发现
|
||
```
|
||
|
||
**技术栈**:Go + Gin + Eino(后端)| React + Vite + Tailwind CSS(前端)
|
||
|
||
## 快速开始
|
||
|
||
### 1. 配置环境变量
|
||
|
||
```bash
|
||
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. 启动后端
|
||
|
||
```bash
|
||
go run .
|
||
```
|
||
|
||
启动时会自动扫描 `data/` 目录下的 `.md` 文件并建立向量索引。
|
||
|
||
### 3. 启动前端
|
||
|
||
```bash
|
||
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 | 发现关联笔记 |
|
||
|
||
## 开发
|
||
|
||
```bash
|
||
# 构建
|
||
go build ./...
|
||
|
||
# 运行测试
|
||
go test ./...
|
||
|
||
# 前端构建
|
||
cd web && npm run build
|
||
```
|