iT邦幫忙

2026 iThome 鐵人賽

DAY 26
0
AI Engineering

《讓 AI 去扛人類守不住的戰場,而不是取代人:系統整合商 AI 導入實戰(2026)》系列 第 26

《 Day26》【向原廠下單系統 ②】實作:用 CCW GraphQL introspection 自己問出 schema + 自動 SKU/配件查詢

  • 分享至 

  • xImage
  •  

【向原廠下單系統 ②】實作:用 CCW GraphQL introspection 自己問出 schema + 向量檢索 16 萬組型號

昨天 D25 把最後一面牆立了起來:一張正確的原廠報價單,是型號 × 相容 × 折扣/即時價相乘出來的組合爆炸,而 Cisco 可下單的型號超過 16 萬組。 人工撐得住單純的場景、但撐不住相乘。

今天這篇有 3 件事,順序不能反——第 1 件是進場前提,後 2 件才是真正翻牆的兩道技術:

  1. 原廠下單資訊同步—— 這是沒辦法跨過的坎,你必須要先有原廠可下單的型號組合才能進行開發。
    (這篇是以Cisco 下單系統作為範例,如果你要參考需要替換成自己想做的內容)。
  2. 向量檢索——從 16 萬組PID中,建立規格簡介,並且加入應用場景以及產品定位,組合成判定context,最後製作成 vector (向量資料),壓住 token 成本、也不讓 LLM 被雜訊淹死。
  3. GraphQL introspection——讓 AI 去問出原廠 CCW 自己的 schema,再自動查 SKU、配件、能不能下單(orderable)、即時單價,還缺什麼。

原廠資訊同步是進場前提、這篇不展開;先講第一道技術——為什麼不能把 16 萬組型號直接丟給 LLM。

為什麼不能把 16 萬組型號「整包丟給 LLM」?

因為 Token 有成本,context 也有上限。 Cisco 原廠可以下單的型號總共超過 16 萬組(比較生動的描述是: 蒐集做成一個 Excel 會超過 8MB)。

不可能每次搜尋都把「所有可下單型號 + 各自規格」從頭掃到尾——這樣光是掃表,還不到一半就會因為 context 太雜,讓 LLM 直接瘋掉(開始胡言亂語、亂組型號規格)。

所以真正的做法是:先用「相似度」把候選收斂到幾十組,再交給 LLM 細看。 而「相似度」這件事,正是向量資料庫的主場。

向量資料庫是什麼?為什麼它能做「語意相似」?

向量資料的本質是: 把每個東西變成空間中的一個座標點,相似的東西座標會彼此靠近。

向量檢索示意:把每筆資料(需求、型號規格)轉成多維空間裡的座標點,語意相近的點在空間中彼此靠近,搜尋時比對座標距離就能找出最相關的候選

比較抽象的解釋是,把特徵一個一個編碼成數字,以寵物作為例子:

  • [0, 0.2, 0.8, 0] (貓、體型中、虎斑、公)
  • [0, 0.1, 0.8, 0] (貓、體型小、虎斑、公)

這兩個座標幾乎重疊,因為牠們只差在體型。比對兩個向量的內積(dot product),越相似的內容越接近 1——這就是拿來量「兩筆東西有多像」的尺,也是 LLM 語意檢索(semantic retrieval)的本質。

LLM 實際運作時,會先把語言文字轉成向量數字,再拿去跑各自權重的計算。向量的「長度(維度)」有幾個常見規格:

維度 定位 代表場景
384 輕量級 運算資源有限的本地端專案、行動裝置
768 經典黃金比例 傳統 BERT 系列與許多開源模型
1024 進階開源 對檢索精準度要求較高的企業應用
1536 目前最普及的商用標準之一 OpenAI text-embedding-3-smallada-002
3072 高維度 需要分辨細微語意差異的大型 RAG(檢索增強生成)系統

維度有個概念就好,因為把語言轉成向量這一步,本來也是 LLM 在做的工。

這套下單系統怎麼用向量?

具體操作:我在資料庫事先把每一個可下單的型號建好〔型號 ID + 規格資料 + 規格對應的向量〕。 查詢時,把使用者的需求也轉成向量,去撈語意上最接近的那幾十組候選——而不是把 16 萬組整包丟進 context。

下單系統的向量資料表(去識別化):每一列是一個可下單型號,欄位包含型號 ID、對應規格資料、以及該規格產生的向量;查詢時以需求向量比對,撈出語意最近的候選型號

具體操作出來就會變成這樣:

向量檢索的實際回傳(去識別化):對一筆需求做語意比對後,傳回一個含 10 筆候選型號的陣列,每筆帶 pid_id、產品說明(product_description)、類別與 similarity_score 相似度分數,並依分數由高到低排序(如 0.4966、0.4482…);底層是一段帶 ORDER BY/LIMIT 的 SQL,從 PID 向量庫撈出語意最相近的候選

