qmd は何をしますか?
マークダウンノートとドキュメントのためのローカルハイブリッド検索。ノートの検索、関連コンテンツの発見、インデックス化されたコレクションからのドキュメント取得に使用します。
はじめに
このスキルは、ローカルに保存されたマークダウンファイルのコレクションに対して、キーワード検索とセマンティック検索を組み合わせたハイブリッド検索を提供します。
主な機能
- ハイブリッド検索: BM25(キーワード)とベクトル類似度の両方を組み合わせて、より関連性の高い結果を提供します。
- 高速インデックス: ファイルシステムの変更を監視し、インデックスを自動的に更新します。
- スニペット付き結果: 各結果に関連するテキストスニペットが表示され、迅速なコンテキスト確認が可能です。
- ランキング: 複数の検索手法を組み合わせて、結果を関連性順に並べ替えます。
インストール
# インストール方法(プロジェクトによる)
pip install qmd-search
使用方法
from qmd import QMDSearch
# 検索エンジンの初期化
search = QMDSearch(index_dir="./notes")
# クエリの実行
results = search.query("検索したい内容")
for result in results:
print(f"ファイル: {result.path}")
print(f"スコア: {result.score}")
print(f"スニペット: {result.snippet}")
print("---")
設定
環境変数または設定ファイルを使用して動作をカスタマイズできます。
| 変数 | 説明 | デフォルト値 |
|---|---|---|
QMD_INDEX_DIR | インデックスデータのディレクトリ | ~/.qmd/index |
QMD_MAX_RESULTS | 最大結果数 | 10 |
QMD_WEIGHT_KEYWORD | キーワード検索の重み | 0.5 |
QMD_WEIGHT_VECTOR | ベクトル検索の重み | 0.5 |
アーキテクチャ
このスキルは以下のコンポーネントで構成されています:
- ファイル監視:
watchdogを使用してファイルシステムの変更を監視します。 - テキスト抽出: マークダウンファイルからプレーンテキストを抽出します。
- インデックス作成:
whoosh(BM25)とsentence-transformers(ベクトル埋め込み)を使用してデュアルインデックスを作成します。 - 検索実行: 両方のインデックスをクエリし、結果を結合・ランク付けします。
開発
# リポジトリのクローン
git clone https://github.com/levineam/qmd.git
cd qmd
# 開発用インストール
pip install -e .[dev]
ライセンス
MIT