feat: add managed Granite embedding models

GoodBuddy previously required an external OpenAI-compatible endpoint for vector retrieval. It can now install, verify, import, remove, and run the built-in Granite multilingual embedding model in an isolated local inference process, while retaining custom embedding connections and migrating existing settings.

The model connection UI now manages built-in and custom vector connections consistently, reports the actual retrieval path, preserves credentials across failed saves, and renders the vector tab synchronously. Related settings copy, switch styling, metadata typography, and renderer bundle guardrails are aligned with the resulting workflow.

Release note: 新增可管理的内置 Granite 多语言向量模型,支持本地下载、离线导入、连接切换与诊断;同时优化向量设置及相关界面的文案、开关和状态显示。
This commit is contained in:
mesalogo
2026-08-23 11:26:44 +08:00
parent 58d774ae0c
commit 076b3aaa7b
90 changed files with 7820 additions and 1446 deletions
File diff suppressed because it is too large Load Diff
@@ -232,8 +232,7 @@
[ 通用设置 ] [ 魔法笔记 ]
┌ 本地模型 ──────────────────────────────────────────────┐
│ 模型下载源 │
┌ 模型下载源 ────────────────────────────────────────────┐
│ 选择 GoodBuddy 托管本地模型后续下载使用的平台。 │
│ 已安装模型和 ZIP 导入不受影响。 │
│ │
@@ -243,7 +242,6 @@
│ ○ Hugging Face │
│ 适合可以稳定访问 Hugging Face 的网络环境 │
│ │
│ 当前选择:ModelScope │
└────────────────────────────────────────────────────────┘
```
@@ -299,14 +297,10 @@
- 当前模型切换。
- 活动下载取消。
### 7.5 活动下载说明
### 7.5 活动下载
来源选项下方持续说明:
> 正在进行的模型下载会继续使用启动时的来源;新的下载使用当前选择。
首期不为这段说明新增跨语音、OCR 和向量管理器的活动任务聚合 IPC。具体活动操作继续在
对应模型卡显示冻结来源、进度和取消入口。
不常驻展示活动下载说明。具体下载操作在对应模型卡显示进度和取消入口;需要显示来源时
必须使用任务启动时冻结的来源。切换全局来源不改变已经开始的操作。
---
@@ -651,12 +645,12 @@ resolveModelDownloadPackage(files, source)
### 12.1 来源状态
语音、OCR、向量和后续模型卡统一显示:
语音和 OCR 的当前模型详情各保留一个全局下载源标签。向量内置连接不重复显示平台功能中
已经明确的全局来源,也不显示固定本地安装路径;下载仍使用已保存的全局来源。
- 当前全局下载源。
- 当前模型在该来源是否可下载。
- 活动操作的冻结来源。
- 已安装模型的安装和校验状态。
所有模型管理界面都显示当前模型是否可下载、活动操作的进度与取消入口,以及已安装模型
的安装和校验状态。活动操作需要显示来源时,使用任务启动时冻结的来源,不能读取后来
切换的全局值。
未安装且来源可用:
@@ -5,8 +5,8 @@
| 项目 | 内容 |
| --- | --- |
| 状态 | 实施中 |
| 版本 | 0.1 |
| 日期 | 2026-08-11 |
| 版本 | 0.2 |
| 日期 | 2026-08-22 |
| 适用产品 | GoodBuddy 桌面端 |
| 实施范围 | 第一阶段:可用、可见、可诊断;第二阶段:可调、可优化、可维护 |
| 相关设计 | [本地文本向量模型与连接设计](../../architecture/local-text-embedding-model-design.md) |
@@ -40,7 +40,7 @@ OpenAI 兼容向量模型、RRF 混合检索、知识图谱、任务状态和来
预检索,不能只依赖提示词要求模型调用工具。
4. 知识库新建后不默认启用全部已有知识库;对话中的范围继续由用户显式选择。
5. 向量服务不可用时保留全文与中文检索,但必须返回明确降级状态。这是可见的检索通道
降级,不得自动切换应用托管模型、Ollama、云端 Provider 或其他向量模型。
降级,不得自动切换内置连接、用户添加的 OpenAI 兼容连接或其他向量模型。
6. 中文召回使用应用内可控的 CJK n-gram 索引,不新增远程服务依赖。
7. 混合检索保留 RRF 候选融合,并增加本地确定性重排、可选的
Cohere/Jina 兼容学习型重排、最低相关度和上下文预算。学习型重排失败时
@@ -60,6 +60,12 @@ OpenAI 兼容向量模型、RRF 混合检索、知识图谱、任务状态和来
用户配置决定。
14. Ask 的运行时边界保持只读。知识库内容始终被标记为不可信证据,
不能成为系统指令。
15. 向量连接是 GoodBuddy Main 管理的知识服务依赖,不是 Agent Runtime 模型。它不进入
直连模型、OpenCode、Continue、DeepSeek Harness、远程 Runtime 或项目 Runtime 的
模型选择、配置和凭据边界。
16. Runtime 只能获得 Main 检索后选出的有界文本证据、来源引用和脱敏诊断,不能获得
Embedding Provider、连接 Profile、Endpoint、API Key、模型目录、Tokenizer、原始向量
或索引 Fingerprint。
## 3. 目标
@@ -102,6 +108,9 @@ OpenAI 兼容向量模型、RRF 混合检索、知识图谱、任务状态和来
- 自动问题生成、FAQ 生成和训练数据标注平台。
- 完整 RAG 离线评测平台。第二阶段只提供手动检索测试与可导出的诊断信息。
- 在应用内高保真渲染所有原始 Office 和 PDF 文档。
- 把向量连接用作 LLM、Agent Runtime 模型或 Runtime 模型网关。
- 让 Runtime 直接调用 Embeddings Endpoint、内置推理进程或向量数据库。
- 未经独立设计就把知识库向量连接扩展到记忆、自动化、项目文件搜索或其他应用服务。
## 5. 竞品基线与 GoodBuddy 定位
@@ -160,10 +169,25 @@ OpenAI 兼容向量模型、RRF 混合检索、知识图谱、任务状态和来
“检索测试”是当前知识库的高频诊断操作,通过知识库标题区次操作打开独立
工作台,不新增第五个一级页签。
全局向量模型仍在“设置 → 模型连接 → 向量模型”中配置。应用托管本地模型、
用户自行安装的 Ollama/自托管服务和云端兼容服务的界面、数据路径及切换语义以
全局向量模型仍在“设置 → 模型连接 → 向量模型”中配置。GoodBuddy 内置连接和用户添加的
OpenAI 兼容连接使用同一连接列表;其界面、数据路径及切换语义以
[本地文本向量模型与连接设计](../../architecture/local-text-embedding-model-design.md)
为准,知识库页面只显示当前模型、索引兼容性、覆盖率和重建操作。
为准,知识库页面只显示当前模型、索引兼容性、覆盖率和重建操作。“模型连接”是设置入口
名称,不表示向量连接可以分配给 Agent Runtime;项目 Runtime 和 Agent Runtime 的模型
选择中不显示向量连接。
知识检索与 Runtime 的关系固定为:
```text
用户问题
→ Main / KnowledgeService 使用当前向量连接检索
→ Main 生成有界文本证据、引用和检索诊断
→ 当前 Runtime 仅消费这些不可信检索结果
```
`always` 模式由 Main 在启动 Runtime 前完成检索;`auto` 模式中的 `knowledge_search`
也只允许 Runtime 调用 Main 的有界知识工具。两种模式都不把向量连接、凭据、模型文件、
Tokenizer、原始向量或索引访问能力传入 Runtime。切换 Runtime 不改变当前向量连接。
对话输入区的知识范围弹层包含:
@@ -567,7 +591,12 @@ GoodBuddy 不上传私人检索查询或文档内容。本地诊断至少记录
- “每次先检索”在 Runtime 启动前产生检索诊断和引用,即使模型未调用工具。
- 未配置向量模型时,中文改写问题仍能通过 CJK 索引召回相关分块。
- 向量查询失败时回答可继续,界面明确显示已降级。
- 应用托管模型、Ollama 和云端向量连接之间不会自动切换;实际数据路径持续可见。
- 内置连接和用户添加的 OpenAI 兼容连接之间不会自动切换;用户连接的实际数据去向持续
可见,内置连接不重复展示固定本地路径。
- 项目 Runtime 和 Agent Runtime 的模型选择不显示向量连接。
- Runtime 只获得有界文本证据、引用和脱敏诊断,不获得向量 Provider、凭据或原始向量。
- 切换直连模型、OpenCode、Continue、DeepSeek Harness 或远程 Runtime 不改变当前向量
连接。
- 10,000 个分块的向量测试能够返回正确 Top K,不出现固定上限空结果。
- 同名模型切换端点后,不会读取 Fingerprint 不匹配的旧向量。
- 重建失败时,上一版已就绪向量仍能继续召回。