semantic/ — 語意搜尋

nomic-embed-code、11-signal 計分、MinHash/ROTSQ
目錄:src/semantic/(semantic.c + rotsq.c + ast_profile.c + minhash.c)

大方向

semantic/semantic_query 可以用自然語言找程式碼——不需要 API key、Ollama、Docker,因為向量模型(nomic-embed-code,768d int8)編譯進二進位


1. 向量搜尋

semantic.c semantic/semantic_query 的核心:embedding 比對 + 組合計分。

查詢文字被轉成 embedding,與圖中節點比對。但它不是「單一向量距離」——而是 11-signal 組合計分:TF-IDF、RRI、API/Type/Decorator signatures、AST profiles、data flow、Halstead-lite、MinHash、module proximity、graph diffusion 等加權合成。

2. ROTSQ 與 AST profile

rotsq.c · ast_profile.c semantic/ROTSQ 與 AST 特徵輪廓。

單靠 token 向量會漏掉「結構上像」的函式。ast_profile 把 AST 的形狀(巢狀、呼叫數量、參數模式)編成特徵,rotsq 提供另一種訊號——讓「詞彙完全不同但做的事一樣」的函式也能被找到。

3. MinHash(近複製)

minhash.c semantic/ + simhash/SIMILAR_TO 邊的底層:Jaccard 近複製偵測。

MinHash + LSH 對大圖做近似重複偵測,產出 SIMILAR_TO 邊(Jaccard 計分)——找 copy-paste 程式碼。

看完這頁你應該能說出:semantic 搜尋為何不需要 API key(模型編譯進二進位)、11-signal 計分比單一向量距離強在哪、AST profile/ROTSQ 怎麼補 token 向量的盲點、以及 MinHash 產出 SIMILAR_TO。