💍

RAGを埋め込んだGeminiをコマンドで使う(Obsidian,NeoVim対応)

に公開

はじめに

最近GoogleでFile Searchという簡単にRAGが使えるAPIが提供されました。任意のStore名を指定して、ファイルをアップロードすれば、以降はGeminiのAPIでChatする際にtoolにそのStore名を指定するだけでRAGとして使ってくれるというお手軽さ。RAGにすることで、大量のデータをプロンプトに含ませることなく、「朝御飯」や「朝ごはん」などの言葉のゆらぎも考慮して結果に含んでくれるようになります。

上記を実行できるragujuaryというコマンドを実装しました。各種プラットフォーム用のバイナリがダウンロードできます。日本語のマニュアルもありますが、簡単に下記で説明してみます。

事前準備

ragujuaryを使用するには、Google AI StudioでGemini APIキーを取得し、環境変数に設定しておく必要があります。

export GEMINI_API_KEY="your-api-key-here"

APIキーはGoogle AI Studioから取得できます。

RAGを作成する

ragujuaryコマンドは指定したディレクトリ配下のファイルを一括でGoogle File Searchに登録します。除外したいファイルなどがある場合は-e 正規表現で除外できます(例: .git)。

ストアは-sで指定しますが、指定しなければdefaultというストア名(厳密に言うとdisplay name)が使われます。最初のupload時はストアがまだないことが多いと思うので、--createのオプションを追加します。

例えば、ObsidianのVaultの一部をRAGにしたい場合は以下のようになります。

~ ❯ ragujuary upload --create -s my-vault -e '.*private.*' ./tips
Creating File Search Store 'my-vault'...
Created File Search Store: fileSearchStores/myvault-s88ftf962x27
Discovering files in directories: ./tips
Excluding patterns: .*private.*
Found 4 files

Uploading files to File Search Store 'myvault-s88ftf962x27' (parallelism: 5)...

✓ /home/takeshy/tips/Card.md
✓ /home/takeshy/tips/Hubspot properties 移行.md
✓ /home/takeshy/tips/Mastraの基本機能と何ができるか.md
✓ /home/takeshy/tips/LLMのコーディングエージェントを効率よく使うために.md

Upload complete:
  Uploaded: 4
  Skipped:  0
  Failed:   0

ストアの確認

作成されたストアをコマンドで確認してみましょう。

ragujuary list --stores
Fetching File Search Stores from Gemini...

File Search Stores (2):

NAME                                         DISPLAY NAME    CREATED                      UPDATED
----                                         ------------    -------                      -------
fileSearchStores/obsidianvault-67m3n6yyejd0  obsidian-vault  2025-12-13T04:19:50.594971Z  2025-12-13T04:19:50.594971Z
fileSearchStores/myvault-s88ftf962x27        my-vault        2025-12-13T04:24:39.991074Z  2025-12-13T04:24:39.991074Z

--storesオプションを指定することで、現在登録されているストアの一覧を表示します。DISPLAY NAMEに自分が指定したmy-vaultになっているストアができました。

File Searchは裏側では正式な名前として、ユニークになるようなfileSearchStores/で始まるNAMEを作成します。API等でnameを指定する場合はこちらのNAMEを使う必要があります。

登録ファイルの確認

登録されたファイルを確認するには下記を実行します。

ragujuary list -s my-vault
Files in store 'myvault-s88ftf962x27' (27 total, from local cache):

  /home/takeshy/tips/Card.md
  /home/takeshy/tips/Hubspot pipeline stage 移行.md
  /home/takeshy/tips/Hubspot properties 移行.md
  /home/takeshy/tips/LLMのコーディングエージェントを効率よく使うために.md

Store created: 2025-12-13 13:24:40
Last updated: 2025-12-13 13:25:17

問題なくアップロードされていることが確認できました。

ragujuaryではアップロードしたファイルのチェックサムを保存し、次回以降ファイルが変更されていなかった場合はアップロードをしないようにしています。その他細かい情報はREADMEを参考にしてください。

RAGを使って調査する

それではいよいよRAGを使うよう指示したGeminiに質問してみましょう。RAGUJUARY_STORE環境変数にstore名を入れると、それを使ってくれるので-sで毎回指定しなくてすむようになります。以降はセットされた前提で進めます。

-mでモデルをセットすることができます。ここではRAGのありなしがわかりやすいgemini-2.5-flashを指定してみます。

ragujuary query -m gemini-2.5-flash "最近の私の仕事内容は?"
Querying File Search Store 'obsidian-vault'...
申し訳ありませんが、私はあなたの最近の仕事内容について知ることはできません。私はあなたの個人的な情報や過去の活動にアクセスできません。

おや、RAGを使ってくれませんね。gemini-2.5-flashの場合は明示的にRAGを指定しないとうまく使ってくれないようです。RAGを使うように指示してみました。

ragujuary query -m gemini-2.5-flash "最近の私の仕事内容をRAGで調べて"
Querying File Search Store 'obsidian-vault'...

最近のあなたの仕事内容について、提供された情報に基づいて以下のような活動を行っていることがわかります。

あなたは人材エージェント向けのアプリケーションと企業向けのアプリケーションの2種類を開発しています。

今度はうまくいきました!「RAGで調べて」と言うと使ってくれるようです。Obsidianの日報の内容から仕事内容をひっぱってきていて、内容もあっています。

gemini-3-pro-previewを試す

今度はgemini-3-pro-previewを試してみましょう。gemini-3-pro-previewはRAGを使ってと言わなくても使ってくれます。内容もより詳しいです。そのためモデルを指定しないデフォルトはgemini-3-pro-previewにしています。ただし結構時間がかかります。

ragujuary query "最近の私の仕事内容は?"
Querying File Search Store 'obsidian-vault'...

