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 自动绑定

    ✔ 默认模型自动选中

    ✔ 多租户可见策略

    只需要你下一步说一句:

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

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