Domino IQ 入門:把 LLM 跑進 Domino server 是什麼概念

Domino IQ 是什麼

Domino 14.5 引入 Domino IQ — 直接在 Domino server backend 跑一個 AI 推論引擎。原文:「The Domino server, when configured for Domino IQ, starts an 推論引擎 from the Dbserver process」、「handles AI queries locally within the Domino server」。

對開發者而言,這意味著從 LotusScript 兩個新 class(NotesLLMRequest / NotesLLMResponse)就能直接送 prompt 給 LLM1 拿回應 — 不需要對接外部 OpenAI / Anthropic API,也不需要把 Notes 資料 ETL 出去。

為什麼把 LLM 跑在 Domino server 上

外接 LLM SaaS 看起來最快:呼叫 API、收回應、結束。但 Domino 用戶的常見場景會撞牆:

  • 資料治理:Notes/Domino 應用很多場景下資料根本不允許離開 Domino server(金融、法務、醫療、政府部門)。把 prompt 送到 OpenAI 即代表內容離開了 受治理邊界。
  • ACL / Readers field:Domino 的權限模型是 server-side 強制執行的。外接 LLM 時,「這個使用者該不該看到這份資料當 context」要在 應用層 重做一次過濾邏輯。
  • 計費 / 流量:依 token 計費的 SaaS 模型對長期高頻場景不划算。

Domino IQ 把 推論引擎 跟 Domino server 收進同一個 行程邊界,這幾件事一次處理掉。代價是你要在自己的 server 跑得起 GGUF2 模型。

架構與硬體需求

執行環境很硬:只支援 Windows / Linux 64-bit + NVIDIA GPU,沒有 macOS、沒有 ARM、沒有純 CPU 模式。

最低 / 推薦規格:

項目最低生產建議
CPU4 cores
RAM8 GB
GPUNVIDIA、8 GB memory、compute capability 5.2+compute capability 8.0+
CUDA12.x(內建)

Windows 環境下 GPU 可以同時用 GPU memory 跟「一半的系統 RAM」當 Shared RAM — 對小規模試跑友善。

啟動後 DominoIQ task 從 Dbserver process spawn 出 推論引擎 子進程,listen 在你設定的 port 上,跟其他 Domino server task 並排運作。

安裝流程

安裝是獨立的 zip 包,從 My HCLSoftware Portal 下載 llama.zip

  1. llama.zip 傳到 Domino server 的暫存區
  2. 停掉 Domino server(這步必要)
  3. Windows:以 admin 權限刪掉舊版 llama-server.exellama.dllggml/*.dll 與三個 CUDA library 檔;Linux:以 root 刪 llama-serverlibllama.solibggml*.so 與對應 CUDA libraries
  4. llama.zip 解壓到 Domino program directory(不是 data dir)
  5. Linux 補 permissions:chown root:root + chmod ugo+rx 對解出來的 binary
  6. 啟動 Domino,看 DominoIQ task 是否成功 load model;沒有的話進設定流程

Domino IQ 是 14.5 才加的功能,舊環境第一次裝不會踩到 binary 替換的步驟,但升級 14.5 → 14.5.x 時要記得清舊 binary。

dominoiq.nsf 設定兩階段

裝完之後,所有設定都在 dominoiq.nsf(Domino IQ Administration server 上的這個 DB),分成兩塊:

1. Configuration document — 引擎本體

定義 推論引擎 怎麼跑:

  • 哪個 GGUF model 載入(每個 Domino IQ server 只能跑一個 LLM
  • 監聽哪個 port
  • GPU offloading 參數
  • 並行請求數
  • 進階:Special parameters(如 -c <ctx-size> 等 llama.cpp flag)
  • 可選:guard model3 設定(過濾不適當 input/output)

2. Command document — 應用層 contract

Configuration 把引擎跑起來後,Command document 定義具體一個「AI 命令」是什麼。應用程式呼叫的就是這個 Command 名稱。

關鍵欄位:

欄位用途
Configuration(s)此命令適用哪些 server,可填 server 名或 wildcard *
Model遠端 AI endpoint 才需要的 optional 欄位
Command對應的 System Prompt 名稱
System prompt同 Command 欄位填同名
Description說明
Maximum tokens對應 OpenAI Chat Completion spec
Temperature同上,控制隨機性

快取行為:Command document 變動後系統最多會快取 5 分鐘 — 急著測新 prompt 時要等一下,或重啟 DominoIQ task。

System Prompt document:把行為抽出來成獨立物件

System Prompt document 是「告訴 LLM 該怎麼回應」的指令本身,獨立於 Command document 存在 —— Command 只是把它「掛上來」用。

這個分離讓你可以:

  • 同一個 system prompt 給多個 Command 共用
  • 改 system prompt 不必動 Command 結構

內建一個範例:StdSummarizeEmailThread — 拿來摘要郵件討論串。

從應用程式呼叫:NotesLLMRequest / NotesLLMResponse

設定好後,從 LotusScript(或 Java)發 prompt 的 API 是這兩個 class:

  • NotesLLMRequest — 組請求(指定 Command 名稱、prompt 內容、token 限制等)
  • NotesLLMResponse — 收回應

實作面詳細 method 簽名要看 Designer help 的 NotesLLMRequest / NotesLLMResponse 條目(Admin doc 沒列出),新建議在小資料集先跑通。

對 caller 來說,這就是個普通同步 API call — 走 process 內 IPC 到本地 推論引擎,沒有跨網路 latency。

跟 RAG 的關係

14.5 引入 Domino IQ;14.5.1 在 Domino IQ 之上加了 RAG 支援 — 把 NSF 直接掛上來當 vector source,並在處理 prompt 時把語意相關的文件當 context 注入。

如果你的場景是「給 LLM 一段提示詞、回個自由格式回應」(摘要、分類、抽取、翻譯),Domino IQ 一個 Command 就能跑;如果你要「LLM 回答時參考特定 NSF 內的文件」,那才需要再多開 RAG 模式。

關於 RAG 怎麼設、ACL 怎麼自動繼承到語意搜尋、updall -w 怎麼向量化,本系列另一篇深入:Domino IQ RAG:把 NSF 直接掛上本地 LLM 的內建管線

為什麼這個 trade-off 對 Domino 客戶划算

蓋一條外接 LLM 的 RAG pipeline 技術上可行,但對 Domino 既有客戶不一定值得:

  • 既有 dev / admin 團隊熟 Domino,多一個 vendor 就多一條維運線
  • Notes ACL / Readers field 的權限模型重做極容易出包
  • 既有 server 房 + 既有 GPU 通常就夠跑 GGUF 模型,沒有額外 cloud 成本
  • 治理層面「資料不出 server」對某些產業是強制要求

唯一硬限制是 NVIDIA GPU 與 64-bit 環境 — 但對 14.5 升級來說這通常不是阻礙。

  1. LLM(Large Language Model,大型語言模型)是以海量文字訓練的神經網路模型 — 例如 GPT、Claude、Llama 等 — 能依輸入提示生成自然語言回應。

  2. GGUF(GPT-Generated Unified Format)是 llama.cpp 生態系常見的單檔二進位模型格式,把模型權重、tokenizer、metadata 打包成一個檔,可直接 mmap 載入記憶體 — 是 on-device 推論常用的分發格式。

  3. Guard model 是另一個小型 LLM,跑在主 LLM 之前 / 之後當「過濾層」,攔截可能不適當的輸入(例如越獄提示、敏感問題)或輸出(例如有害內容、敏感原文外流)。

參考來源

← 回到文章列表