所以真正會被傳入LLM的內容就從16萬組資料被縮減到語意最接近的10組了。

至於怎麼讓 AI 把需求問清楚、再組出有效的查詢,是前幾篇 D17 的主題,你需要做成自己的版本。

到這裡,「規模」這一半的牆已經被壓下來了: LLM 每次只需要看幾十組相關候選,而不是 16 萬組。接下來是第二道——怎麼確認這幾十組真的能下單、配件相容、價格即時

用 GraphQL introspection 讓 AI 自己問出原廠 schema

接下來的示範因為Cisco原廠的實際下單端點不是公開的,所以我這邊拿其他同樣是GraphQL的端點作為示範。

讓我舉個栗子

「我舉個栗子」迷因圖:一個人舉起一顆栗子(諧音「例子」),俏皮引出下面的範例

GraphQL 有一個內建能力叫 introspection——規格要求相容伺服器都得支援: 你可以反過來問這個 API「有哪些型別、哪些欄位、每個欄位吃什麼參數」。對接原廠 CCW 時,這件事的價值在於——不必人去逐頁啃文件、再手刻每一種料號規則,而是讓 AI 拿著 API 自己吐出來的 schema,自己組出要問的查詢。

以下範例是 GitHub API 的 GraphQL端點,然後使用Postman這個工具提供的功能,讓他自己去要求出來的query method跟Request類型。

Postman 對 GitHub GraphQL 端點(https://api.github.com/graphql)做 introspection:左側 schema explorer 自動列出可用欄位(enterpriseMemberInvitationByToken、license、licenses…)與型別,勾選 id 後右側自動生成 query「query Id { id }」,下方回傳 {"data":{"id":"RootQueryObject"}}——不必讀文件,直接問 API 就拿到 schema 與可用查詢

剩下具體的操作無非就是讓LLM去讀每個端點跟結構的描述,然後讓AI嘗試去組可以達成你要求的query組合,最後定型成你想要的function即可。

如果你是一個對於這類原廠資料應用不熟悉的人,這是一個可以很輕鬆寫意完成的開始方式。

說歸說,直接看 AI 實跑一次的樣子,它自己問結構、自己組出查詢、自己跑完:

AI agent 自主查 GitHub GraphQL 的實際過程:給定端點與 .env 憑證、要求「問出結構後找出非 fork repo 中 commit 數最多的前三名」後,AI 自己①讀 .env 取憑證②對端點做 schema introspection 確認可用欄位(isFork、defaultBranchRef、history.totalCount)③自組查詢撈出帳號所有非 fork repo,最後回傳依 commit 數排序的前三名結果表——全程由 AI 自行決定要問什麼、怎麼組查詢,耗時 47 秒
接續上圖,AI 自己送出的兩個 GraphQL request body(POST 到 GitHub 端點):①introspection 問結構 query{ __type(name:"Repository"){ fields{ name } } };②查非 fork repo 與 commit 數的 viewer{ login repositories(first:100, ownerAffiliations:OWNER, isFork:false){ … defaultBranchRef{ target{ … on Commit{ history{ totalCount } } } } } };並附展開後易讀的 GraphQL 與 Authorization: Bearer 標頭——證明查詢是 AI 依 schema 自己生成的,不是人寫死的

這篇帶走什麼?

  • 規模牆先用「檢索」壓下來: 16 萬組型號不整包丟給 LLM,先用向量檢索撈出相關的幾十組,省 token、也避免 context 太雜導致幻覺。
  • 向量 = 語意的尺: 把資料變成座標點,用內積(dot product)量相似度,就是語意檢索的本質。
  • introspection 讓 AI 自己問 schema: 不用人手刻料號規則,讓程式直接問原廠 API「你有哪些欄位」,AI 拿著 schema 自己組查詢。
  • 系列主張 —— 把「窮舉與查證」交給機器; 把「判斷與談判」留給人,業務空出來要做什麼,留白給人自己。

牆翻過去了。但一套系統做得出來,不等於它真的被用起來。明天 D27,我講這套下單系統上線後業務/售前實際怎麼用它出報價、省下多少時間、人被釋放去做了什麼——這是三部曲最扣主張的一篇。


上一篇
《 Day25》【向原廠下單系統 ①】人工組報價單的規模極限:型號、相容、折扣的組合爆炸,為什麼非自動不可
下一篇
《 Day27》【向原廠下單系統 ③】後續實際引用:業務/售前現在怎麼用它出報價、省下多少時間、人改去做什麼
系列文
《讓 AI 去扛人類守不住的戰場,而不是取代人:系統整合商 AI 導入實戰(2026)》29
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言