35 points par xguru 2026-01-29 | 3 commentaires | Partager sur WhatsApp
  • Moteur de recherche CLI léger développé pour rechercher localement divers documents basés sur Markdown, comme des notes personnelles, de la documentation technique ou des comptes rendus de réunion
  • Pipeline de recherche hybride combinant recherche plein texte BM25, recherche sémantique vectorielle et reclassement (re-ranking) par LLM
  • Toutes les opérations sont effectuées en local, ce qui permet d’offrir une qualité de recherche de niveau IA sans fuite de données personnelles
  • Prend en charge 3 modes de recherche
    • search : recherche par mots-clés basée sur BM25
    • vsearch : recherche sémantique basée sur les embeddings
    • query : mode de meilleure qualité combinant les deux approches avec un reclassement par LLM
  • Serveur MCP (Model Context Protocol) intégré, permettant une intégration directe avec des workflows basés sur des LLM comme Claude
  • Tous les modèles sont exécutés on-device via node-llama-cpp
    • Télécharge et met automatiquement en cache des modèles au format GGUF tels que embeddinggemma-300M, qwen3-reranker-0.6B et Qwen3-1.7B
  • Méthodes utilisées pour améliorer la qualité de recherche
    • La requête de recherche de l’utilisateur est enrichie via une expansion de requête (Query Expansion) avec le modèle Qwen3-1.7B
    • Recherche parallèle via SQLite FTS5 et sqlite-vec
    • Fusion des résultats avec Reciprocal Rank Fusion (RRF)
    • Réévaluation de la pertinence des documents avec Qwen3-Reranker
    • Ajustement des poids selon le rang pour maintenir l’équilibre entre précision et similarité sémantique
  • Écrit en TypeScript et basé sur le runtime Bun. L’index est stocké dans une base de données SQLite
  • Licence MIT
  • Open source de Tobi Lütke, fondateur et CEO de Shopify

Exemple d’utilisation

# Install globally  
bun install -g https://github.com/tobi/qmd  
  
# Create collections for your notes, docs, and meeting transcripts  
qmd collection add ~/notes --name notes  
qmd collection add ~/Documents/meetings --name meetings  
qmd collection add ~/work/docs --name docs  
  
# Add context to help with search results  
qmd context add qmd://notes "Personal notes and ideas"  
qmd context add qmd://meetings "Meeting transcripts and notes"  
qmd context add qmd://docs "Work documentation"  
  
# Generate embeddings for semantic search  
qmd embed  
  
# Search across everything  
qmd search "project timeline"           # Fast keyword search  
qmd vsearch "how to deploy"             # Semantic search  
qmd query "quarterly planning process"  # Hybrid + reranking (best quality)  
  
# Get a specific document  
qmd get "meetings/2024-01-15.md"  
  
# Get a document by docid (shown in search results)  
qmd get "#abc123"  
  
# Get multiple documents by glob pattern  
qmd multi-get "journals/2025-05*.md"  
  
# Search within a specific collection  
qmd search "API" -c notes  
  
# Export all matches for an agent  
qmd search "API" --all --files --min-score 0.3  

3 commentaires

 
xguru 2026-01-29

J’enregistre diverses informations dans Obsidian et je les consulte sur Windows, Mac et iPhone, et pour les infos que j’organise en lien avec GeekNews, je les consigne dans un dépôt Git. Avec ça, je peux désormais faire des recherches et les consulter facilement depuis un seul endroit.

 
haung921209 2026-02-05

Comment gérez-vous la synchronisation entre Windows + Mac + iPhone ?
De mon côté, j’utilise Git entre Windows et Mac, et iCloud entre Mac et iPhone, mais il y a pas mal de points frustrants. (Par exemple, même si je fais un commit avec Git depuis Windows, l’envoi automatique vers iCloud ne se fait pas.)
Je vous pose la question par curiosité !

 
xguru 2026-02-05

J’utilise la synchronisation d’Obsidian via iCloud sur Windows, Mac et iPhone.
Sans utiliser Sync, qui est payant, ça me semble être actuellement la meilleure méthode.