搜尋
Engram 會為筆記內容建立 語意搜尋 索引,能找到意思與你的查詢相近的筆記,即使 措辭不同。精確比對搜尋也受支援,但在哪裡執行取決於範圍。
Engram 如何搜尋
Section titled “Engram 如何搜尋”- 跨整個知識庫的語意搜尋。 對每則筆記的嵌入向量進行向量相似度比對。找出相關 的想法,而不只是字面文字。這是目前網頁版搜尋面板所執行的搜尋。
- 關鍵字與混合搜尋。 後端也會為筆記建立可安全搭配加密的關鍵字(字面)搜尋 索引,以及融合字面與向量結果的混合模式(見下文)。這些功能已在後端推出;網頁版 的搜尋面板尚未提供模式切換,所以目前仍發出語意查詢。
- 在開啟的筆記內精確比對。
Ctrl/Cmd+F與編輯器的尋找/取代,是在你目前 工作階段中對已解密的筆記運作,和任何文字編輯器一樣。
字面/正規表示式搜尋呢?
Section titled “字面/正規表示式搜尋呢?”Engram 支援對整個知識庫進行關鍵字(詞彙)搜尋,而且不會破壞靜態加密。後端不是掃描明文,而是為每個區塊建立以 HMAC(your vault key, token) 為鍵的稀疏向量索引,所以伺服器可以拿查詢詞與索引比對,卻從不持有可讀的筆記文字。關鍵字、語意(向量)與混合(詞彙加向量,在伺服器端以倒數排名融合)三種模式,後端都已上線。
這也表示,伺服器端仍無法對原始文字進行真正的子字串或正規表示式搜尋(索引的單位是詞元,不是字元)。需要正規表示式、區分大小寫或依路徑篩選的字面搜尋時,仍請使用 Obsidian 本機的搜尋面板(它會掃描你磁碟上的 .md 檔案)。編輯器中的 Ctrl/Cmd+F 也可用來在已開啟的筆記內尋找。
Engram 與 Obsidian 的搜尋是互補的:語意、關鍵字與混合搜尋在雲端;完整的正規 表示式/區分大小寫/依路徑篩選的字面搜尋則在磁碟上。Obsidian 的本機搜尋窗格是 針對 Engram 正在同步的同一個知識庫執行。
- 網頁版搜尋面板(搜尋列):目前提供語意查詢
- Obsidian 外掛 對與網頁版相同的後端執行搜尋
- Obsidian 搜尋窗格:對磁碟上的知識庫進行本機的正規表示式/區分大小寫/ 路徑字面搜尋
若要使用正規表示式或限定路徑的字面比對,請改用 Obsidian 的本機搜尋。
排序如何運作
Section titled “排序如何運作”- 你的查詢會被嵌入(查詢模型與文件模型是非對稱的,針對檢索而非索引調校)
- Qdrant 以二元量化 + 重新評分回傳前 K 個向量比對結果
- 如果設定了重排序器(後端上的
RERANKER_BACKEND=jina+JINA_URL),候選 結果會以向量與重排序器分數 40/60 的比例混合重新排序;如果沒有,則使用原始 的向量排序
目前預設的雲端部署在沒有重排序器的情況下執行;Jina 轉接器已經完成,隨時可以 啟用。
透過 API 支援將搜尋限制在某個資料夾。傳入 folder=<path> 查詢參數即可。類似
folder:work/ 的搜尋框查詢語法已列入規劃,尚未接到介面上。
語意搜尋表現不佳的情況
Section titled “語意搜尋表現不佳的情況”- 知識庫非常小(少於 20 則筆記)。 可供比較的嵌入較少;在你的知識庫長大之前, 結果偏向雜訊
- 剛匯入的筆記。 嵌入是透過 Oban 非同步執行的;剛寫好的筆記可能需要幾秒才 會出現在結果中
- 高度特定的行話。 語意相似度最適合概念。對於精確的識別字(函式名稱、錯誤 代碼),關鍵字與混合(字面 + 向量)搜尋更合適。兩者都已在後端上線,網頁版介面 的呈現尚待推出。在那之前,Obsidian 的本機搜尋可以涵蓋精確識別字。