Persekitaran: Linux WSL2 (Ubuntu 24.04 / Node.js 22+)
Klasifikasi: Sistem Carian Tempatan Berdaulat (Sovereign On-Device Search)
Lokasi Indeks: ~/.cache/qmd/index.sqlite (SQLite + FTS5 + sqlite-vec)
Model AI Tempatan: embeddinggemma-300M (Vektor), Qwen3-Reranker-0.6B (Penyusunan Semula), QMD Query Expansion 1.7B (Pengembangan Pertanyaan)
1. Pengenalan & Ciri Utama QMD
QMD (Quick Markdown Search) ialah enjin carian hibrid tempatan (on-device hybrid search engine) yang direka khas untuk fail Markdown dan kod sumber. Ia menggabungkan:- Carian Leksikal (BM25): Padanan kata kunci pantas tanpa memerlukan GPU/LLM (
qmd search). - Carian Semantik Vektor: Carian konsep berasaskan makna teks menggunakan model benaman padat GGUF (
qmd vsearch). - Carian Hibrid + Reranking (Disyorkan): Menggabungkan skor leksikal dan vektor dengan Reciprocal Rank Fusion (RRF) serta penarafan semula menggunakan model reranker (
qmd query). - Integrasi MCP (Model Context Protocol): Menyediakan antara muka protokol standard untuk ejen AI (Antigravity, Cursor, Claude Code) mencari dan membaca dokumen tanpa membaca keseluruhan fail.
2. Pemasangan & Persediaan Awal (Installation)
A. Keperluan Sistem
- Node.js versi 22 atau ke atas (
node -v). - Direktori npm global tanpa hak akses root (
~/.npm-global). - Pakej kompilasi sistem (pilihan, jika sqlite-vec memerlukan binaan tempatan):
build-essential.
B. Langkah Pemasangan Melalui NPM
C. Muat Turun Model AI Tempatan (GGUF)
QMD menggunakan model tempatan bersaiz padat yang disimpan dalam format GGUF:embeddinggemma-300M-GGUF(Penjanaan vektor benaman)Qwen3-Reranker-0.6B-Q8_0-GGUF(Penarafan semula ketepatan carian)qmd-query-expansion-1.7B-gguf(Pengembangan semantik pertanyaan)
3. Seni Bina Berbilang Projek (Multi-Project Separation)
Bagi mengelakkan kekeliruan hasil carian (cross-project clutter), setiap projek diasingkan menggunakan koleksi tersendiri (project-scoped collections):A. Mendaftarkan Koleksi Projek
Setiap direktori didaftarkan dengan nama unik:B. Memeriksa Status Koleksi
4. Pengindeksan Bertahap & Efisien (Incremental Indexing)
QMD menggunakan semakan cap masa (mtime) dan cincangan SHA-256 bagi setiap dokumen:- Fail yang tidak berubah TIDAK AKAN diindeks semula dan TIDAK AKAN dijana semula vektornya.
- Hanya fail yang baru ditambah atau diubah suai sahaja yang diproses.
A. Arahan Pengindeksan Harian / Manual:
5. Automasi Berkala (Hourly Cron Sync di WSL2)
Bagi memastikan dokumen sentiasa terindeks secara automatik tanpa memerlukan arahan manual, skrip automasi dan entri crontab telah disediakan:A. Lokasi Skrip Automasi (~/.local/bin/qmd-sync-hourly.sh)
B. Konfigurasi Crontab
Dijalankan pada minit ke-0 setiap jam:6. Kaedah Penggunaan & Carian (Usage Workflows)
A. Carian Khusus Projek (Scoped Search secara Lalai untuk Optimasi Latensi)
Gunakan bendera-c <koleksi> secara lalai dalam skrip carian tempatan untuk meminimumkan latensi query FTS5 SQLite dan mengelakkan carian bersilang projek:
B. Carian Merentas Semua Projek (Global Search)
Apabila mencari corak yang pernah dibuat dalam mana-mana projek:C. Mengambil & Membaca Kandungan Dokumen
7. Integrasi Ejen AI Melalui FastMCP (tools/mcp/server.py & mcp_config.json)
QMD boleh disepadukan dengan ejen AI (Cursor / Claude / Gemini) melalui dua kaedah:
A. Integrasi Alatan FastMCP Terus (tools/mcp/server.py)
Pelayan DSOM FastMCP menyepadukan alatan qmd_search secara terbina bagi carian hibrid tempatan (perlu diperhatikan bahawa pengasingan skop koleksi tidak dibuat secara automatik dan pemanggil perlu menyerahkan parameter koleksi aktif, contohnya collection="oss-docs"):
B. Konfigurasi Pelayan Stdio MCP Standalone
QMD menyokong Model Context Protocol (MCP) secara terbina dalam melalui arahanqmd mcp (stdio transport).
Konfigurasi Ejen Antigravity (~/.gemini/config/mcp_config.json):
query: Carian hibrid dengan hujahquerydancollection.get: Membaca dokumen atau julat baris dokumen.multi_get: Mengambil banyak dokumen serentak menggunakan corak glob.status: Memeriksa integriti pangkalan data dan senarai koleksi berdaftar.
Deep State of Mind (DSOM) For My AI Protocol | Harisfazillah Jamel (LinuxMalaysia) | 2026-10-11 Standard: UK English | DBP-standard Bahasa Melayu Malaysia (Piawai) | GNU General Public License v3.0