ご自身の最近(2025年12月上旬頃)の作業ログによると、主に**「企業向けアプリ(LPアプリ)の開発・自動化」**および**「HubSpot連携」**に関連する実装を集中的に行っているようです。

具体的には以下のような業務に取り組まれています。

### 1. 企業向け機能の実装と自動化

このあといろいろとカテゴリに分けて行ったことを表示し、最後にまとめが出力されます。すばらしい。思った以上に詳しい内容が出ています。

便利なので普段使っているエディター(Obsidian、NeoVim)からも使えるようにしたいとプラグインをそれぞれ作成しました。

ObsidianでRAGが使えるGemini Pluginを使う

terminalのプラグインを使ってterminalで上記を実行するでもいいのですが、別途Gemini用のPlugin gemini-helperを作成しました。vault配下のディレクトリが対象にできるので管理しやすいかなと。File Searchを登録する実装もPlugin内に含まれています。

日本語READMEもあるので詳しく知るにはそちらを参照してください。

インストール方法

今のところインストール方法は下記です。Community Pluginに申請中。wysimark-editorというObsidian上でリッチテキストエディターを使えるようにするPluginも申請中で、たてこんでいて2〜3週間かかるそうです。
install用設定画面

  1. releaseからmain.jsmanifest.jsonstyles.cssをダウンロードする
  2. Obsidianのプラグインのディレクトリ(人やvaultによって違う 例: ~/vault名/.obsidian/plugins)にgemini-helperというディレクトリを作成する
  3. 2で作成したディレクトリに1でダウンロードしたファイルを移す
  4. 設定のCommunity Pluginsの項目を選択し、Installed PluginにGemini Helperが出ている(出ていない場合はリロードマークをクリック)ので有効にする

設定方法

まず設定画面のCommunity PluginsからGemini Helperを選択し、Gemini API KeyにAPIキーを設定します。APIキーはGoogle AI Studioから取得できます。
基本的にragujuaryと同じです。
RAG設定画面

設定画面のCommunity PluginsのGemini Helperを選択します。初期はRAGがOFFになっているので、ONにしてターゲットのディレクトリ(指定しない場合はvault全体)をカンマ区切りで指定、除外ファイルを正規表現で1行ごとに指定します。

「Sync Vault」でFile Searchへのアップロードが始まります。結構時間がかかる(1ファイル4秒以上)ので現状は5多重で並列にアップロードしています。

Obsidianプラグイン独自の機能

  • チャットの履歴をMarkdownファイルで残しているので過去のやりとりを簡単に見れます
  • RAGの設定を複数登録出来、Obsidian外で作成したRAGのストア名を同時に複数指定できます
  • チャット画面でRAGのあり、なし及びどのRAGの設定を使うかプロンプトごとに選択できます。
  • 新規ファイルはそのままAIがファイルを作成しますが、変更の場合はいったん適用させて、「適用する」「しない」のボタンで「しない」を選んだらrollbackで戻します
  • Vault内のファイルに対してSearchやReadの機能も提供しているので、そもそもRAGがなくてもVault内のファイル検索して回答してくれることが多いのでRAGなしでも便利。例えば昨日の日報を元に今日の日報を作成してと依頼すると、昨日の未完了タスクや明日やる事を参考に自動的に今日やる事のタスクになった状態の日報を作成してくれます
    チャット履歴

NeoVimでRAGが使えるGemini Pluginを使う

GeminiPlugin使用図

ObsidianのGemini HelperのPluginが便利だったのでNeoVimでもgemini-helperを作ってみました。

こちらのPluginはragujuaryコマンドで作成するなどして他のプログラムでFile SearchのRAG自体は作成されている前提です。File SearchのStore名を設定することで、Geminiを呼び出す時にそのstoreをRAGとして使えるようにします。NeoVimの場合はいろいろなstoreを切り替えて使えるほうが利便性が高いだろうと思いこの方式にしました。

ただすみません。NeoVim触りはじめて3ヶ月程度なので、Claude Code先生がObsidianのgemini helperを参考に数時間で全部書いてます。Lua書いたことないし…。実験的プラグインとして考えていただけると。

インストール方法および設定方法

日本語READMEを参照ください。

NeoVimプラグイン独自の機能

  • チャットの履歴をMarkdownファイルで残しているので過去のやりとりを簡単に見れます
  • Vimはundoも簡単なのでプラグインによるファイル更新も即座に反映します
  • Working Directory(デフォルト: nvimを立ち上げたディレクトリ)のファイルに対してSearchやReadの機能も提供しているので、そもそもRAGがなくてもディレクトリ内のファイル検索して回答してくれることが多い

まとめ

RAGは前々から知っていたのですが、ベクトルDB用意したり大変そう、精度出すのも難しいとよく聞いていたので足踏みをしていました。しかしGoogleのFile SearchのAPIがリリースされて、めっちゃ簡単にできると話題になったので、実際試せるツールをClaude Codeに依頼すると数時間で完成してしまいました。Goで作成したのでマルチプラットフォームでinstallも簡単です。

Opus 4.5、恐ろしい子。

また精度の問題もGemini 3-proが優秀なのでそのあたりを補ってくれるのか、思った以上にいいアウトプットが出たのでこれは使うしかないなという感想です。

またObsidianでAI使ってマニュアルとかいい感じに作成したいなと思い探したのですが、smart composerという有名なPluginのrepositoryを見ると開発者が1人でもうアクティブにメンテナンスしてないよということで、他のプラグインも探したのですが、RAG使えるものがなかったので作ってみました。こちらもClaude Codeに依頼して動かしながら2日程度で完成しました。

こうしたいと思えばできてしまう時代なのか…。

Discussion