[總管交辦] base KBDB 語意查詢補完:圖內容入嵌覆蓋 + 語意查詢端點(三模式最後一關) #7
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
背景
知識庫整合鋪開中:
Leo/notes分庫已完整 ingest 進 leo21c KBDB(graph 三元組 17→31),三模式驗證裡「圖」「關鍵字」已通,只剩「語意」。語意屬 base KBDB(Arcrunkbdb/)的 optional embed 模組,不在 graph/ingest 插件——故交辦 Arcrun。現況(已核實,非猜測)
GET /embed/backfill/status→{"enabled":true,"pending":0,"embedded":0}(VECTORIZE+AI binding 已注入、indexarcrun-kbdb-embed768/cosine 已建)。leo 已把開關打開。pending:0, embedded:0:圖的三元組/節點一筆都沒進 Vectorize。Gap A1|圖內容進不了「可嵌 entry」路徑(洞2「打標處≠讀標處」的精確樣貌)
kbdb/src/embed.ts:embedOnWrite/backfillEmbeddings只嵌 entries 且條件是metadata_json.$.embed === true(isEmbeddable)。template=triplet/ node),graph 插件在 record/node 上設embed/predicate_embed旗標——embed 模組看不到 records,只認 entries 的 metadata.embed。pending永遠 0。需要決定並補上「橋」:node gloss(與 wiki 卡內容)要落成帶metadata.embed=true的 entry,embed 模組才嵌得到;或擴 embed 模組讓它也吃 records。這是語意能不能查到圖內容的根本前提。Gap A2|沒有語意「查詢」端點(只有 backfill 管理端點)
kbdb/src/routes/embed.ts目前只有POST /embed/backfill+GET /embed/backfill/status(都是回填/巡檢),沒有對外語意查詢。POST /search(或/embed/query)=把 query 文字用env.AI.run(EMBED_MODEL)嵌成向量 →env.VECTORIZE.query()→ 回命中(帶owner_id租戶過濾,用既有 indexed metadata:owner_id/entry_type/source)。模組未開時比照現有409 + capability_hint,不假綠。驗收
leo21c 部署後:① Gap A1 修好→
/embed/backfill/status的pending/embedded反映圖內容 ②POST /search對「邏輯拆解」「身體自信」等 notes 已入庫概念回語意近鄰。屆時知識一庫三模式(關鍵字/語意/圖)全通。對齊
metadata.embed旗標,不寫死 triplet/wiki)。附帶:另一個 base 缺口(可另開 issue,同屬 kbdb base、同卡鋪開)
ingest 大筆記時
POST /triplets/ingest撞 Cloudflare「Too many subrequests by single Worker invocation」(journals/2026_07_01.md11三元組+10node 回 500,三元組已落地、node 層沒寫進去)。根因=base 寫入是「每三元組/每 node 一個 subrequest」串行。鋪開到Leo/kb(5,083 檔)前必須先解:base 出 bulk 寫入端點(一次收整個 envelope)。細節見Leo/mira#12026-07-05 comment。[總管交辦] 2026-07-05。實測環境:leo21c。ingest CLI=
Leo/kbdb-ingest-plugin@fe9fbe1。語意這關端到端通(leo21c 實測)—— A1 已交付、A2 已 code
根因確認:不是缺端點,是「打標≠讀標」——node gloss+embed 標在 entity record(
persistNodes),但 base embed 只掃 entries.metadata_json.embed →pending永遠 0。A1(graph 插件,已部署 leo21c
kbdb-graph-pluginv03e3854e)persistNodes除寫 entity record,另落一筆content=canonical:gloss、metadata.embed=true的 base entry(走 base API、零 SQL、冪等用確定性 page_name)。POST /entities/backfill-gloss-entries對存量補 gloss entry。實測scanned:16 created:16。embedded 5→21、pending:0。kbdb-graph-plugin@arcrun-7-gloss-bridge。A2(base,已 code 未部署):
POST /embed/query薄殼暴露既有semanticSearch(vitest 9/9)。分支Arcrun@arcrun-7-embed-query。既有GET /entries/search?mode=semantic已提供語意查詢,A2 是獨立端點,部署走acr update可延後。[→arcrun] 衍生(頂層 D27):① deploy 顯式 account_id + fail-if-ambiguous(token 常掛多帳號)② deploy 自偵測 remote vectorize 已開就跳過(別靠 AI 小心)③
wrangler deploy條件 guard(只 install/update 放行,能力走 cypher binding)。[總管] 2026-07-05 雲端。
✅ 結案(2026-08-09 逐票查核)
這張票描述的問題現在已經不存在。
證據
KBDB 語意查詢端點已存在;graph 內容透過 `metadata.embed=true` 橋接進嵌入。
查核方式:讀現行程式碼實證,非讀票面推測。總管另抽驗過同批中三張(#5/#58/#59),全部屬實。
如果我判錯了,重開就是——關錯票的成本遠低於留著一堆假的待辦,而假待辦會讓 leo 看不出還剩什麼。
[總管·票務複驗 2026-08-09 晚] ✅ 關票——問題已不存在,證據是我自己跑出來的。
kbdb/src/routes/entries.ts有 8 處 semantic 模式的處理,GET /entries/search?mode=semantic端點存在並運作。⇒ 三模式最後一關(語意查詢端點)已補完。📌 為什麼是現在才關:這個 repo 的 37 張票原本一張狀態標籤都沒有,等於在看板上不存在,也就沒有人會回頭看它們還成不成立。今晚做了一次全面驗傷,只有實際跑指令驗到問題真的消失的才關;查不出來的一律留著並標明卡在哪。
如果我判錯了(例如你要的其實比程式碼裡這些更多),直接重開這張票,我不會有意見。