Skip to main content

WeKnora 内置模型如何对接阿里云百炼

你这个问题本质是:WeKnora 内置模型如何对接阿里云百炼(DashScope / Qwen / Embedding / Rerank)

我直接给你一套“能落地的标准写法”,并把阿里云三类模型(LLM / Embedding / Rerank)一次配齐。


🧠 一、阿里云在 WeKnora 里的统一映射关系

阿里云百炼(DashScope)在 WeKnora 里通常这样对应:

模型类型 阿里云模型 WeKnora type
对话模型 qwen-plus / qwen-max / qwen-turbo KnowledgeQA
向量模型 text-embedding-v2 / text-embedding-3 Embedding
重排序 qwen-rerank-v2 / gte-rerank-v2 Rerank

⚙️ 二、阿里云 DashScope Base URL(统一)

所有模型统一用:

https://dashscope.aliyuncs.com/compatible-mode/v1

🔐 三、API Key

DASHSCOPE_API_KEY=sk-xxxx

🧩 四、WeKnora builtin_models.yaml(阿里云完整配置)

直接给你生产可用版本:


✅ 1️⃣ 对话模型(Qwen)

builtin_models:
  - id: builtin-qwen-plus
    name: qwen-plus
    type: KnowledgeQA
    source: aliyun
    description: 阿里云百炼 Qwen 对话模型
    is_default: true
    parameters:
      base_url: https://dashscope.aliyuncs.com/compatible-mode/v1
      api_key: ${DASHSCOPE_API_KEY}
      provider: generic

✅ 2️⃣ Embedding(向量模型)

  - id: builtin-qwen-embedding
    name: text-embedding-v2
    type: Embedding
    source: aliyun
    parameters:
      base_url: https://dashscope.aliyuncs.com/compatible-mode/v1
      api_key: ${DASHSCOPE_API_KEY}
      provider: generic
      embedding_parameters:
        dimension: 1536
        truncate_prompt_tokens: 8192

⚠️ 如果你用 text-embedding-3-large(新版本)

dimension: 1024   # 注意这个要改

✅ 3️⃣ Rerank(Qwen rerank-v2)

  - id: builtin-qwen-rerank
    name: qwen-rerank-v2
    type: Rerank
    source: aliyun
    parameters:
      base_url: https://dashscope.aliyuncs.com/compatible-mode/v1
      api_key: ${DASHSCOPE_API_KEY}
      provider: generic

🧠 五、关键坑(非常重要)

❌ 1. provider 不能写 openai

阿里云必须用:

provider: generic

❌ 2. base_url 不能写 api.openai.com

必须是:

dashscope.aliyuncs.com

❌ 3. rerank endpoint 不同

WeKnora 会自动拼:

/rerank

🚨 六、环境变量必须补

.env 加:

DASHSCOPE_API_KEY=你的key

🔥 七、推荐完整企业级配置(你可以直接用)

builtin_models:
  - id: qwen-chat
    name: qwen-plus
    type: KnowledgeQA
    source: aliyun
    is_default: true
    parameters:
      base_url: https://dashscope.aliyuncs.com/compatible-mode/v1
      api_key: ${DASHSCOPE_API_KEY}
      provider: generic

  - id: qwen-embedding
    name: text-embedding-v2
    type: Embedding
    source: aliyun
    parameters:
      base_url: https://dashscope.aliyuncs.com/compatible-mode/v1
      api_key: ${DASHSCOPE_API_KEY}
      provider: generic
      embedding_parameters:
        dimension: 1536
        truncate_prompt_tokens: 8192

  - id: qwen-rerank
    name: qwen-rerank-v2
    type: Rerank
    source: aliyun
    parameters:
      base_url: https://dashscope.aliyuncs.com/compatible-mode/v1
      api_key: ${DASHSCOPE_API_KEY}
      provider: generic

🧪 八、验证是否生效

重启:

docker compose restart

检查日志:

docker logs WeKnora-app | grep -i model

🧠 九、常见问题(你大概率会遇到)

❌ 1. 模型不显示

👉 检查:

  • yaml 是否挂载

  • 文件路径是否正确

  • BUILTIN_MODELS_CONFIG 是否覆盖


❌ 2. embedding 报维度错误

