Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 37 additions & 21 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,17 +10,17 @@

## 基础设施

| 组件 | 版本 | 用途 |
|------|------|------|
| Go | 1.25+ | 后端运行时 |
| Node.js | 18+ | 前端构建 |
| PostgreSQL | 16+ | 业务数据持久化 |
| Redis | 7+ | 会话状态、缓存 |
| MinIO / S3 | — | 简历、音频文件存储 |
| Milvus | 2.4+ | 题库向量检索 |
| Elasticsearch | 8.13+ | 题库关键词/标签检索 |
| RabbitMQ | 3.13+(可选) | 面试完成事件、报告生成 |
| Ollama | 可选 | 本地 LLM / Embedding |
| 组件 | 版本 | 用途 | 模式 |
|------|------|------|------|
| Go | 1.25+ | 后端运行时 | 必须 |
| Node.js | 18+ | 前端构建 | 必须 |
| PostgreSQL | 16+ | 业务数据持久化 | 必须 |
| Redis | 7+ | 会话状态、缓存 | 必须 |
| MinIO / S3 | — | 简历、音频文件存储 | 必须 |
| RabbitMQ | 3.13+ | 面试完成事件、报告生成 | 必须 |
| Milvus | 2.4+ | 题库向量检索 | RAG 模式 |
| Elasticsearch | 8.13+ | 题库关键词/标签检索 | RAG 模式 |
| Ollama | 可选 | 本地 LLM / Embedding | 可选 |

## LLM 提供商(至少配一个)

Expand All @@ -46,30 +46,46 @@ React 19 · Vite · TypeScript · Zustand · Monaco Editor · Recharts

# 快速启动

## 1. 拉起基础设施
## 1. 配置环境变量

```bash
docker-compose up -d
cp .env.example .env
# 编辑 .env,至少填写一个 LLM 提供商的 API Key
```

一键启动 PostgreSQL、Redis、MinIO、Milvus、Elasticsearch、RabbitMQ。
## 2. 启动基础设施

系统提供两种启动模式,按机器配置选择:

## 2. 配置环境变量
### Wiki 模式(推荐,2C2G 可用)

出题由 LLM 直接生成,不依赖向量检索。只启动 Postgres、Redis、MinIO、RabbitMQ。

```bash
cp .env.example .env
# 编辑 .env,至少填写一个 LLM 提供商的 API Key
bash start-wiki.sh
```

## 3. 启动后端
### RAG 模式(需要 8G+ 内存)

启用 Milvus + Elasticsearch 向量/关键词检索题库。首次启动需拉取较大镜像。

```bash
go run ./cmd
bash start-rag.sh
```

默认监听 `:8080`,启动时自动执行数据库迁移。
> 使用 RAG 模式前需先采集 wiki 知识库:
> ```bash
> bash collect-wiki.sh --limit 5 # 先小批量验证
> bash collect-wiki.sh # 全量导入
> ```

### 可选:本地 LLM(Ollama)

```bash
docker compose --profile ollama up -d ollama
```

## 4. 启动前端
## 3. 启动前端

```bash
cd frontend && npm install && npm run dev
Expand Down
5 changes: 2 additions & 3 deletions collect-wiki.sh
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,9 @@ if [ ! -f .env ]; then
exit 1
fi

# collector 非 dry-run 时需要 PG + RabbitMQ(写 bank_questions + 投向量化任务)。
# 注:向量化任务最终供 RAG 用,RAG 未实现时这些任务会堆在 MQ 里,不影响 wiki 产出(questions + index.md)。
echo "[collect-wiki] 启动采集所需基础设施(postgres redis minio rabbitmq)..."
docker compose up -d --wait postgres redis minio minio-init rabbitmq
docker compose up -d --wait postgres redis minio rabbitmq
docker compose up -d minio-init

echo "[collect-wiki] 开始采集(首次会 git clone 小林 CS-Base 到 internal/wiki/raw/)..."
go run ./tools/collector "$@"
Expand Down
12 changes: 8 additions & 4 deletions docker-compose.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -108,10 +108,11 @@ services:
- ai-interview-net

# ─────────────────────────────────────────
# Milvus(向量数据库)
# Milvus(向量数据库)【rag profile】
# 依赖:etcd(元数据) + 业务 MinIO(对象存储,milvus bucket)
# ─────────────────────────────────────────
etcd:
profiles: ["rag"]
image: quay.io/coreos/etcd:v3.5.14
container_name: ai-interview-etcd
restart: unless-stopped
Expand All @@ -136,6 +137,7 @@ services:
- ai-interview-net

milvus:
profiles: ["rag"]
image: milvusdb/milvus:v2.4.17
container_name: ai-interview-milvus
restart: unless-stopped
Expand Down Expand Up @@ -168,9 +170,10 @@ services:
- ai-interview-net

# ─────────────────────────────────────────
# Elasticsearch(关键词 / 标签检索)
# Elasticsearch(关键词 / 标签检索)【rag profile】
# ─────────────────────────────────────────
elasticsearch:
profiles: ["rag"]
image: elasticsearch:8.13.4
container_name: ai-interview-es
restart: unless-stopped
Expand All @@ -191,10 +194,11 @@ services:
- ai-interview-net

# ─────────────────────────────────────────
# Ollama(本地 LLM / embedding,可选)
# 不需要本地模型时可注释掉整个服务
# Ollama(本地 LLM / embedding)【ollama profile】
# 不需要本地模型时可不传 --profile ollama
# ─────────────────────────────────────────
ollama:
profiles: ["ollama"]
image: ollama/ollama:latest
container_name: ai-interview-ollama
restart: unless-stopped
Expand Down
Binary file modified docu/wechat_group.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading