精確
對標題、章節標題、摘要、關鍵詞做子字串比對。永遠排在以下所有通道之前。
標題精確命中
Dynamic Revealing Vector Search
你的清單留在原處,維持原本的順序。查詢只改變每一列的可見程度 —— 強命中維持明亮,弱的逐階變暗,未命中淡成殘影。沒有任何東西被搬走、重新排序或移除。結果頁會丟掉的脈絡,在這裡被保留下來。
九篇關於極其日常事物的文件 —— 咖啡、陽台番茄、自行車鏈條 —— 刻意與 DRVS 的來源專案毫無關聯。這是真正的套件在你的瀏覽器裡、對著真正預先建好的索引執行。不是示意圖,也不是錄影。
這份語料庫另有英文版,文件 id 與關聯完全對應。兩邊以相同方式建置與測試 —— 「不綁定特定書寫系統」這句話,就是靠這個對照去驗證,而不是用講的。
可校準的信心度
攝影師用階段尺檢查曝光 —— 一條密度已知、等距遞減的色階條。DRVS 的排序是同一回事:每筆結果落在固定的一階上,而那一階就是你實際看到的透明度。這些是 config/search.config.json 裡的真實數值,不是示意。
精確。查詢字串確實出現在標題、章節標題或已確認的別名裡。
接近。詞彙重疊度高,或精確命中落在較次要的欄位。
薄弱。字元層級或向量的相似,沒有任何字面上的錨點。
疏遠。多半是結構性的 —— 某個真正命中結果的同系列文件。
遮蔽。仍在頁面上、仍可閱讀,只是退到一旁。
分級從不單靠顏色傳達。每一列同時獲得一個透明度階級以及一段指名理由的文字標籤,另外還有給輔助科技用的 data-drvs-tier。在強制色彩模式下透明度階梯會被抹平,這時就由標籤獨自承擔。
五個通道,一個誠實的答案
不是一個相關度分數,也不是「模型覺得像」。每一筆結果都帶著一個你可以自行查證的具體主張 —— 而當某個通道對某份文件無話可說時,它就保持沉默,而不是憑空生出一個數字。
對標題、章節標題、摘要、關鍵詞做子字串比對。永遠排在以下所有通道之前。
標題精確命中
中日韓字元二元組加上拉丁字詞重疊,所以錯字與換句話說仍能命中。不需要詞幹還原,也不需要語言設定。
詞彙相似命中
別名展開,且每一筆都能指出證據 —— 一份人工策展的別名集,或文件在自己標題裡自行定義的縮寫。
命中已確認別名「酪梨」
沒有直接命中的文件,可以透過一條策展過的連結、搭上真正命中者的順風車 —— 而且它會照實說明,不會假裝自己命中了。
與直接結果屬於同系列
在瀏覽器裡即時計算向量,與預先建好的向量比對。不需要 API,沒有每次查詢的成本。做到段落層級,所以它能指名是哪一段。
段落語義近似(保存)
每個選用通道都以結構性的方式降級。沒有詞典、沒有向量、模型載入失敗 —— 其餘部分照常運作,而且上游完全不會察覺。
精確與詞彙仍照常排序
多數搜尋介面做錯的地方
當沒有任何結果通過信心門檻時,它會放寬門檻、仍然回傳最接近的文件,並且明白告訴你它這麼做了:「沒有找到高可信度直接結果。以下僅列出語義上最接近的文件。」你看得到結果,也看得到但書。
把弱命中打扮成有把握的結果。放寬門檻一律揭露,低信心提示絕不隱藏,而一份確實空無一物的索引會照實說明,不會硬湊清單。非歸零不等於可以編造。
開始使用
Python,建置期執行。輔助函式處理檔案層級的雜事 —— frontmatter、章節標題、摘要、關鍵詞 —— 所以你的 adapter 大多只是接線。
# your adapter walks your corpus and assigns ids
from build.extract import extract_document, compact_document
docs = [extract_document(doc_id, title, url, text)
for doc_id, title, url, text in my_corpus()]
index = {"count": len(docs),
"documents": [compact_document(d) for d in docs]}
控制項的 markup 會替你建好。你的列除了多幾個 class 與 data 屬性之外,不會被動到。
import { createRevealUI, STRINGS_EN } from "drvs/ui";
createRevealUI({
root: "#search",
rowSelector: "[data-doc-id]",
indexUrl: "/drvs/index.json",
strings: STRINGS_EN,
});
覆寫自訂屬性即可。你不應該需要 fork 這份樣式表。
:root {
--drvs-accent: #e8743b;
--drvs-tier-c-opacity: .62;
}
把你實際的檔案轉成文件記錄的那個 adapter —— 走訪你的儲存空間、指派穩定 id、對應網址。DRVS 刻意不對「語料庫由什麼構成」抱持任何預設,因為這正是任何通用套件都無法誠實代勞的一環。
還有詞典裡該放什麼。產生器會從自我定義式標題提出候選,但編造出來的別名是這套系統所能造成最大的傷害:它會讓毫不相干的文件看起來像已確認的命中,而且掛在介面上最具權威的那個標籤底下。出貨前請先讀過 audit_candidates() 的輸出。