ローカルRAGツールをNemotron Nano 9B v2とvLLMツールコールで構築

技術実装の詳細
開発者が、単一のGPU上で完全に動作するローカルファーストのRAG研究ツールの構築手法を共有しました。バックエンド全体は単一のapp.pyファイルに収められています。
スタックと構成
このツールは、RTX 5090 GPU上で動作するvLLM上でFP16量子化されたNemotron Nano 9B v2 Japaneseを使用しています。バックエンドはFastAPI + SQLite FTS5 + Jinja2を組み合わせています。ツール呼び出しには、NVIDIAの公式パーサープラグイン、具体的には--tool-call-parser nemotron_jsonと--tool-parser-pluginを使用しており、Nemotron v2は組み込みのvLLMパーサー(v3用)ではなく、カスタムパーサープラグインを必要とすることに注意しています。
主要な設計判断
このシステムは、抽出→実行の2段階フローを実装しています:
- 質問が投げられると、システムはまずLLMを介して二言語キーワード(英語と日本語)を抽出します
- ローカルソースに対するFTS5検索とDuckDuckGoウェブ検索を並列で実行します
- ユーザーが選択できるチェックボックス付きで結果を表示します
- ユーザーが選択した後にのみ、最終的な応答を生成します
このアプローチにより、10万トークン以上のコンテキストを一気に投入し、モデルが理解することを期待することを避けています。
パフォーマンスと機能
- ツール呼び出し: モデルは自律的にウェブ検索を行うタイミングを決定し、温度0.1で驚くほど良好に動作します
- プレフィックスキャッシュのウォームアップ: ソース読み込み時にすべてをキャッシュする代わりに、KVキャッシュはユーザーがソースプレビューを見たときにウォームアップされます。ユーザーが実行をクリックする時点では、vLLMの
--enable-prefix-cachingを使用してプレフィックスは既にキャッシュされています - 二言語FTS5検索: ユーザークエリ → Nemotronが英語と日本語の両方でキーワードを抽出 → OR結合されたFTS5 MATCHクエリ。多言語の特許/研究データに効果的です
パフォーマンス数値
- 出力速度:約80-120 tok/s
- 最大トークン数:8192
- ソース抽出:約3-5秒(キーワード抽出 + FTS5 + DDG並列検索)
- 5つのソースと3つのウェブ結果を含む完全な応答:RTX 5090上での詳細な回答に約50秒
セットアップとソース
ソースコードはhttps://github.com/soy-tuber/SoyLMで入手可能です。これはuv pip install -r requirements.txtでインストールできる単一ファイルアプリケーションです。vLLMとNemotronパーサープラグインが別途必要であることに注意してください。
📖 完全なソースを読む: r/LocalLLaMA
👀 See Also

Keyokuプラグインは、OpenClawの静的ハートビートをメモリ駆動型自律性に置き換えます
Keyokuは、エージェントのハートビートを静的なHEARTBEAT.mdファイルの読み取りから、実際のメモリストアをスキャンして停滞した作業、放棄されたコミットメント、矛盾する情報、沈黙した関係性を検出するように変更する無料のOpenClawプラグインです。ローカルのGoエンジン(SQLite + HNSW)を使用し、観察、提案、実行の3つの自律レベルを提供します。

Claude Code上に音声制御マルチエージェントシステムを構築する
開発者がClaude Code用にウェイクワード「Yabby」で起動する音声制御システムを構築。サブエージェントの並列実行、自動QAパス、PID監視機能を搭載。コサイン類似度による話者認証も実装。

ローカルAIエージェントにおける自己改善メモリへのアプローチ
開発者が、マークダウンファイルを信頼できる情報源として使用し、信頼度に基づくルールでエピソードをスコアリングし、承認パターンに基づいて信頼を段階的に上げることで、ローカルAIエージェントの永続的メモリを実現するアプローチを共有しています。

Claude Code LSP: 言語サーバープロトコルによる高速かつ正確なコードナビゲーションの実現
Claude CodeはデフォルトではLSPが無効になっていますが、有効にするとコードナビゲーションが30〜60秒かかるgrep検索から、50ミリ秒で100%正確なクエリに変わります。設定には公式ドキュメントではなくGitHubのissueで発見されたフラグが必要です。