dsh-data-domain-knowledge 0.1.0-alpha.12 → 0.1.0-alpha.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -7
- package/lib/client.js +64 -7
- package/lib/types/environment/install.d.ts +2 -1
- package/lib/types/environment/install.d.ts.map +1 -1
- package/lib/types/environment/install.js +20 -11
- package/lib/types/environment/install.js.map +1 -1
- package/lib/types/environment/manifest.d.ts +203 -12
- package/lib/types/environment/manifest.d.ts.map +1 -1
- package/lib/types/environment/manifest.js +23 -21
- package/lib/types/environment/manifest.js.map +1 -1
- package/lib/types/environment/model-catalog.d.ts +191 -0
- package/lib/types/environment/model-catalog.d.ts.map +1 -0
- package/lib/types/environment/model-catalog.js +91 -0
- package/lib/types/environment/model-catalog.js.map +1 -0
- package/lib/types/environment/selection.d.ts +9 -0
- package/lib/types/environment/selection.d.ts.map +1 -0
- package/lib/types/environment/selection.js +29 -0
- package/lib/types/environment/selection.js.map +1 -0
- package/lib/types/environment/service.d.ts +1 -1
- package/lib/types/environment/service.d.ts.map +1 -1
- package/lib/types/environment/service.js +54 -33
- package/lib/types/environment/service.js.map +1 -1
- package/lib/types/environment/types.d.ts +7 -1
- package/lib/types/environment/types.d.ts.map +1 -1
- package/lib/types/images.d.ts +26 -0
- package/lib/types/images.d.ts.map +1 -0
- package/lib/types/images.js +196 -0
- package/lib/types/images.js.map +1 -0
- package/lib/types/index.d.ts.map +1 -1
- package/lib/types/index.js +25 -3
- package/lib/types/index.js.map +1 -1
- package/lib/types/layout.d.ts +2 -0
- package/lib/types/layout.d.ts.map +1 -1
- package/lib/types/layout.js +2 -0
- package/lib/types/layout.js.map +1 -1
- package/lib/types/runtime.d.ts +9 -3
- package/lib/types/runtime.d.ts.map +1 -1
- package/lib/types/runtime.js +73 -16
- package/lib/types/runtime.js.map +1 -1
- package/lib/types/store/migrate.d.ts.map +1 -1
- package/lib/types/store/migrate.js +5 -4
- package/lib/types/store/migrate.js.map +1 -1
- package/lib/types/types.d.ts +1 -1
- package/lib/types/types.d.ts.map +1 -1
- package/lib/types/types.js +3 -4
- package/lib/types/types.js.map +1 -1
- package/package.json +1 -1
- package/python/prepare-models.py +1 -1
- package/scripts/setup-embedding.sh +11 -2
- package/src/client/EnvironmentSetup.tsx +54 -8
- package/src/environment/install.ts +22 -10
- package/src/environment/manifest.ts +25 -22
- package/src/environment/model-catalog.ts +105 -0
- package/src/environment/selection.ts +29 -0
- package/src/environment/service.ts +46 -26
- package/src/environment/types.ts +5 -1
- package/src/images.ts +203 -0
- package/src/index.ts +30 -4
- package/src/layout.ts +2 -0
- package/src/runtime.ts +68 -16
- package/src/store/migrate.ts +4 -4
- package/src/types.ts +4 -5
package/README.md
CHANGED
|
@@ -16,10 +16,11 @@ Tita Agent 的固定数据根目录是 `$DSH_HOME/tita-agent`(默认 `~/.dsh/t
|
|
|
16
16
|
|
|
17
17
|
## 首次运行环境准备
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
向量模型和重排模型是部署必需项。打开 Tita 设置 → 环境准备 → 一键安装 / 修复。
|
|
20
|
+
系统用 DSH 自带的 Python 3.12 创建专属依赖环境,不另行下载 Python;再下载固定 revision 的 `BAAI/bge-small-zh-v1.5`
|
|
21
21
|
(512 维)和 `BAAI/bge-reranker-base`,然后运行真实推理自检。阶段、错误和下载日志
|
|
22
22
|
可查看;下载失败可以重试。未就绪时阻止编译和知识召回,来源与历史内容仍可保存、读取。
|
|
23
|
+
自检不单独检查 `sentencepiece`;依赖安装失败会显示安装错误,模型真实推理失败会显示对应模型的错误。
|
|
23
24
|
|
|
24
25
|
命令行入口:
|
|
25
26
|
|
|
@@ -29,7 +30,7 @@ pnpm --filter dsh-data-domain-knowledge environment:check
|
|
|
29
30
|
pnpm --filter dsh-data-domain-knowledge doctor
|
|
30
31
|
```
|
|
31
32
|
|
|
32
|
-
|
|
33
|
+
自检失败时命令返回非零退出码。依赖装在 Tita 专属虚拟环境中,不修改系统 Python,也不隐式运行 npm postinstall
|
|
33
34
|
模型下载。已有知识在准备完成后需重新编译;宿主无需重启。自定义路径保留,使用默认
|
|
34
35
|
资源时把高级设置中的路径恢复为空,并使用匹配的向量维度。
|
|
35
36
|
细节见 [运行环境准备与自检](../../docs/current/16-知识运行环境准备与自检.md)。
|
|
@@ -228,20 +229,22 @@ SourceRaw → Knowledge → Wiki Card → Wiki Note → FTS / Vector / Rerank
|
|
|
228
229
|
|
|
229
230
|
## 本地启用 WeMM
|
|
230
231
|
|
|
231
|
-
|
|
232
|
+
推荐使用「环境准备」面板选择 WeMM 量化版或腾讯 BF16 版。面板会安装所选模型并自动
|
|
233
|
+
设置匹配的维度。也可在 Apple Silicon 上执行旧版辅助脚本(在插件包目录内):
|
|
232
234
|
|
|
233
235
|
```bash
|
|
234
236
|
bash scripts/setup-embedding.sh
|
|
235
237
|
```
|
|
236
238
|
|
|
237
|
-
|
|
239
|
+
脚本会用 `DSH_PYTHON`(未设置时为系统 `python3`)建立隔离依赖环境,把模型放到
|
|
238
240
|
`~/.dsh/tita-agent/resource/models/WeMM-Embedding-2B-Quantized`。新配置会自动发现这两个路径;
|
|
239
|
-
|
|
241
|
+
当前脚本安装的是 `ewin-reg` 社区维护的 INT4 / FP8 量化版,不是腾讯官方发行,模型卡将许可标为 `other`。
|
|
242
|
+
它的输出维度为 2048。设置位于 Tita Data Agent → Agent 概览 →「构建」节点:
|
|
240
243
|
|
|
241
244
|
- Provider:`WeMM Python(本地)`
|
|
242
245
|
- Python:`~/.dsh/tita-agent/resource/python/bin/python`
|
|
243
246
|
- Model:`~/.dsh/tita-agent/resource/models/WeMM-Embedding-2B-Quantized`
|
|
244
|
-
- 维度:`
|
|
247
|
+
- 维度:`2048`
|
|
245
248
|
- 设备:`自动(优先 MPS)`
|
|
246
249
|
|
|
247
250
|
知识库默认保存在 `~/.dsh/tita-agent/domain_knowledge/<库 id>`。点击「编译」后,
|
|
@@ -328,6 +331,11 @@ HTTP `GET /knowledge/bases` 在返回前先刷新。
|
|
|
328
331
|
| `derived.db` | wikiNotes、知识图谱、检索索引 | 可重新编译 |
|
|
329
332
|
| `assets/` | 来源图片与附件 | 丢失对应素材 |
|
|
330
333
|
|
|
334
|
+
知识库提供 `images.publish` 工具作为本地图床。它接收宿主本地 `file_path` 或 Base64 图片,按
|
|
335
|
+
`assets/<SHA-256 前 12 位>/<文件名>` 写入当前知识库,并返回 `/knowledge/assets/<kb>/<路径>` 地址
|
|
336
|
+
和 Markdown 图片引用。独立图床图片不要求来源或卡片引用,也不会被孤儿清理误删。工具会校验图片格式和 MIME,
|
|
337
|
+
单张图片上限为 20 MiB;写入不需要用户审批。
|
|
338
|
+
|
|
331
339
|
`resource/` 保存模型、Python 环境与 `knowledge-bases.json`。
|
|
332
340
|
如果资源目录没有本地 Python 或模型,就使用 `python3` 或 Hugging Face 模型名。
|
|
333
341
|
|
package/lib/client.js
CHANGED
|
@@ -21507,6 +21507,9 @@ var import_jsx_runtime22 = require("react/jsx-runtime");
|
|
|
21507
21507
|
function Select2({ ...props }) {
|
|
21508
21508
|
return (0, import_jsx_runtime22.jsx)(dist_exports8.Root, { "data-slot": "select", ...props });
|
|
21509
21509
|
}
|
|
21510
|
+
function SelectGroup3({ className, ...props }) {
|
|
21511
|
+
return (0, import_jsx_runtime22.jsx)(dist_exports8.Group, { "data-slot": "select-group", className: cn("scroll-my-1 p-1", className), ...props });
|
|
21512
|
+
}
|
|
21510
21513
|
function SelectValue3({ ...props }) {
|
|
21511
21514
|
return (0, import_jsx_runtime22.jsx)(dist_exports8.Value, { "data-slot": "select-value", ...props });
|
|
21512
21515
|
}
|
|
@@ -21516,6 +21519,9 @@ function SelectTrigger3({ className, size: size5 = "default", children, ...props
|
|
|
21516
21519
|
function SelectContent3({ className, children, position: position2 = "item-aligned", align = "center", ...props }) {
|
|
21517
21520
|
return (0, import_jsx_runtime22.jsx)(dist_exports8.Portal, { children: (0, import_jsx_runtime22.jsxs)(dist_exports8.Content, { "data-slot": "select-content", "data-align-trigger": position2 === "item-aligned", className: cn("relative z-50 max-h-(--radix-select-content-available-height) min-w-36 origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[align-trigger=true]:animate-none data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95", position2 === "popper" && "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1", className), position: position2, align, ...props, children: [(0, import_jsx_runtime22.jsx)(SelectScrollUpButton3, {}), (0, import_jsx_runtime22.jsx)(dist_exports8.Viewport, { "data-position": position2, className: cn("data-[position=popper]:h-(--radix-select-trigger-height) data-[position=popper]:w-full data-[position=popper]:min-w-(--radix-select-trigger-width)", position2 === "popper" && ""), children }), (0, import_jsx_runtime22.jsx)(SelectScrollDownButton3, {})] }) });
|
|
21518
21521
|
}
|
|
21522
|
+
function SelectLabel3({ className, ...props }) {
|
|
21523
|
+
return (0, import_jsx_runtime22.jsx)(dist_exports8.Label, { "data-slot": "select-label", className: cn("px-1.5 py-1 text-xs text-muted-foreground", className), ...props });
|
|
21524
|
+
}
|
|
21519
21525
|
function SelectItem3({ className, children, ...props }) {
|
|
21520
21526
|
return (0, import_jsx_runtime22.jsxs)(dist_exports8.Item, { "data-slot": "select-item", className: cn("relative flex w-full cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2", className), ...props, children: [(0, import_jsx_runtime22.jsx)("span", { className: "pointer-events-none absolute right-2 flex size-4 items-center justify-center", children: (0, import_jsx_runtime22.jsx)(dist_exports8.ItemIndicator, { children: (0, import_jsx_runtime22.jsx)(Check, { className: "pointer-events-none" }) }) }), (0, import_jsx_runtime22.jsx)(dist_exports8.ItemText, { children })] });
|
|
21521
21527
|
}
|
|
@@ -22378,10 +22384,10 @@ function useKnowledgeEnvironment(visible, revision) {
|
|
|
22378
22384
|
window.removeEventListener("focus", onFocus);
|
|
22379
22385
|
};
|
|
22380
22386
|
}, [visible, revision, busy, refresh]);
|
|
22381
|
-
const prepare = (0, import_react8.useCallback)(async (action) => {
|
|
22387
|
+
const prepare = (0, import_react8.useCallback)(async (action, selection) => {
|
|
22382
22388
|
setSubmitting(true);
|
|
22383
22389
|
try {
|
|
22384
|
-
setView(await environmentRequest({ method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ action }) }));
|
|
22390
|
+
setView(await environmentRequest({ method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ action, ...selection ? { selection } : {} }) }));
|
|
22385
22391
|
setError(void 0);
|
|
22386
22392
|
} catch (cause) {
|
|
22387
22393
|
setError(cause instanceof Error ? cause.message : String(cause));
|
|
@@ -22391,28 +22397,54 @@ function useKnowledgeEnvironment(visible, revision) {
|
|
|
22391
22397
|
}, []);
|
|
22392
22398
|
return { view, error: error2, busy, prepare };
|
|
22393
22399
|
}
|
|
22400
|
+
function ModelSelect({ id: id3, label, value, options, disabled, onChange }) {
|
|
22401
|
+
const chosen = options.find((option) => option.id === value);
|
|
22402
|
+
const descriptionId = `${id3}-description`;
|
|
22403
|
+
return /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: "grid min-w-0 gap-1.5", children: [
|
|
22404
|
+
/* @__PURE__ */ (0, import_jsx_runtime30.jsx)("label", { htmlFor: id3, className: "text-xs font-medium text-tita-ink", children: label }),
|
|
22405
|
+
/* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(Select2, { value, onValueChange: onChange, disabled, children: [
|
|
22406
|
+
/* @__PURE__ */ (0, import_jsx_runtime30.jsx)(SelectTrigger3, { id: id3, "aria-describedby": descriptionId, className: "w-full", children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(SelectValue3, {}) }),
|
|
22407
|
+
/* @__PURE__ */ (0, import_jsx_runtime30.jsx)(SelectContent4, { position: "popper", align: "start", className: "max-h-64", children: /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(SelectGroup3, { children: [
|
|
22408
|
+
/* @__PURE__ */ (0, import_jsx_runtime30.jsx)(SelectLabel3, { children: "\u6309\u8D44\u6E90\u5360\u7528\u4ECE\u4F4E\u5230\u9AD8" }),
|
|
22409
|
+
options.map((option) => /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(SelectItem3, { value: option.id, children: [
|
|
22410
|
+
option.label,
|
|
22411
|
+
" \xB7 ",
|
|
22412
|
+
option.download
|
|
22413
|
+
] }, option.id))
|
|
22414
|
+
] }) })
|
|
22415
|
+
] }),
|
|
22416
|
+
/* @__PURE__ */ (0, import_jsx_runtime30.jsx)("p", { id: descriptionId, className: "m-0 text-xs leading-relaxed text-tita-ink-muted", children: chosen ? `${chosen.description} \u4E0B\u8F7D\u7EA6 ${chosen.download}${chosen.dimension ? `\uFF0C\u8F93\u51FA ${chosen.dimension} \u7EF4` : ""}\u3002` : "\u8BF7\u9009\u62E9\u6A21\u578B\u3002" }),
|
|
22417
|
+
chosen?.modelCardUrl && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("a", { href: chosen.modelCardUrl, target: "_blank", rel: "noreferrer", className: "w-fit text-xs text-tita-ink underline underline-offset-2", children: "\u67E5\u770B\u6A21\u578B\u5361\u4E0E\u8BB8\u53EF" })
|
|
22418
|
+
] });
|
|
22419
|
+
}
|
|
22394
22420
|
function EnvironmentNotice({ controller, onOpen }) {
|
|
22395
22421
|
const { view, error: error2, busy } = controller;
|
|
22396
22422
|
if (!error2 && (!view || view.report.state === "ready")) return null;
|
|
22397
22423
|
return /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: "mx-3 mt-2 flex shrink-0 items-center gap-2 border-b border-tita-line pb-2 text-xs text-tita-ink", role: "status", children: [
|
|
22398
22424
|
busy ? /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(LoaderCircle, { size: 14, className: "tita-spin shrink-0" }) : /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(CircleAlert, { size: 14, className: "shrink-0 text-tita-warning" }),
|
|
22399
|
-
/* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { className: "min-w-0 flex-1", children: error2 ? "\u73AF\u5883\u72B6\u6001\u8BFB\u53D6\u5931\u8D25" : busy ? view?.job?.stage ?? "\u6B63\u5728\u68C0\u67E5\u8FD0\u884C\u73AF\u5883" : "\u9996\u6B21\u4F7F\u7528\u524D\uFF0C\u8BF7\
|
|
22425
|
+
/* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { className: "min-w-0 flex-1", children: error2 ? "\u73AF\u5883\u72B6\u6001\u8BFB\u53D6\u5931\u8D25" : busy ? view?.job?.stage ?? "\u6B63\u5728\u68C0\u67E5\u8FD0\u884C\u73AF\u5883" : "\u9996\u6B21\u4F7F\u7528\u524D\uFF0C\u8BF7\u51C6\u5907\u5411\u91CF\u548C\u91CD\u6392\u6A21\u578B" }),
|
|
22400
22426
|
/* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Button, { variant: "outline", size: "sm", onClick: onOpen, children: "\u73AF\u5883\u51C6\u5907" })
|
|
22401
22427
|
] });
|
|
22402
22428
|
}
|
|
22403
22429
|
function EnvironmentSetup({ controller }) {
|
|
22404
22430
|
const { view, error: error2, busy, prepare } = controller;
|
|
22405
22431
|
const [details, setDetails] = (0, import_react8.useState)(false);
|
|
22432
|
+
const [selection, setSelection] = (0, import_react8.useState)();
|
|
22433
|
+
(0, import_react8.useEffect)(() => {
|
|
22434
|
+
if (view) setSelection(view.selection);
|
|
22435
|
+
}, [view?.selection.embedding, view?.selection.rerank]);
|
|
22406
22436
|
const ready = view?.report.state === "ready";
|
|
22407
22437
|
const job = view?.job;
|
|
22408
22438
|
const running = job?.state === "running";
|
|
22409
22439
|
const failure = job?.state === "failed" ? job.error : void 0;
|
|
22440
|
+
const chosen = selection ?? view?.selection;
|
|
22441
|
+
const selectionChanged = Boolean(chosen && view && (chosen.embedding !== view.selection.embedding || chosen.rerank !== view.selection.rerank));
|
|
22410
22442
|
return /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("section", { id: "tita-environment", tabIndex: -1, "aria-labelledby": "tita-environment-title", className: "tita-settingsSection", children: [
|
|
22411
22443
|
/* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: "tita-settingsSectionHeader", children: [
|
|
22412
22444
|
/* @__PURE__ */ (0, import_jsx_runtime30.jsx)("h3", { id: "tita-environment-title", children: "\u73AF\u5883\u51C6\u5907" }),
|
|
22413
22445
|
/* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { className: cn("text-xs", ready ? "text-tita-success" : "text-tita-ink-muted"), role: "status", "aria-live": "polite", children: ready ? "\u5DF2\u5C31\u7EEA" : busy ? "\u8FDB\u884C\u4E2D" : "\u5FC5\u9700" })
|
|
22414
22446
|
] }),
|
|
22415
|
-
/* @__PURE__ */ (0, import_jsx_runtime30.jsx)("p", { className: "m-0 mb-3 text-xs leading-relaxed text-tita-ink-muted", children: "
|
|
22447
|
+
/* @__PURE__ */ (0, import_jsx_runtime30.jsx)("p", { className: "m-0 mb-3 text-xs leading-relaxed text-tita-ink-muted", children: "\u9996\u6B21\u51C6\u5907\u9700\u8981\u8054\u7F51\u4E0B\u8F7D\u6240\u9009\u6A21\u578B\u548C\u63A8\u7406\u4F9D\u8D56\u3002\u6A21\u578B\u4FDD\u5B58\u5728 Tita \u4E13\u5C5E\u76EE\u5F55\uFF0C\u5E76\u901A\u8FC7\u5B9E\u9645\u63A8\u7406\u81EA\u68C0\u540E\u542F\u7528\u3002" }),
|
|
22416
22448
|
/* @__PURE__ */ (0, import_jsx_runtime30.jsx)("ul", { className: "m-0 grid list-none gap-3 p-0", "aria-label": "\u8FD0\u884C\u73AF\u5883\u68C0\u67E5\u9879", children: (view?.report.items ?? []).map((item) => /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("li", { className: "flex min-w-0 items-start gap-2", children: [
|
|
22417
22449
|
item.state === "ready" ? /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Check, { size: 14, className: "mt-0.5 shrink-0 text-tita-success" }) : item.state === "checking" ? /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(LoaderCircle, { size: 14, className: "tita-spin mt-0.5 shrink-0" }) : /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(CircleAlert, { size: 14, className: "mt-0.5 shrink-0 text-tita-warning" }),
|
|
22418
22450
|
/* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: "min-w-0 flex-1 text-xs leading-relaxed", children: [
|
|
@@ -22420,6 +22452,31 @@ function EnvironmentSetup({ controller }) {
|
|
|
22420
22452
|
/* @__PURE__ */ (0, import_jsx_runtime30.jsx)("p", { className: "m-0 break-words text-tita-ink-muted", children: item.message })
|
|
22421
22453
|
] })
|
|
22422
22454
|
] }, item.id)) }),
|
|
22455
|
+
view && chosen && /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: "my-4 grid gap-3", "aria-label": "\u6A21\u578B\u9009\u62E9", children: [
|
|
22456
|
+
/* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
|
|
22457
|
+
ModelSelect,
|
|
22458
|
+
{
|
|
22459
|
+
id: "tita-embedding-model",
|
|
22460
|
+
label: "\u5411\u91CF\u6A21\u578B",
|
|
22461
|
+
value: chosen.embedding,
|
|
22462
|
+
options: view.models.embedding,
|
|
22463
|
+
disabled: busy,
|
|
22464
|
+
onChange: (value) => setSelection((current2) => ({ ...current2 ?? view.selection, embedding: value }))
|
|
22465
|
+
}
|
|
22466
|
+
),
|
|
22467
|
+
/* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
|
|
22468
|
+
ModelSelect,
|
|
22469
|
+
{
|
|
22470
|
+
id: "tita-rerank-model",
|
|
22471
|
+
label: "\u91CD\u6392\u6A21\u578B",
|
|
22472
|
+
value: chosen.rerank,
|
|
22473
|
+
options: view.models.rerank,
|
|
22474
|
+
disabled: busy,
|
|
22475
|
+
onChange: (value) => setSelection((current2) => ({ ...current2 ?? view.selection, rerank: value }))
|
|
22476
|
+
}
|
|
22477
|
+
),
|
|
22478
|
+
selectionChanged && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("p", { className: "m-0 text-xs leading-relaxed text-tita-warning", role: "status", children: "\u5B89\u88C5\u5E76\u901A\u8FC7\u5B9E\u9645\u63A8\u7406\u81EA\u68C0\u540E\u624D\u4F1A\u5207\u6362\u5F53\u524D\u6A21\u578B\u3002\u66F4\u6539\u5411\u91CF\u6A21\u578B\u540E\uFF0C\u5DF2\u6709\u77E5\u8BC6\u9700\u8981\u91CD\u65B0\u7F16\u8BD1\u3002" })
|
|
22479
|
+
] }),
|
|
22423
22480
|
!view && !error2 && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("p", { className: "text-xs text-tita-ink-muted", role: "status", children: "\u6B63\u5728\u8BFB\u53D6\u73AF\u5883\u72B6\u6001\u2026" }),
|
|
22424
22481
|
running && /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("p", { className: "my-3 text-xs text-tita-ink", role: "status", "aria-live": "polite", children: [
|
|
22425
22482
|
job.stage,
|
|
@@ -22429,12 +22486,12 @@ function EnvironmentSetup({ controller }) {
|
|
|
22429
22486
|
job?.state === "cancelled" && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("p", { className: "my-3 text-xs text-tita-ink-muted", role: "status", children: job.error }),
|
|
22430
22487
|
/* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: "mt-4 flex flex-wrap gap-2", children: [
|
|
22431
22488
|
/* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(Button, { size: "sm", variant: ready ? "outline" : "default", disabled: busy, onClick: () => {
|
|
22432
|
-
void prepare("install");
|
|
22489
|
+
void prepare("install", chosen);
|
|
22433
22490
|
}, children: [
|
|
22434
22491
|
/* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Download, { size: 13 }),
|
|
22435
|
-
ready ? "\u4FEE\u590D\
|
|
22492
|
+
selectionChanged ? "\u5B89\u88C5\u6240\u9009\u6A21\u578B" : ready ? "\u4FEE\u590D\u5F53\u524D\u73AF\u5883" : job?.state === "failed" || job?.state === "cancelled" ? "\u91CD\u8BD5\u51C6\u5907" : "\u4E00\u952E\u5B89\u88C5 / \u4FEE\u590D"
|
|
22436
22493
|
] }),
|
|
22437
|
-
/* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(Button, { variant: "outline", size: "sm", disabled: busy, onClick: () => {
|
|
22494
|
+
/* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(Button, { variant: "outline", size: "sm", disabled: busy || selectionChanged, onClick: () => {
|
|
22438
22495
|
void prepare("check");
|
|
22439
22496
|
}, children: [
|
|
22440
22497
|
/* @__PURE__ */ (0, import_jsx_runtime30.jsx)(RefreshCw, { size: 13 }),
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import { type ModelSelection } from './model-catalog.js';
|
|
1
2
|
import { runProcess } from './process.js';
|
|
2
3
|
export declare const requirementsFile: string;
|
|
3
4
|
export declare const setupScript: string;
|
|
4
5
|
export declare function managedPython(root: string): string;
|
|
5
|
-
export declare function installRequiredEnvironment(root: string, signal: AbortSignal, stage: (label: string) => void, log: (line: string) => void, runner?: typeof runProcess): Promise<void>;
|
|
6
|
+
export declare function installRequiredEnvironment(root: string, signal: AbortSignal, stage: (label: string) => void, log: (line: string) => void, runner?: typeof runProcess, selection?: ModelSelection, basePython?: string): Promise<void>;
|
|
6
7
|
//# sourceMappingURL=install.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../src/environment/install.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,UAAU,EAAuB,MAAM,cAAc,CAAA;AAE9D,eAAO,MAAM,gBAAgB,QAA8E,CAAA;AAC3G,eAAO,MAAM,WAAW,QAA+E,CAAA;AACvG,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAgI;AA6EnL,wBAAsB,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EAAE,MAAM,GAAE,OAAO,UAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../src/environment/install.ts"],"names":[],"mappings":"AAOA,OAAO,EAA2B,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAEjF,OAAO,EAAE,UAAU,EAAuB,MAAM,cAAc,CAAA;AAE9D,eAAO,MAAM,gBAAgB,QAA8E,CAAA;AAC3G,eAAO,MAAM,WAAW,QAA+E,CAAA;AACvG,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAgI;AA6EnL,wBAAsB,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EAAE,MAAM,GAAE,OAAO,UAAuB,EAAE,SAAS,GAAE,cAAwC,EAAE,UAAU,SAAsC,GAAG,OAAO,CAAC,IAAI,CAAC,CAsC7S"}
|
|
@@ -4,7 +4,9 @@ import { chmod, copyFile, mkdir, open, readFile, readdir, rename, rm, writeFile
|
|
|
4
4
|
import { homedir } from 'node:os';
|
|
5
5
|
import { dirname, join } from 'node:path';
|
|
6
6
|
import { fileURLToPath } from 'node:url';
|
|
7
|
-
import {
|
|
7
|
+
import { modelsForSelection, UV_VERSION } from './manifest.js';
|
|
8
|
+
import { DEFAULT_MODEL_SELECTION } from './model-catalog.js';
|
|
9
|
+
import { writeModelSelection } from './selection.js';
|
|
8
10
|
import { runProcess } from './process.js';
|
|
9
11
|
export const requirementsFile = fileURLToPath(new URL('../../../python/requirements.txt', import.meta.url));
|
|
10
12
|
export const setupScript = fileURLToPath(new URL('../../../python/prepare-models.py', import.meta.url));
|
|
@@ -121,20 +123,25 @@ async function installLock(root) {
|
|
|
121
123
|
}
|
|
122
124
|
throw new Error('无法获取环境安装锁');
|
|
123
125
|
}
|
|
124
|
-
export async function installRequiredEnvironment(root, signal, stage, log, runner = runProcess) {
|
|
126
|
+
export async function installRequiredEnvironment(root, signal, stage, log, runner = runProcess, selection = DEFAULT_MODEL_SELECTION, basePython = process.env.DSH_PYTHON || 'python3') {
|
|
125
127
|
await mkdir(root, { recursive: true });
|
|
126
128
|
const unlock = await installLock(root);
|
|
127
|
-
const env = { ...process.env,
|
|
129
|
+
const env = { ...process.env, UV_CACHE_DIR: join(root, 'cache', 'uv'), HF_HOME: join(root, 'cache', 'huggingface'), PIP_DISABLE_PIP_VERSION_CHECK: '1' };
|
|
128
130
|
const run = (command, args, extra = {}) => runner(command, args, { env, signal, timeoutMs: 30 * 60_000, onLine: log, ...extra });
|
|
129
131
|
try {
|
|
130
|
-
stage('
|
|
132
|
+
stage('准备模型运行时');
|
|
131
133
|
const uv = await ensureUv(root, signal, log, runner);
|
|
134
|
+
const versionOutput = await run(basePython, ['-c', 'import sys; print(f"{sys.version_info.major}.{sys.version_info.minor}")'], { timeoutMs: 15_000 });
|
|
135
|
+
const baseVersion = versionOutput.trim().split(/\r?\n/).at(-1);
|
|
136
|
+
if (!baseVersion || !/^3\.(10|11|12|13)$/.test(baseVersion)) {
|
|
137
|
+
throw new Error(`DSH Python 版本不受支持:${baseVersion || '无法读取'};需要 Python 3.10–3.13`);
|
|
138
|
+
}
|
|
132
139
|
const python = managedPython(root);
|
|
133
140
|
let compatible = false;
|
|
134
141
|
if (existsSync(python)) {
|
|
135
142
|
try {
|
|
136
|
-
await run(python, ['-c', 'import sys;
|
|
137
|
-
compatible =
|
|
143
|
+
const output = await run(python, ['-c', 'import sys; print(f"{sys.version_info.major}.{sys.version_info.minor}")'], { timeoutMs: 15_000 });
|
|
144
|
+
compatible = output.trim().split(/\r?\n/).at(-1) === baseVersion;
|
|
138
145
|
}
|
|
139
146
|
catch {
|
|
140
147
|
if (signal.aborted)
|
|
@@ -145,16 +152,18 @@ export async function installRequiredEnvironment(root, signal, stage, log, runne
|
|
|
145
152
|
if (existsSync(join(root, 'python'))) {
|
|
146
153
|
const backup = join(root, `python-backup-${randomUUID()}`);
|
|
147
154
|
await rename(join(root, 'python'), backup);
|
|
148
|
-
log(
|
|
155
|
+
log(`原模型运行环境不可用,已保留备份:${backup}`);
|
|
149
156
|
}
|
|
150
|
-
await run(uv, ['venv', '--python',
|
|
157
|
+
await run(uv, ['venv', '--python', basePython, '--python-preference', 'only-system', join(root, 'python')]);
|
|
151
158
|
}
|
|
152
|
-
stage('
|
|
159
|
+
stage('安装推理依赖');
|
|
153
160
|
await run(uv, ['pip', 'install', '--reinstall', '--python', python, '-r', requirementsFile]);
|
|
154
|
-
|
|
155
|
-
|
|
161
|
+
const selectedModels = modelsForSelection(selection);
|
|
162
|
+
for (const model of selectedModels) {
|
|
163
|
+
stage(model.kind === 'embedding' ? '下载向量模型' : '下载重排模型');
|
|
156
164
|
await run(python, [setupScript, '--repo', model.repo, '--revision', model.revision, '--destination', join(root, 'models', model.directory)]);
|
|
157
165
|
}
|
|
166
|
+
await writeModelSelection(root, selection);
|
|
158
167
|
}
|
|
159
168
|
finally {
|
|
160
169
|
await unlock();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/environment/install.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACzG,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/environment/install.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +1,208 @@
|
|
|
1
1
|
/** Revisions are immutable Hub commit IDs, not a moving main branch. */
|
|
2
|
+
export declare const MODEL_REVISIONS: {
|
|
3
|
+
readonly 'bge-small-zh-v1.5': "7999e1d3359715c523056ef9478215996d62a620";
|
|
4
|
+
readonly 'bge-base-zh-v1.5': "f03589ceff5aac7111bd60cfc7d497ca17ecac65";
|
|
5
|
+
readonly 'bge-large-zh-v1.5': "79e7739b6ab944e86d6171e44d24c997fc1e0116";
|
|
6
|
+
readonly 'wemm-embedding-2b-quantized': "524bbe61e1b8ce4673e4e17dcf6a8694a3c45993";
|
|
7
|
+
readonly 'wemm-embedding-2b': "bbd6cd4bf52cfc6716f752a2df80b2706720bd95";
|
|
8
|
+
readonly 'bge-reranker-base': "2cfc18c9415c912f9d8155881c133215df768a70";
|
|
9
|
+
readonly 'bge-reranker-large': "55611d7bca2a7133960a6d3b71e083071bbfc312";
|
|
10
|
+
readonly 'qwen3-reranker-0.6b': "e61197ed45024b0ed8a2d74b80b4d909f1255473";
|
|
11
|
+
readonly 'qwen3-reranker-4b': "22e683669bc0f0bd69640a1354a6d0aebcfeede5";
|
|
12
|
+
readonly 'qwen3-reranker-8b': "77d193c791ed757ca307ee72715aa132723da912";
|
|
13
|
+
};
|
|
14
|
+
export declare function modelsForSelection(selection?: import("./model-catalog.js").ModelSelection): ({
|
|
15
|
+
kind: "embedding";
|
|
16
|
+
revision: "7999e1d3359715c523056ef9478215996d62a620" | "f03589ceff5aac7111bd60cfc7d497ca17ecac65" | "79e7739b6ab944e86d6171e44d24c997fc1e0116" | "524bbe61e1b8ce4673e4e17dcf6a8694a3c45993" | "bbd6cd4bf52cfc6716f752a2df80b2706720bd95";
|
|
17
|
+
id: "bge-small-zh-v1.5";
|
|
18
|
+
repo: "BAAI/bge-small-zh-v1.5";
|
|
19
|
+
directory: "bge-small-zh-v1.5";
|
|
20
|
+
label: "BGE Small 中文";
|
|
21
|
+
dimension: 512;
|
|
22
|
+
download: "约 96 MB";
|
|
23
|
+
description: "资源占用最低,适合先跑通本地知识检索。";
|
|
24
|
+
} | {
|
|
25
|
+
kind: "embedding";
|
|
26
|
+
revision: "7999e1d3359715c523056ef9478215996d62a620" | "f03589ceff5aac7111bd60cfc7d497ca17ecac65" | "79e7739b6ab944e86d6171e44d24c997fc1e0116" | "524bbe61e1b8ce4673e4e17dcf6a8694a3c45993" | "bbd6cd4bf52cfc6716f752a2df80b2706720bd95";
|
|
27
|
+
id: "bge-base-zh-v1.5";
|
|
28
|
+
repo: "BAAI/bge-base-zh-v1.5";
|
|
29
|
+
directory: "bge-base-zh-v1.5";
|
|
30
|
+
label: "BGE Base 中文";
|
|
31
|
+
dimension: 768;
|
|
32
|
+
download: "约 409 MB";
|
|
33
|
+
description: "效果与资源占用较均衡。";
|
|
34
|
+
} | {
|
|
35
|
+
kind: "embedding";
|
|
36
|
+
revision: "7999e1d3359715c523056ef9478215996d62a620" | "f03589ceff5aac7111bd60cfc7d497ca17ecac65" | "79e7739b6ab944e86d6171e44d24c997fc1e0116" | "524bbe61e1b8ce4673e4e17dcf6a8694a3c45993" | "bbd6cd4bf52cfc6716f752a2df80b2706720bd95";
|
|
37
|
+
id: "bge-large-zh-v1.5";
|
|
38
|
+
repo: "BAAI/bge-large-zh-v1.5";
|
|
39
|
+
directory: "bge-large-zh-v1.5";
|
|
40
|
+
label: "BGE Large 中文";
|
|
41
|
+
dimension: 1024;
|
|
42
|
+
download: "约 1.3 GB";
|
|
43
|
+
description: "中文向量效果优先,需要更多内存与磁盘。";
|
|
44
|
+
} | {
|
|
45
|
+
kind: "embedding";
|
|
46
|
+
revision: "7999e1d3359715c523056ef9478215996d62a620" | "f03589ceff5aac7111bd60cfc7d497ca17ecac65" | "79e7739b6ab944e86d6171e44d24c997fc1e0116" | "524bbe61e1b8ce4673e4e17dcf6a8694a3c45993" | "bbd6cd4bf52cfc6716f752a2df80b2706720bd95";
|
|
47
|
+
id: "wemm-embedding-2b-quantized";
|
|
48
|
+
repo: "ewin-reg/WeMM-Embedding-2B-Quantized";
|
|
49
|
+
directory: "WeMM-Embedding-2B-Quantized";
|
|
50
|
+
label: "WeMM Embedding 2B 社区量化版";
|
|
51
|
+
dimension: 2048;
|
|
52
|
+
download: "约 1.8 GB";
|
|
53
|
+
description: "社区维护的 INT4 / FP8 量化模型,非腾讯官方发布;模型卡标注 license: other,请查看协议。";
|
|
54
|
+
} | {
|
|
55
|
+
kind: "embedding";
|
|
56
|
+
revision: "7999e1d3359715c523056ef9478215996d62a620" | "f03589ceff5aac7111bd60cfc7d497ca17ecac65" | "79e7739b6ab944e86d6171e44d24c997fc1e0116" | "524bbe61e1b8ce4673e4e17dcf6a8694a3c45993" | "bbd6cd4bf52cfc6716f752a2df80b2706720bd95";
|
|
57
|
+
id: "wemm-embedding-2b";
|
|
58
|
+
repo: "tencent/WeMM-Embedding-2B";
|
|
59
|
+
directory: "WeMM-Embedding-2B";
|
|
60
|
+
label: "腾讯 WeMM Embedding 2B(BF16)";
|
|
61
|
+
dimension: 2048;
|
|
62
|
+
download: "约 5.5 GB";
|
|
63
|
+
description: "多模态向量模型,支持文本和图片;下载与推理资源占用较高。";
|
|
64
|
+
} | {
|
|
65
|
+
kind: "rerank";
|
|
66
|
+
revision: "2cfc18c9415c912f9d8155881c133215df768a70" | "55611d7bca2a7133960a6d3b71e083071bbfc312" | "e61197ed45024b0ed8a2d74b80b4d909f1255473" | "22e683669bc0f0bd69640a1354a6d0aebcfeede5" | "77d193c791ed757ca307ee72715aa132723da912";
|
|
67
|
+
id: "bge-reranker-base";
|
|
68
|
+
repo: "BAAI/bge-reranker-base";
|
|
69
|
+
directory: "bge-reranker-base";
|
|
70
|
+
label: "BGE Reranker Base";
|
|
71
|
+
download: "约 1.1 GB";
|
|
72
|
+
description: "中文重排的轻量选项。";
|
|
73
|
+
} | {
|
|
74
|
+
kind: "rerank";
|
|
75
|
+
revision: "2cfc18c9415c912f9d8155881c133215df768a70" | "55611d7bca2a7133960a6d3b71e083071bbfc312" | "e61197ed45024b0ed8a2d74b80b4d909f1255473" | "22e683669bc0f0bd69640a1354a6d0aebcfeede5" | "77d193c791ed757ca307ee72715aa132723da912";
|
|
76
|
+
id: "qwen3-reranker-0.6b";
|
|
77
|
+
repo: "Qwen/Qwen3-Reranker-0.6B";
|
|
78
|
+
directory: "Qwen3-Reranker-0.6B";
|
|
79
|
+
label: "Qwen3 Reranker 0.6B";
|
|
80
|
+
download: "约 1.2 GB";
|
|
81
|
+
description: "支持 100 多种语言,适合先试用 Qwen 重排。";
|
|
82
|
+
} | {
|
|
83
|
+
kind: "rerank";
|
|
84
|
+
revision: "2cfc18c9415c912f9d8155881c133215df768a70" | "55611d7bca2a7133960a6d3b71e083071bbfc312" | "e61197ed45024b0ed8a2d74b80b4d909f1255473" | "22e683669bc0f0bd69640a1354a6d0aebcfeede5" | "77d193c791ed757ca307ee72715aa132723da912";
|
|
85
|
+
id: "bge-reranker-large";
|
|
86
|
+
repo: "BAAI/bge-reranker-large";
|
|
87
|
+
directory: "bge-reranker-large";
|
|
88
|
+
label: "BGE Reranker Large";
|
|
89
|
+
download: "约 2.2 GB";
|
|
90
|
+
description: "中文和英文重排效果优先,推理速度较慢。";
|
|
91
|
+
} | {
|
|
92
|
+
kind: "rerank";
|
|
93
|
+
revision: "2cfc18c9415c912f9d8155881c133215df768a70" | "55611d7bca2a7133960a6d3b71e083071bbfc312" | "e61197ed45024b0ed8a2d74b80b4d909f1255473" | "22e683669bc0f0bd69640a1354a6d0aebcfeede5" | "77d193c791ed757ca307ee72715aa132723da912";
|
|
94
|
+
id: "qwen3-reranker-4b";
|
|
95
|
+
repo: "Qwen/Qwen3-Reranker-4B";
|
|
96
|
+
directory: "Qwen3-Reranker-4B";
|
|
97
|
+
label: "Qwen3 Reranker 4B";
|
|
98
|
+
download: "约 8.1 GB";
|
|
99
|
+
description: "Qwen 中档重排模型;请先确认磁盘与内存充足。";
|
|
100
|
+
} | {
|
|
101
|
+
kind: "rerank";
|
|
102
|
+
revision: "2cfc18c9415c912f9d8155881c133215df768a70" | "55611d7bca2a7133960a6d3b71e083071bbfc312" | "e61197ed45024b0ed8a2d74b80b4d909f1255473" | "22e683669bc0f0bd69640a1354a6d0aebcfeede5" | "77d193c791ed757ca307ee72715aa132723da912";
|
|
103
|
+
id: "qwen3-reranker-8b";
|
|
104
|
+
repo: "Qwen/Qwen3-Reranker-8B";
|
|
105
|
+
directory: "Qwen3-Reranker-8B";
|
|
106
|
+
label: "Qwen3 Reranker 8B";
|
|
107
|
+
download: "约 16.4 GB";
|
|
108
|
+
description: "资源占用最高;下载前请确认有足够磁盘与内存。";
|
|
109
|
+
})[];
|
|
2
110
|
export declare const REQUIRED_MODELS: ({
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
111
|
+
kind: "embedding";
|
|
112
|
+
revision: "7999e1d3359715c523056ef9478215996d62a620" | "f03589ceff5aac7111bd60cfc7d497ca17ecac65" | "79e7739b6ab944e86d6171e44d24c997fc1e0116" | "524bbe61e1b8ce4673e4e17dcf6a8694a3c45993" | "bbd6cd4bf52cfc6716f752a2df80b2706720bd95";
|
|
113
|
+
id: "bge-small-zh-v1.5";
|
|
114
|
+
repo: "BAAI/bge-small-zh-v1.5";
|
|
115
|
+
directory: "bge-small-zh-v1.5";
|
|
116
|
+
label: "BGE Small 中文";
|
|
117
|
+
dimension: 512;
|
|
118
|
+
download: "约 96 MB";
|
|
119
|
+
description: "资源占用最低,适合先跑通本地知识检索。";
|
|
120
|
+
} | {
|
|
121
|
+
kind: "embedding";
|
|
122
|
+
revision: "7999e1d3359715c523056ef9478215996d62a620" | "f03589ceff5aac7111bd60cfc7d497ca17ecac65" | "79e7739b6ab944e86d6171e44d24c997fc1e0116" | "524bbe61e1b8ce4673e4e17dcf6a8694a3c45993" | "bbd6cd4bf52cfc6716f752a2df80b2706720bd95";
|
|
123
|
+
id: "bge-base-zh-v1.5";
|
|
124
|
+
repo: "BAAI/bge-base-zh-v1.5";
|
|
125
|
+
directory: "bge-base-zh-v1.5";
|
|
126
|
+
label: "BGE Base 中文";
|
|
127
|
+
dimension: 768;
|
|
128
|
+
download: "约 409 MB";
|
|
129
|
+
description: "效果与资源占用较均衡。";
|
|
130
|
+
} | {
|
|
131
|
+
kind: "embedding";
|
|
132
|
+
revision: "7999e1d3359715c523056ef9478215996d62a620" | "f03589ceff5aac7111bd60cfc7d497ca17ecac65" | "79e7739b6ab944e86d6171e44d24c997fc1e0116" | "524bbe61e1b8ce4673e4e17dcf6a8694a3c45993" | "bbd6cd4bf52cfc6716f752a2df80b2706720bd95";
|
|
133
|
+
id: "bge-large-zh-v1.5";
|
|
134
|
+
repo: "BAAI/bge-large-zh-v1.5";
|
|
135
|
+
directory: "bge-large-zh-v1.5";
|
|
136
|
+
label: "BGE Large 中文";
|
|
137
|
+
dimension: 1024;
|
|
138
|
+
download: "约 1.3 GB";
|
|
139
|
+
description: "中文向量效果优先,需要更多内存与磁盘。";
|
|
140
|
+
} | {
|
|
141
|
+
kind: "embedding";
|
|
142
|
+
revision: "7999e1d3359715c523056ef9478215996d62a620" | "f03589ceff5aac7111bd60cfc7d497ca17ecac65" | "79e7739b6ab944e86d6171e44d24c997fc1e0116" | "524bbe61e1b8ce4673e4e17dcf6a8694a3c45993" | "bbd6cd4bf52cfc6716f752a2df80b2706720bd95";
|
|
143
|
+
id: "wemm-embedding-2b-quantized";
|
|
144
|
+
repo: "ewin-reg/WeMM-Embedding-2B-Quantized";
|
|
145
|
+
directory: "WeMM-Embedding-2B-Quantized";
|
|
146
|
+
label: "WeMM Embedding 2B 社区量化版";
|
|
147
|
+
dimension: 2048;
|
|
148
|
+
download: "约 1.8 GB";
|
|
149
|
+
description: "社区维护的 INT4 / FP8 量化模型,非腾讯官方发布;模型卡标注 license: other,请查看协议。";
|
|
150
|
+
} | {
|
|
151
|
+
kind: "embedding";
|
|
152
|
+
revision: "7999e1d3359715c523056ef9478215996d62a620" | "f03589ceff5aac7111bd60cfc7d497ca17ecac65" | "79e7739b6ab944e86d6171e44d24c997fc1e0116" | "524bbe61e1b8ce4673e4e17dcf6a8694a3c45993" | "bbd6cd4bf52cfc6716f752a2df80b2706720bd95";
|
|
153
|
+
id: "wemm-embedding-2b";
|
|
154
|
+
repo: "tencent/WeMM-Embedding-2B";
|
|
155
|
+
directory: "WeMM-Embedding-2B";
|
|
156
|
+
label: "腾讯 WeMM Embedding 2B(BF16)";
|
|
157
|
+
dimension: 2048;
|
|
158
|
+
download: "约 5.5 GB";
|
|
159
|
+
description: "多模态向量模型,支持文本和图片;下载与推理资源占用较高。";
|
|
160
|
+
} | {
|
|
161
|
+
kind: "rerank";
|
|
162
|
+
revision: "2cfc18c9415c912f9d8155881c133215df768a70" | "55611d7bca2a7133960a6d3b71e083071bbfc312" | "e61197ed45024b0ed8a2d74b80b4d909f1255473" | "22e683669bc0f0bd69640a1354a6d0aebcfeede5" | "77d193c791ed757ca307ee72715aa132723da912";
|
|
163
|
+
id: "bge-reranker-base";
|
|
164
|
+
repo: "BAAI/bge-reranker-base";
|
|
165
|
+
directory: "bge-reranker-base";
|
|
166
|
+
label: "BGE Reranker Base";
|
|
167
|
+
download: "约 1.1 GB";
|
|
168
|
+
description: "中文重排的轻量选项。";
|
|
169
|
+
} | {
|
|
170
|
+
kind: "rerank";
|
|
171
|
+
revision: "2cfc18c9415c912f9d8155881c133215df768a70" | "55611d7bca2a7133960a6d3b71e083071bbfc312" | "e61197ed45024b0ed8a2d74b80b4d909f1255473" | "22e683669bc0f0bd69640a1354a6d0aebcfeede5" | "77d193c791ed757ca307ee72715aa132723da912";
|
|
172
|
+
id: "qwen3-reranker-0.6b";
|
|
173
|
+
repo: "Qwen/Qwen3-Reranker-0.6B";
|
|
174
|
+
directory: "Qwen3-Reranker-0.6B";
|
|
175
|
+
label: "Qwen3 Reranker 0.6B";
|
|
176
|
+
download: "约 1.2 GB";
|
|
177
|
+
description: "支持 100 多种语言,适合先试用 Qwen 重排。";
|
|
178
|
+
} | {
|
|
179
|
+
kind: "rerank";
|
|
180
|
+
revision: "2cfc18c9415c912f9d8155881c133215df768a70" | "55611d7bca2a7133960a6d3b71e083071bbfc312" | "e61197ed45024b0ed8a2d74b80b4d909f1255473" | "22e683669bc0f0bd69640a1354a6d0aebcfeede5" | "77d193c791ed757ca307ee72715aa132723da912";
|
|
181
|
+
id: "bge-reranker-large";
|
|
182
|
+
repo: "BAAI/bge-reranker-large";
|
|
183
|
+
directory: "bge-reranker-large";
|
|
184
|
+
label: "BGE Reranker Large";
|
|
185
|
+
download: "约 2.2 GB";
|
|
186
|
+
description: "中文和英文重排效果优先,推理速度较慢。";
|
|
187
|
+
} | {
|
|
188
|
+
kind: "rerank";
|
|
189
|
+
revision: "2cfc18c9415c912f9d8155881c133215df768a70" | "55611d7bca2a7133960a6d3b71e083071bbfc312" | "e61197ed45024b0ed8a2d74b80b4d909f1255473" | "22e683669bc0f0bd69640a1354a6d0aebcfeede5" | "77d193c791ed757ca307ee72715aa132723da912";
|
|
190
|
+
id: "qwen3-reranker-4b";
|
|
191
|
+
repo: "Qwen/Qwen3-Reranker-4B";
|
|
192
|
+
directory: "Qwen3-Reranker-4B";
|
|
193
|
+
label: "Qwen3 Reranker 4B";
|
|
194
|
+
download: "约 8.1 GB";
|
|
195
|
+
description: "Qwen 中档重排模型;请先确认磁盘与内存充足。";
|
|
196
|
+
} | {
|
|
197
|
+
kind: "rerank";
|
|
198
|
+
revision: "2cfc18c9415c912f9d8155881c133215df768a70" | "55611d7bca2a7133960a6d3b71e083071bbfc312" | "e61197ed45024b0ed8a2d74b80b4d909f1255473" | "22e683669bc0f0bd69640a1354a6d0aebcfeede5" | "77d193c791ed757ca307ee72715aa132723da912";
|
|
199
|
+
id: "qwen3-reranker-8b";
|
|
200
|
+
repo: "Qwen/Qwen3-Reranker-8B";
|
|
201
|
+
directory: "Qwen3-Reranker-8B";
|
|
202
|
+
label: "Qwen3 Reranker 8B";
|
|
203
|
+
download: "约 16.4 GB";
|
|
204
|
+
description: "资源占用最高;下载前请确认有足够磁盘与内存。";
|
|
12
205
|
})[];
|
|
13
206
|
export declare const UV_VERSION = "0.13.1";
|
|
14
|
-
export declare const
|
|
15
|
-
export declare const ENVIRONMENT_PROBE_VERSION = 1;
|
|
16
|
-
export declare const PYTHON_PROBE = "\nimport contextlib, importlib, importlib.metadata, io, json, sys\npackages = {'torch':'torch', 'transformers':'transformers', 'sentence-transformers':'sentence_transformers', 'Pillow':'PIL', 'numpy':'numpy', 'sentencepiece':'sentencepiece', 'huggingface-hub':'huggingface_hub'}\nmissing = []\nversions = {}\nfor package, module in packages.items():\n try:\n with contextlib.redirect_stdout(io.StringIO()):\n importlib.import_module(module)\n versions[package] = importlib.metadata.version(package)\n except Exception as error:\n missing.append(package + ': ' + str(error))\nprint(json.dumps({'version': list(sys.version_info[:3]), 'executable': sys.executable, 'missing': missing, 'packages': versions}))\n";
|
|
207
|
+
export declare const ENVIRONMENT_PROBE_VERSION = 2;
|
|
17
208
|
//# sourceMappingURL=manifest.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../../src/environment/manifest.ts"],"names":[],"mappings":"AAEA,wEAAwE;AACxE,eAAO,MAAM,eAAe
|
|
1
|
+
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../../src/environment/manifest.ts"],"names":[],"mappings":"AAEA,wEAAwE;AACxE,eAAO,MAAM,eAAe;;;;;;;;;;;CAWlB,CAAA;AAEV,wBAAgB,kBAAkB,CAAC,SAAS,8CAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAOrE;AAED,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAAuB,CAAA;AACnD,eAAO,MAAM,UAAU,WAAW,CAAA;AAClC,eAAO,MAAM,yBAAyB,IAAI,CAAA"}
|
|
@@ -1,24 +1,26 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { DEFAULT_MODEL_SELECTION, embeddingModel, rerankModel } from './model-catalog.js';
|
|
2
2
|
/** Revisions are immutable Hub commit IDs, not a moving main branch. */
|
|
3
|
-
export const
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
export const MODEL_REVISIONS = {
|
|
4
|
+
'bge-small-zh-v1.5': '7999e1d3359715c523056ef9478215996d62a620',
|
|
5
|
+
'bge-base-zh-v1.5': 'f03589ceff5aac7111bd60cfc7d497ca17ecac65',
|
|
6
|
+
'bge-large-zh-v1.5': '79e7739b6ab944e86d6171e44d24c997fc1e0116',
|
|
7
|
+
'wemm-embedding-2b-quantized': '524bbe61e1b8ce4673e4e17dcf6a8694a3c45993',
|
|
8
|
+
'wemm-embedding-2b': 'bbd6cd4bf52cfc6716f752a2df80b2706720bd95',
|
|
9
|
+
'bge-reranker-base': '2cfc18c9415c912f9d8155881c133215df768a70',
|
|
10
|
+
'bge-reranker-large': '55611d7bca2a7133960a6d3b71e083071bbfc312',
|
|
11
|
+
'qwen3-reranker-0.6b': 'e61197ed45024b0ed8a2d74b80b4d909f1255473',
|
|
12
|
+
'qwen3-reranker-4b': '22e683669bc0f0bd69640a1354a6d0aebcfeede5',
|
|
13
|
+
'qwen3-reranker-8b': '77d193c791ed757ca307ee72715aa132723da912',
|
|
14
|
+
};
|
|
15
|
+
export function modelsForSelection(selection = DEFAULT_MODEL_SELECTION) {
|
|
16
|
+
const embedding = embeddingModel(selection.embedding);
|
|
17
|
+
const rerank = rerankModel(selection.rerank);
|
|
18
|
+
return [
|
|
19
|
+
{ ...embedding, kind: 'embedding', revision: MODEL_REVISIONS[embedding.id] },
|
|
20
|
+
{ ...rerank, kind: 'rerank', revision: MODEL_REVISIONS[rerank.id] },
|
|
21
|
+
];
|
|
22
|
+
}
|
|
23
|
+
export const REQUIRED_MODELS = modelsForSelection();
|
|
7
24
|
export const UV_VERSION = '0.13.1';
|
|
8
|
-
export const
|
|
9
|
-
export const ENVIRONMENT_PROBE_VERSION = 1;
|
|
10
|
-
export const PYTHON_PROBE = `
|
|
11
|
-
import contextlib, importlib, importlib.metadata, io, json, sys
|
|
12
|
-
packages = {'torch':'torch', 'transformers':'transformers', 'sentence-transformers':'sentence_transformers', 'Pillow':'PIL', 'numpy':'numpy', 'sentencepiece':'sentencepiece', 'huggingface-hub':'huggingface_hub'}
|
|
13
|
-
missing = []
|
|
14
|
-
versions = {}
|
|
15
|
-
for package, module in packages.items():
|
|
16
|
-
try:
|
|
17
|
-
with contextlib.redirect_stdout(io.StringIO()):
|
|
18
|
-
importlib.import_module(module)
|
|
19
|
-
versions[package] = importlib.metadata.version(package)
|
|
20
|
-
except Exception as error:
|
|
21
|
-
missing.append(package + ': ' + str(error))
|
|
22
|
-
print(json.dumps({'version': list(sys.version_info[:3]), 'executable': sys.executable, 'missing': missing, 'packages': versions}))
|
|
23
|
-
`;
|
|
25
|
+
export const ENVIRONMENT_PROBE_VERSION = 2;
|
|
24
26
|
//# sourceMappingURL=manifest.js.map
|