forked from DevOps/deploy.stack
feat(honcho): embedding 切换 SiliconFlow Qwen3-0.6B 支持 Ollama 备选
- embedding 默认走 SiliconFlow Qwen3-Embedding-0.6B(独立 base URL) - env.cfg.example 加 Ollama 备选注释块(host.docker.internal:11434) - stack.yml api+deriver 双服务 EMBEDDING_* 配置同步 - api 段 EMBEDDING_API_KEY 用 :- 默认空,兼容 Ollama 无 key 场景 - readme Mermaid 架构图加 siliconflow + ollama 节点 - HONCHO_DERIVER_MODEL 默认值 gpt-4o-mini → gpt-5.4-mini(与上游对齐)
This commit is contained in:
+16
-4
@@ -48,7 +48,17 @@ HONCHO_AUTH_USE_AUTH=false
|
|||||||
HONCHO_NAMESPACE=honcho
|
HONCHO_NAMESPACE=honcho
|
||||||
# 关闭可省 embedding 费用(但失去语义检索能力)
|
# 关闭可省 embedding 费用(但失去语义检索能力)
|
||||||
HONCHO_EMBED_MESSAGES=true
|
HONCHO_EMBED_MESSAGES=true
|
||||||
HONCHO_EMBEDDING_MODEL=text-embedding-3-small
|
# Embedding 模型(默认走 SiliconFlow 兼容端点,独立 base URL)
|
||||||
|
HONCHO_EMBEDDING_MODEL=Qwen/Qwen3-Embedding-0.6B
|
||||||
|
HONCHO_EMBEDDING_BASE_URL=https://api.siliconflow.cn/v1
|
||||||
|
# 替代方案 A:本地 Ollama(零成本、隐私优先)
|
||||||
|
# HONCHO_EMBEDDING_MODEL=qwen3-embedding:0.6b
|
||||||
|
# HONCHO_EMBEDDING_BASE_URL=http://host.docker.internal:11434/v1
|
||||||
|
# EMBEDDING_API_KEY 可留空(Ollama 默认无 key;如配了 OLLAMA_API_KEY 环境变量再填)
|
||||||
|
# 前置:宿主机 `ollama pull qwen3-embedding:0.6b`
|
||||||
|
# docker compose 中 host.docker.internal 在 Linux compose v2 默认可用,Windows/WSL2 自动转发
|
||||||
|
# Embedding 维度(Qwen3-Embedding-0.6B 默认 1024,必须与 DB schema 一致)
|
||||||
|
# 若 Honcho 自动推断失败,需在 stack.yml 同步设置 EMBEDDING_VECTOR_DIMENSIONS=1024
|
||||||
# deriver 必须用支持 tool calling 的模型
|
# deriver 必须用支持 tool calling 的模型
|
||||||
HONCHO_DERIVER_MODEL=gpt-5.4-mini
|
HONCHO_DERIVER_MODEL=gpt-5.4-mini
|
||||||
HONCHO_DERIVER_WORKERS=1
|
HONCHO_DERIVER_WORKERS=1
|
||||||
@@ -61,7 +71,9 @@ HONCHO_LLM_BASE_URL=https://api.openai.com/v1
|
|||||||
|
|
||||||
# ============================================================
|
# ============================================================
|
||||||
# 敏感值(必填,env.cfg 不提交)— 在 .gitignore 已忽略
|
# 敏感值(必填,env.cfg 不提交)— 在 .gitignore 已忽略
|
||||||
|
# 占位符约定:REPLACE_ME_XXX → 替换为真实值(避免使用 <...> 占位符,patch 工具链会吞)
|
||||||
# ============================================================
|
# ============================================================
|
||||||
# HONCHO_LLM_API_KEY=<你的 OpenAI key 或兼容端点 key>
|
# HONCHO_LLM_API_KEY=REPLACE_ME_LLM_KEY # 你的 OpenAI key 或兼容端点 key
|
||||||
# HONCHO_DB_PASSWORD=<强密码,不要带特殊字符,避免 URI 编码问题>
|
# HONCHO_EMBEDDING_API_KEY=REPLACE_ME_EMBEDDING_KEY # SiliconFlow key:https://cloud.siliconflow.cn/account/ak
|
||||||
# HONCHO_AUTH_JWT_SECRET=<仅 AUTH_USE_AUTH=true 时需要;用 python scripts/generate_jwt_secret.py 生成>
|
# HONCHO_DB_PASSWORD=REPLACE_ME_DB_PASSWORD # 强密码,不要带特殊字符,避免 URI 编码问题
|
||||||
|
# HONCHO_AUTH_JWT_SECRET=REPLACE_ME_JWT_SECRET # 仅 AUTH_USE_AUTH=true 时需要;用 python scripts/generate_jwt_secret.py 生成
|
||||||
+14
-8
@@ -37,6 +37,8 @@ flowchart TB
|
|||||||
hermes["Hermes Agent<br/>memory.provider=honcho"]
|
hermes["Hermes Agent<br/>memory.provider=honcho"]
|
||||||
sdk["Python / TS SDK<br/>(honcho-ai / @honcho-ai/sdk)"]
|
sdk["Python / TS SDK<br/>(honcho-ai / @honcho-ai/sdk)"]
|
||||||
tools["DBeaver / psql<br/>PG 5432 直连"]
|
tools["DBeaver / psql<br/>PG 5432 直连"]
|
||||||
|
siliconflow["SiliconFlow<br/>api.siliconflow.cn/v1<br/>Qwen3-Embedding-0.6B<br/>(云端默认)"]
|
||||||
|
ollama["本地 Ollama<br/>host.docker.internal:11434<br/>qwen3-embedding:0.6b<br/>(备选,零成本)"]
|
||||||
end
|
end
|
||||||
|
|
||||||
source -.->|docker build<br/>首次 5-10 min| api
|
source -.->|docker build<br/>首次 5-10 min| api
|
||||||
@@ -47,10 +49,12 @@ flowchart TB
|
|||||||
tools -->|:5432| database
|
tools -->|:5432| database
|
||||||
|
|
||||||
api -->|:5432| database
|
api -->|:5432| database
|
||||||
deriver -->|:5432| database
|
deriver -->|:5432| database
|
||||||
api -->|:6379| redis
|
api -->|:6379| redis
|
||||||
deriver -->|:6379| redis
|
deriver -->|:6379| redis
|
||||||
deriver -.->|轮询<br/>pending messages| api
|
deriver -.->|轮询<br/>pending messages| api
|
||||||
|
api -->|HTTPS embedding<br/>Qwen3-0.6B| siliconflow
|
||||||
|
deriver -->|HTTPS embedding<br/>Qwen3-0.6B| siliconflow
|
||||||
|
|
||||||
database --- pgdata
|
database --- pgdata
|
||||||
redis --- redisdata
|
redis --- redisdata
|
||||||
@@ -60,7 +64,7 @@ flowchart TB
|
|||||||
classDef data fill:#f3e5f5,stroke:#4a148c,color:#000
|
classDef data fill:#f3e5f5,stroke:#4a148c,color:#000
|
||||||
classDef host fill:#e8f5e9,stroke:#1b5e20,color:#000
|
classDef host fill:#e8f5e9,stroke:#1b5e20,color:#000
|
||||||
|
|
||||||
class hermes,sdk,tools ext
|
class hermes,sdk,tools,siliconflow,ollama ext
|
||||||
class source build
|
class source build
|
||||||
class api,deriver,database,redis ext
|
class api,deriver,database,redis ext
|
||||||
class pgdata,redisdata data
|
class pgdata,redisdata data
|
||||||
@@ -113,7 +117,8 @@ flowchart TB
|
|||||||
| `HONCHO_AUTH_USE_AUTH` | `false` | 是否启用 JWT 鉴权(生产建议 `true`) |
|
| `HONCHO_AUTH_USE_AUTH` | `false` | 是否启用 JWT 鉴权(生产建议 `true`) |
|
||||||
| `HONCHO_NAMESPACE` | `honcho` | 全局命名空间前缀 |
|
| `HONCHO_NAMESPACE` | `honcho` | 全局命名空间前缀 |
|
||||||
| `HONCHO_EMBED_MESSAGES` | `true` | 是否对消息做向量化(关闭可省 embedding 费用) |
|
| `HONCHO_EMBED_MESSAGES` | `true` | 是否对消息做向量化(关闭可省 embedding 费用) |
|
||||||
| `HONCHO_EMBEDDING_MODEL` | `text-embedding-3-small` | Embedding 模型名 |
|
| `HONCHO_EMBEDDING_MODEL` | `Qwen/Qwen3-Embedding-0.6B` | Embedding 模型名(默认 SiliconFlow,可换本地 Ollama) |
|
||||||
|
| `HONCHO_EMBEDDING_BASE_URL` | `https://api.siliconflow.cn/v1` | Embedding API Base URL(OpenAI 兼容;Ollama 改 `http://host.docker.internal:11434/v1`) |
|
||||||
| `HONCHO_DERIVER_MODEL` | `gpt-5.4-mini` | Deriver 用的 LLM 模型(必须支持 tool calling) |
|
| `HONCHO_DERIVER_MODEL` | `gpt-5.4-mini` | Deriver 用的 LLM 模型(必须支持 tool calling) |
|
||||||
| `HONCHO_LLM_BASE_URL` | `https://api.openai.com/v1` | LLM API Base URL(OpenAI 兼容端点即可) |
|
| `HONCHO_LLM_BASE_URL` | `https://api.openai.com/v1` | LLM API Base URL(OpenAI 兼容端点即可) |
|
||||||
| `HONCHO_DERIVER_WORKERS` | `1` | Deriver worker 数 |
|
| `HONCHO_DERIVER_WORKERS` | `1` | Deriver worker 数 |
|
||||||
@@ -123,10 +128,11 @@ flowchart TB
|
|||||||
| 变量 | 说明 |
|
| 变量 | 说明 |
|
||||||
|------|------|
|
|------|------|
|
||||||
| `HONCHO_LLM_API_KEY` | LLM API Key(**必填**,server 启动检查,没它起不来) |
|
| `HONCHO_LLM_API_KEY` | LLM API Key(**必填**,server 启动检查,没它起不来) |
|
||||||
|
| `HONCHO_EMBEDDING_API_KEY` | Embedding API Key(**必填**仅当走云端:SiliconFlow 在 [cloud.siliconflow.cn/account/ak](https://cloud.siliconflow.cn/account/ak) 生成;走 Ollama 时留空) |
|
||||||
| `HONCHO_DB_PASSWORD` | PostgreSQL 密码(**必填**,用强密码) |
|
| `HONCHO_DB_PASSWORD` | PostgreSQL 密码(**必填**,用强密码) |
|
||||||
| `HONCHO_AUTH_JWT_SECRET` | JWT 密钥(仅在 `HONCHO_AUTH_USE_AUTH=true` 时需要;用 `python scripts/generate_jwt_secret.py` 生成) |
|
| `HONCHO_AUTH_JWT_SECRET` | JWT 密钥(仅在 `HONCHO_AUTH_USE_AUTH=true` 时需要;用 `python scripts/generate_jwt_secret.py` 生成) |
|
||||||
|
|
||||||
**关键约束**:Honcho 启动时会**校验** `HONCHO_LLM_API_KEY` 非空 — 缺失则立刻退出。这意味着 `env.cfg` 里这一项**不能用占位符**(如 `sk-placeholder`),必须填真实值,否则 `docker compose up -d` 后 deriver 容器会反复重启。
|
**关键约束**:Honcho 启动时会**校验** `HONCHO_LLM_API_KEY` 和 `HONCHO_EMBEDDING_API_KEY` 都非空 — 缺失则立刻退出。这意味着 `env.cfg` 里这两项**不能用占位符**(如 `***`),必须填真实值,否则 `docker compose up -d` 后 deriver/api 容器会反复重启。
|
||||||
|
|
||||||
## 部署步骤
|
## 部署步骤
|
||||||
|
|
||||||
@@ -202,7 +208,7 @@ docker compose -p honcho --env-file ./honcho/env.cfg -f ./honcho/stack.yml resta
|
|||||||
| 数据卷方案 | bind 挂载到 `${Volumes_Path}/{pgdata,redis,source}` | 直观、可直接 `rsync`/`pg_dump`、跨机迁移用 `tar` 整个目录即可 |
|
| 数据卷方案 | bind 挂载到 `${Volumes_Path}/{pgdata,redis,source}` | 直观、可直接 `rsync`/`pg_dump`、跨机迁移用 `tar` 整个目录即可 |
|
||||||
| 端口绑定 | 0.0.0.0,含 DB 5432 | PVE LAN 上其他 VM 也可访问;DB 端口暴露方便外部工具(DBeaver 等)连接 |
|
| 端口绑定 | 0.0.0.0,含 DB 5432 | PVE LAN 上其他 VM 也可访问;DB 端口暴露方便外部工具(DBeaver 等)连接 |
|
||||||
| 认证 | 默认 `HONCHO_AUTH_USE_AUTH=false`(dev 模式) | 本地 LAN 自用,跳过 JWT 校验;公网暴露必须改 `true` |
|
| 认证 | 默认 `HONCHO_AUTH_USE_AUTH=false`(dev 模式) | 本地 LAN 自用,跳过 JWT 校验;公网暴露必须改 `true` |
|
||||||
| LLM 默认 | `gpt-5.4-mini` + `text-embedding-3-small` | OpenAI 兼容、成本低;可换 OpenRouter / vLLM / Ollama 等任意端点 |
|
| LLM 默认 | `gpt-5.4-mini`(主 LLM,OpenAI 兼容);embedding 默认 `Qwen/Qwen3-Embedding-0.6B` 走 SiliconFlow;**备选** 本地 Ollama `qwen3-embedding:0.6b`(零成本、隐私优先) | LLM 走 OpenAI 兼容;embedding 双轨:SiliconFlow(云端,独立 base URL) / Ollama(本地 `host.docker.internal:11434/v1`) |
|
||||||
| Honcho 版本 | 默认 `main`(源码 build),可锁 tag 如 `v3.0.10` | 当前最新稳定版 v3.0.x,支持 peer card、dialectic、dream consolidation |
|
| Honcho 版本 | 默认 `main`(源码 build),可锁 tag 如 `v3.0.10` | 当前最新稳定版 v3.0.x,支持 peer card、dialectic、dream consolidation |
|
||||||
| deriver 必须 | api + deriver 双容器 | deriver 是后台推理 worker,没它记忆功能不工作 |
|
| deriver 必须 | api + deriver 双容器 | deriver 是后台推理 worker,没它记忆功能不工作 |
|
||||||
| PG 认证 | `scram-sha-256` | 比 md5 更安全,`POSTGRES_INITDB_ARGS` 同步设置 `--auth-host` |
|
| PG 认证 | `scram-sha-256` | 比 md5 更安全,`POSTGRES_INITDB_ARGS` 同步设置 `--auth-host` |
|
||||||
|
|||||||
+10
-2
@@ -42,7 +42,10 @@ services:
|
|||||||
- NAMESPACE=${HONCHO_NAMESPACE:-honcho}
|
- NAMESPACE=${HONCHO_NAMESPACE:-honcho}
|
||||||
- EMBED_MESSAGES=${HONCHO_EMBED_MESSAGES:-true}
|
- EMBED_MESSAGES=${HONCHO_EMBED_MESSAGES:-true}
|
||||||
- EMBEDDING_MODEL_CONFIG__TRANSPORT=openai
|
- EMBEDDING_MODEL_CONFIG__TRANSPORT=openai
|
||||||
- EMBEDDING_MODEL_CONFIG__MODEL=${HONCHO_EMBEDDING_MODEL:-text-embedding-3-small}
|
- EMBEDDING_MODEL_CONFIG__MODEL=${HONCHO_EMBEDDING_MODEL:-Qwen/Qwen3-Embedding-0.6B}
|
||||||
|
- EMBEDDING_MODEL_CONFIG__OVERRIDES__BASE_URL=${HONCHO_EMBEDDING_BASE_URL:-https://api.siliconflow.cn/v1}
|
||||||
|
- EMBEDDING_VECTOR_DIMENSIONS=1024
|
||||||
|
- EMBEDDING_API_KEY=${HONCHO_EMBEDDING_API_KEY:-}
|
||||||
- DERIVER_MODEL_CONFIG__TRANSPORT=openai
|
- DERIVER_MODEL_CONFIG__TRANSPORT=openai
|
||||||
- DERIVER_MODEL_CONFIG__MODEL=${HONCHO_DERIVER_MODEL:-gpt-4o-mini}
|
- DERIVER_MODEL_CONFIG__MODEL=${HONCHO_DERIVER_MODEL:-gpt-4o-mini}
|
||||||
- DERIVER_WORKERS=${HONCHO_DERIVER_WORKERS:-1}
|
- DERIVER_WORKERS=${HONCHO_DERIVER_WORKERS:-1}
|
||||||
@@ -88,9 +91,14 @@ services:
|
|||||||
- CACHE_ENABLED=true
|
- CACHE_ENABLED=true
|
||||||
- NAMESPACE=${HONCHO_NAMESPACE:-honcho}
|
- NAMESPACE=${HONCHO_NAMESPACE:-honcho}
|
||||||
- DERIVER_MODEL_CONFIG__TRANSPORT=openai
|
- DERIVER_MODEL_CONFIG__TRANSPORT=openai
|
||||||
- DERIVER_MODEL_CONFIG__MODEL=${HONCHO_DERIVER_MODEL:-gpt-4o-mini}
|
- DERIVER_MODEL_CONFIG__MODEL=${HONCHO_DERIVER_MODEL:-gpt-5.4-mini}
|
||||||
- DERIVER_WORKERS=${HONCHO_DERIVER_WORKERS:-1}
|
- DERIVER_WORKERS=${HONCHO_DERIVER_WORKERS:-1}
|
||||||
|
- EMBEDDING_MODEL_CONFIG__TRANSPORT=openai
|
||||||
|
- EMBEDDING_MODEL_CONFIG__MODEL=${HONCHO_EMBEDDING_MODEL:-Qwen/Qwen3-Embedding-0.6B}
|
||||||
|
- EMBEDDING_MODEL_CONFIG__OVERRIDES__BASE_URL=${HONCHO_EMBEDDING_BASE_URL:-https://api.siliconflow.cn/v1}
|
||||||
|
- EMBEDDING_VECTOR_DIMENSIONS=1024
|
||||||
- LLM_OPENAI_API_KEY=${HONCHO_LLM_API_KEY:?set HONCHO_LLM_API_KEY}
|
- LLM_OPENAI_API_KEY=${HONCHO_LLM_API_KEY:?set HONCHO_LLM_API_KEY}
|
||||||
|
- EMBEDDING_API_KEY=${HONCHO_EMBEDDING_API_KEY:-}
|
||||||
- MODEL_CONFIG__OVERRIDES__BASE_URL=${HONCHO_LLM_BASE_URL:-https://api.openai.com/v1}
|
- MODEL_CONFIG__OVERRIDES__BASE_URL=${HONCHO_LLM_BASE_URL:-https://api.openai.com/v1}
|
||||||
volumes:
|
volumes:
|
||||||
- /etc/timezone:/etc/timezone:ro
|
- /etc/timezone:/etc/timezone:ro
|
||||||
|
|||||||
Reference in New Issue
Block a user