Salta ai contenuti

Ricerca

Engram indicizza il contenuto delle note per la ricerca semantica, che trova le note con un significato simile alla tua query, anche quando la formulazione è diversa. È supportata anche la ricerca per corrispondenza esatta, ma dove viene eseguita dipende dall’ambito.

  • Ricerca semantica su tutto l’archivio. Similarità vettoriale sugli embedding di ogni nota. Trova idee correlate, non solo testo letterale. È ciò che viene eseguito oggi dal pannello di ricerca dell’app web.
  • Ricerca per parole chiave e ibrida. Il backend indicizza anche le note per una ricerca per parole chiave (lessicale) compatibile con la crittografia e per una modalità ibrida che fonde risultati lessicali e vettoriali (vedi sotto). Questi sono disponibili nel backend; il pannello di ricerca dell’app web non espone ancora un selettore di modalità, quindi per ora invia query semantiche.
  • Corrispondenza esatta dentro una nota aperta. Ctrl/Cmd+F e Trova/Sostituisci dell’editor lavorano sulla nota decifrata nella tua sessione corrente, come in qualsiasi editor di testo.

Engram supporta la ricerca per parole chiave (lessicale) su tutto il tuo archivio, e lo fa senza compromettere la crittografia a riposo. Invece di scansionare testo in chiaro, il backend indicizza un vettore sparso per ogni porzione, indicizzato tramite HMAC(your vault key, token), così il server può confrontare i termini della ricerca con l’indice senza mai possedere testo delle note leggibile. Le modalità per parole chiave, semantica (vettoriale) e ibrida (lessicale + vettoriale fuse lato server tramite reciprocal-rank fusion) sono tutte attive nel backend.

Questo significa che una vera ricerca di sottostringhe/regex sul testo grezzo resta impossibile lato server (l’indice è sui token, non sui caratteri); per una ricerca letterale con regex, con distinzione tra maiuscole e minuscole o filtrata per percorso, lo strumento resta il pannello di ricerca locale di Obsidian (che opera sui tuoi file .md su disco). Anche Ctrl/Cmd+F dell’editor funziona per cercare all’interno di una nota aperta.

La ricerca di Engram e quella di Obsidian sono complementari: semantica, per parole chiave e ibrida nel cloud; ricerca letterale completa con regex / distinzione di maiuscole / filtro per percorso su disco. Il pannello di ricerca locale di Obsidian lavora sullo stesso archivio che Engram sta sincronizzando.

  • Pannello di ricerca dell’app web (la barra di ricerca): query semantiche oggi
  • Il plugin per Obsidian esegue la ricerca sullo stesso backend dell’app web
  • Il pannello di ricerca di Obsidian per la ricerca letterale locale con regex / maiuscole / percorso sull’archivio su disco

Per un modello regex o una corrispondenza letterale limitata a un percorso, passa alla ricerca locale di Obsidian.

  1. La tua query viene convertita in embedding (il modello per le query è asimmetrico rispetto a quello dei documenti, ottimizzato per il recupero anziché per l’indicizzazione)
  2. Qdrant restituisce le prime K corrispondenze vettoriali con quantizzazione binaria + rescore
  3. Se è configurato un reranker (RERANKER_BACKEND=jina + JINA_URL sul backend), i candidati vengono riordinati con una miscela 40/60 dei punteggi vettoriali e del reranker; altrimenti viene usato il ranking vettoriale grezzo

Il deployment cloud predefinito oggi funziona senza reranker; l’adattatore Jina è rilasciato e pronto da attivare.

Limitare la ricerca a una cartella è supportato tramite l’API. Passa un parametro di query folder=<path>. Una sintassi di query nella casella di ricerca come folder:work/ è nella roadmap, non ancora collegata all’interfaccia.

  • L’archivio è molto piccolo (< 20 note). Meno embedding con cui confrontare; i risultati tendono a essere rumorosi finché l’archivio non cresce
  • Note importate di recente. L’embedding viene eseguito in modo asincrono tramite Oban; le note appena scritte possono impiegare qualche secondo per comparire nei risultati
  • Gergo molto specifico. La similarità semantica dà il meglio con i concetti. Per identificatori esatti (il nome di una funzione, un codice di errore), la ricerca per parole chiave e ibrida (lessicale + vettoriale) è più adatta. Entrambe sono attive nel backend, con l’esposizione nell’interfaccia dell’app web ancora da venire. Nel frattempo, la ricerca locale di Obsidian copre gli identificatori esatti.