feat(search): recherche semantique - embeddings vectoriels + hybride RRF (#70)

This commit is contained in:
2026-09-12 00:12:20 -04:00
parent 45be3125de
commit 31d4be8015
19 changed files with 1388 additions and 90 deletions
+16
View File
@@ -14,6 +14,22 @@ et [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
### Ajouté
- **#70 Recherche sémantique — Embeddings vectoriels** — la recherche comprend désormais le
**sens** de la requête en plus des mots-clés. **Embeddings** : chaque document est découpé en
chunks de 512 mots (recouvrement 64) puis vectorisé (384 dim) via `all-MiniLM-L6-v2`
(`sentence-transformers`), un endpoint `/embeddings` compatible OpenAI, ou un provider de repli
**sans dépendance** (hachage déterministe). **Stockage vectoriel** : `numpy`/`faiss`
(`IndexFlatIP`) si disponibles, sinon cosinus pur Python. **Recherche hybride** : fusion du
classement TF-IDF et du classement sémantique par **RRF** (Reciprocal Rank Fusion), avec
`semantic_score` par résultat. **Indexation incrémentale** branchée sur le watcher (un fichier
modifié régénère son embedding). **UI** : toggle « Recherche sémantique » (`~`, raccourci
`Alt+S`) dans la barre de résultats + affichage du score de similarité, clés i18n FR/EN.
Nouveau module `backend/semantic_search.py`, paramètre `semantic` sur
`/api/search/advanced`, dépendances **optionnelles** dans
`backend/requirements-semantic.txt`. Tests : `tests/test_semantic_search.py` (27) +
`tests/frontend/semantic-search.test.mjs` (4). Détail :
[docs/features/semantic-search.md](./docs/features/semantic-search.md).
- **#69 Éditeur mobile natif — Interface tactile optimisée** — refonte de l'expérience
d'édition sur téléphone/tablette. **Barre d'outils flottante** dans l'éditeur (gras, italique,
code, liste à puces, lien) opérant directement sur la sélection CodeMirror (ou le textarea de