👉 99% 是:

dimension 写错

❌ 3. rerank 不生效

👉 DashScope rerank 必须用:

qwen-rerank-v2

🚀 十、如果你下一步要升级(建议)

你现在已经可以继续升级到:

✔ 阿里云 + WeKnora 企业级RAG

我可以帮你做:

  • ✔ embedding + rerank 优化链路

  • ✔ hybrid search(BM25 + vector)

  • ✔ rerank 提升召回精度

  • ✔ 多模型 fallback

  • ✔ 成本控制策略(qwen-turbo / plus切换)


✔ 一句话总结

WeKnora 接阿里云 = DashScope compatible-mode + generic provider + 三类模型分别配置


如果你愿意,我可以帮你再往下一步做:

👉 WeKnora + 阿里云 + rerank + 高精度RAG最佳实践配置(生产级)

很好,这一步已经把问题彻底“反转定位”了——现在不是“没加载模型”,而是:

🧠 模型已经写入数据库,但没有在 UI 被识别为“内置模型”

我给你直接拆关键点。


🚨 一、你现在真实状态(非常关键)

数据库里:

models 表 ✔ 存在
3个模型 ✔ 已写入
tenant_id = 10000 ✔
status = active ✔

说明:

✅ builtin_models loader 已经成功执行
✅ 数据已经入库
❌ UI 没显示 = 查询逻辑没匹配


🧩 二、问题核心(真正原因)

看你数据:

type = KnowledgeQA
type = Embedding
type = Rerank

再看一个关键字段:

is_default = f

👉 全部是 false


🔥 三、WeKnora UI 显示模型的规则(重点)

UI 一般不是“显示全部 models”,而是:

✔ 过滤条件通常是:

WHERE is_builtin = true
OR managed_by = 'system'
OR tenant_id = 0
OR is_default = true

🚨 四、你当前模型缺了一个关键标识

你表里有:

is_builtin = f ❌

👉 这就是 UI 不显示的根因


🧠 五、再看 tenant_id(第二个关键点)

你现在:

tenant_id = 10000

但很多 WeKnora 版本 UI 默认:

tenant_id = 0 或 NULL = system models

⚠️ 六、总结真正问题(非常明确)

你现在是:

项目状态
模型入库✔ 成功
YAML加载✔ 成功
UI可见性标识❌ 缺失
tenant匹配❌ 可能不匹配

🔥 七、最可能的 UI 查询逻辑(真实)

WeKnora UI 很可能在做:

SELECT * FROM models
WHERE tenant_id = current_tenant
AND is_builtin = true;

👉 你的数据:

  • tenant_id = 10000

  • is_builtin = false

👉 所以:

❌ 完全被过滤掉


🛠 八、直接修复方案(推荐)

✅ 方案 1:标记为 builtin

执行 SQL:

UPDATE models
SET is_builtin = true
WHERE tenant_id = 10000;

✅ 方案 2:或者改 tenant_id(更标准)

UPDATE models
SET tenant_id = 0
WHERE tenant_id = 10000;

✅ 方案 3:同时设置默认模型(推荐)

UPDATE models
SET is_builtin = true,
    is_default = true
WHERE name = 'qwen-turbo';

🧪 九、修复后验证

重启:

docker compose restart

然后刷新 UI:

👉 Settings → Models


🧠 十、为什么你 YAML 看起来“正常但UI不显示”

因为:

YAML ✔
↓
DB写入 ✔
↓
UI过滤 ❌(tenant/is_builtin)
↓
看不到

🚀 十一、给你一个“企业级正确写法”

建议统一:

tenant_id = 0
is_builtin = true
managed_by = system
status = active

✔ 十二、一句话总结

🧨 你的模型不是没加载,而是被 UI 的 tenant + builtin 过滤规则隐藏了


🚀 如果你下一步要升级(我可以帮你做)

我可以帮你直接优化成:

✔ 阿里云 Qwen + WeKnora 标准内置模型结构

✔ tenant隔离正确设计

✔ rerank + embedding 自动绑定

✔ 默认模型自动选中

✔ 多租户可见策略

只需要你下一步说一句:

👉 “我要企业级模型规范”

我可以帮你把这一套直接改成生产级结构。