🔎

自分用のRAGならVS CodeとGitHub Copilotで十分かも?

に公開

TL;DR

VS Code[1]、GitHub Copilot agent mode[2]で簡易なローカルRAGを実装します。

  • VS Code+GitHub Copilotで、workspaceを作成し、indexを作成。
  • Copilot Chatで #codebase か #search をつけて質問。

これでローカルRAGになっています。あら簡単。
参照したいファイルがテキストでない場合にはMarkItDown[3]なりで.mdや.txtなどテキストにしておいてください。

得意・不得意

得意:専門用語ベースの文書検索

エンジニア、技術者、科学者など「もともと専門用語やキーワードが明確な人」が「論文、技術書、仕様書などキーワードが明確な書類」でRAGを行う場合に有効だと思います。

不得意:社内文書、会社規則など

一方、会社の規則や、社内のドキュメントなど「意味は似てるけど会社特有の言い回し」「非専門家向けに用語を使っている」場合には、いわゆる意味検索(Vector Search)が必要になると思います。

やり方

  1. RAGしたい文書を特定のフォルダに入れる
  2. VS Codeでそのフォルダ(か、その親フォルダ)を
    Ctrl+Shift+P→「workspaceとして保存」する。
  3. Ctrl+Shift+P→「Index」から「GitHub Copilot:ローカルワークスペースインデックスの構築」を選択する。準備終わり。
  4. Copilot Chatの画面で「〜〜について調べて #codebase (もしくは #search)」とのように質問する。
  5. Copilotが検索してファイルの概要を返してくれます。必要に応じて「もっと詳しく」とか「このファイルの内容を教えて」などと聞いてみてください。

その他のTips

類義語や英語など別言語も含めて検索したい場合には、copilot-instructions.mdや*.instructions.mdに、

## Toolの説明
#codebase
- キーワードは日本語と英語の両方で検索する
- キーワードは類義語を3~4つ考慮して検索する

など検索の仕方を記入しておくと、より意に沿って検索してくれます。
(instructionsへの従順度はGPT-4.1よりも、claude系の方が高い印象があります。)

検索用文書のMarkdown化

PDFやWordの文書はMarkdownに変換しておきましょう。

import os
from markitdown import MarkItDown

input_dir = "../files_to_md" # 変換元
output_dir = "../output_dir" # 変換先
os.makedirs(output_dir, exist_ok=True)

md_converter = MarkItDown(enable_plugins=False)

for filename in os.listdir(input_dir):
    input_path = os.path.join(input_dir, filename)
    if os.path.isfile(input_path):
        # 変換して .md で保存
        result = md_converter.convert(input_path)
        outname = os.path.splitext(filename)[0] + ".md"
        with open(os.path.join(output_dir, outname), "w", encoding="utf-8") as f:
            f.write(result.text_content)
脚注
  1. https://code.visualstudio.com/ ↩︎

  2. https://code.visualstudio.com/blogs/2025/02/24/introducing-copilot-agent-mode ↩︎

  3. https://github.com/microsoft/markitdown ↩︎

Discussion