コンテンツにスキップ

検索

kura は、速度と精度をトレードオフする 3 つの検索コマンドを提供します。 いずれもすべてローカルで動きます。

BM25 ランキングによる FTS5 全文検索です。新規インストール時は sqlite-vaporetto 形態素解析トークナイザーを使うため、日本語クエリは文字 n-gram では なく実際の単語に分割されます。高速(通常 100ms 未満)で、LLM プロバイダを必要としません。常に動くモードです。

kura search "WAL チェックポイント"

ドキュメントに現れる語が概ね分かっているときに使います。

sqlite-vec を使った、embedding に対するベクトル K 近傍検索です。ドキュメントはチャンクに分割されて ローカルモデルで embedding 化されるため、クエリは正確な語ではなく 意味で一致します。「書き込み中も読める仕組み」というクエリが、 共通語が無くても「WAL チェックポイント」というメモを引き当てられます。

kura vsearch "書き込み中も読める仕組み"

vsearch は embedding を必要とし、embedding はプロバイダを必要と します。下の劣化動作を参照してください。

kura query — ハイブリッド(最高精度)

Section titled “kura query — ハイブリッド(最高精度)”

フルパイプラインです。キーワード検索とセマンティック検索を実行し、 2 つのランク付きリストを融合してから、上位候補をローカル LLM で リランクします。最高精度のモードで、正確な語が分からないときに 使います。

kura query "SQLite の並行性"
分かっているもの 使うモード
現れる語 kura search
語ではなく発想だけ kura vsearch
語はさておき最良の答えが欲しい kura query

ドキュメントの一覧ではなく答えが欲しいときは kura ask を使い ます。ハイブリッド検索を実行したうえで、上位ヒットだけを根拠に ローカル LLM が質問に回答し、出典を [1], [2] … の形で引用します。

kura ask "WAL モードで reader は writer をブロックする?"

回答の後に番号付きの出典一覧が表示されるため、どの主張もドキュメント まで遡って確認できます。回答の根拠はナレッジベースの内容だけで、 該当する情報が無ければ推測せずにその旨を答えます。LLM プロバイダが 無いときは、通常の検索結果を表示します。

セマンティック検索とハイブリッド検索は、投入済みのベクトル インデックスから読み取ります。書き込み時は新しいチャンクを未処理として 記録するだけです。検索前に未処理チャンクが100件以下なら自動で embedding 化し、それより多い場合や中断後の再開には kura embed を使います。 kura status は embedding カバレッジを表示するので、バックフィルの 要否が分かります。

embedding モデルを変更したら、kura doctor --fix(変更の検出)に 続けて kura embed を実行し、新しいモデルの次元でベクトルを再生成 してください。

キーワード検索とハイブリッド検索はオフラインでも動きます。モデルが 必要なのは純粋なセマンティック検索だけです。

  • kura search はプロバイダの有無にかかわらず常に動きます。
  • kura query は、セマンティック検索やリランクが利用できない ときはキーワード結果側へフォールバックします。モデル由来の精度 向上は無いものの、答えは返ります。
  • kura ask は、回答の生成ができないときは通常の検索結果の表示 へフォールバックします。
  • kura vsearch は例外で、embedding プロバイダを必須とし、 フォールバックしません。到達できない場合は終了コード 4(LLM プロバイダ利用不可)で終わります。キーワード検索へ劣化させたい ときは kura query を使ってください。

これはコアの保証です。ナレッジベースはオフラインでも検索可能なまま です。プロバイダの選択や無効化は 設定 を 参照してください。