Skip to content

rokudone/codebase-rag

Repository files navigation

Rails コードベース RAG

Railsコードベースに対する質問応答システム(Retrieval-Augmented Generation)の実装です。

概要

このシステムは、Railsコードベースを解析し、エンベディングを生成して、ユーザーの質問に回答します。 LLM(大規模言語モデル)とベクトル検索を組み合わせることで、コードベースに関する質問に正確に回答することができます。

機能

  • Railsコードベースの解析とインデックス化
  • コードブロック単位でのチャンク分割
  • OpenAIのエンベディングモデルを使用したベクトル表現の生成
  • インメモリベクトルストアによる高速な検索
  • ユーザークエリに対する回答生成

前提条件

  • Ruby 3.0以上
  • OpenAI API キー

インストール

  1. リポジトリをクローン
git clone https://github.com/yourusername/rails-codebase-rag.git
cd rails-codebase-rag
  1. 依存関係をインストール
bundle install
  1. 環境変数を設定

.envファイルを作成し、OpenAI APIキーを設定します:

OPENAI_API_KEY=your_api_key_here

使用方法

コードベースのインデックス化

rake rag:index /path/to/rails

このコマンドは、指定されたRailsコードベースを解析し、エンベディングを生成して、rails_embeddings.jsonファイルに保存します。

質問の実行

rake rag:query "ActiveRecordのバリデーションの仕組みを説明して"

このコマンドは、指定された質問に対して、関連するコードチャンクを検索し、LLMを使用して回答を生成します。

ヘルプの表示

rake rag:help

または

rake rag

アーキテクチャ

このシステムは、ドメイン駆動設計(DDD)の原則に基づいて実装されています。

レイヤー構造

  • ドメイン層: 値オブジェクトとリポジトリインターフェース
  • インフラストラクチャ層: リポジトリの実装とファクトリ
  • アプリケーション層: サービスとユースケース
  • インターフェース層: CLIインターフェースとRakeタスク

主要コンポーネント

  • CodeLoaderService: コードベースからファイルをロードするサービス
  • ChunkerService: コードをチャンクに分割するサービス
  • EmbeddingService: チャンクからエンベディングを生成するサービス
  • VectorStoreRepository: エンベディングを格納・検索するリポジトリ
  • QueryEngine: ユーザークエリを処理し、回答を生成するサービス

拡張

Chroma DBとの連携

現在、インメモリベクトルストアを使用していますが、将来的にはChroma DBとの連携も可能です。 ChromaAdapterクラスを実装することで、より大規模なコードベースにも対応できます。

APIインターフェース

現在はRakeタスクによるCLIインターフェースのみですが、RESTful APIを実装することで、Webアプリケーションからも利用できるようになります。

ライセンス

MIT

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages