Skip to content

K0909github/my-rag-project

Repository files navigation

RAGシステム with Gemini API

PDFドキュメントから情報を抽出し、質問応答を行うRAG(Retrieval Augmented Generation)システムです。

🚀 特徴

  • Google Gemini API を使用した高精度な質問応答
  • LangChain を活用したRAGパイプライン
  • FAISS による高速ベクトル検索
  • Docker による簡単な環境構築
  • GitHub Copilot を活用したAI支援開発
  • 現代的な開発環境 でのフル活用

🛠️ 開発環境

このプロジェクトは以下のツールを使用して開発されました:

  • VS Code - メインの開発環境
  • Docker - 一貫した開発・実行環境の提供
  • GitHub - バージョン管理とコラボレーション
  • GitHub Copilot - コード生成とプログラミング支援
  • Gemini Deep Research - 学術文献の調査と理解

📋 前提条件

  • Docker & Docker Compose
  • Google AI Studio APIキー (取得方法)

🛠️ セットアップ

1. リポジトリのクローン

git clone <repository-url>
cd my-rag-project

2. 環境変数の設定

# .env.example をコピーして .env を作成
cp .env.example .env

# .env ファイルを編集してAPIキーを設定
# GOOGLE_API_KEY=your_actual_api_key_here

3. Dockerコンテナのビルドと起動

# イメージをビルド
docker build -t my-rag-app .

# コンテナを起動(インタラクティブモード)
docker run -it --rm -v $(pwd):/app my-rag-app bash

🏃‍♂️ 実行方法

Docker内でPythonスクリプトを実行

# コンテナ内で実行
python main.py

または、ローカル環境で実行

# 依存関係をインストール
pip install -r requirements.txt

# スクリプトを実行
python main.py

📁 プロジェクト構造

my-rag-project/
├── main.py                 # メインのRAGスクリプト
├── requirements.txt        # Python依存関係
├── Dockerfile             # Docker設定
├── .env.example           # 環境変数テンプレート
├── README.md              # このファイル
└── 深層学習とIITと自由エネルギー原理_.pdf  # 対象PDFドキュメント

🔧 技術スタック

コア技術

  • Python 3.11
  • LangChain - RAGパイプライン構築
  • Google Generative AI - Gemini API接続
  • FAISS - ベクトルデータベース
  • PyPDF - PDF処理
  • Docker - コンテナ化

開発環境・ツール

  • VS Code - 統合開発環境
  • Docker - コンテナ化技術
  • GitHub - ソースコード管理・バージョン管理
  • GitHub Copilot - AIプログラミングアシスタント
  • Gemini Deep Research - 研究・文献調査支援

💡 使用方法

  1. システムが起動すると、PDFドキュメントを自動で読み込み
  2. テキストをチャンクに分割し、ベクトル化
  3. 事前定義された質問に対して回答を生成
  4. 参考にした情報源も表示

質問内容は main.py の70行目付近で変更可能です:

question = "このドキュメントに記載されている、統合情報理論とは何ですか?"

📊 実行結果の例

以下は、統合情報理論について質問した際の実際の出力例です:

✅ APIキーを読み込みました。
🔄 ドキュメントを読み込んでいます...
✅ ドキュメントを 44 個のチャンクに分割しました。
🔄 チャンクをベクトル化し、データベースを構築しています...
✅ ベクトルストアの準備が完了しました。
🔄 RAGチェーンを構築しています...
✅ RAGチェーンの準備が完了しました。

--- 質問応答を開始します ---
質問: このドキュメントに記載されている、統合情報理論とは何ですか?

--- 回答 ---
提供されたコンテキスト情報からは、「統合情報理論」そのものについて直接的な説明は見つかりませんでした。

ただし、コンテキスト情報には「IITの原理をAI設計に適用すること」という言及があり、そこから間接的に以下の情報が読み取れます。

• IITの関連概念:
  • 中心概念: 内在的で還元不可能な因果力、生成モデルを通じた驚きの最小化
  • 主要指標: Φ(ファイ、統合情報量の尺度)、変分自由エネルギー(VFE、驚きの上限)
  • 存在論的立場: 最大のΦを持つシステムのみが「真の」存在を持つ。システムは統計的境界(マルコフブランケット)によって定義される。
  • 情報の見方: 内在的、観察者非依存、システム外在的、観察者依存(ベイジアン)、世界に関する不確実性の低減

また、IITの原理をAI設計に適用することは、「単純な改善策ではない」と述べられており、再帰的ネットワークは疎なフィードフォワードネットワークよりも訓練と実行が困難であるという文脈で触れられています。

--- 参考にした情報源 ---
1. 抜粋: 形 成 し う る か を 分 析 し ま し た。 結 論 と し て、 主 要 な 知 見 を 要 約 し、 未 解 決 の 課 題 を 特 定 し、 今 後 の 研 究 に 向 け た 具 体 的 な ロー ド マッ プ を 提 案 し ま す。...
2. 抜粋: 的 に 分 離 す る 境 界 で あ り、 す べ て の 相 互 作 用 は こ の ブ ラ ン ケッ ト の 感 覚 状 態 と 能 動 状 態 を 介 し て 行 わ れ ま す 18 。 マ ル コ フ ブ ラ ン ケッ ト の 存 在 は、 シ ス テ ム が FEP に よっ て モ デ ル 化 さ れ る た め の 前 提 条 件 で す 20 。...
3. 抜粋: 中 心 概 念 内 在 的 で 還 元 不 可 能 な 因 果 力 生 成 的 モ デ ル を 通 じ た 驚 き の 最小 化 主 要 指 標 Φ (ファ イ)、 統 合 情 報 量 の 尺 度 変 分 自 由 エ ネ ル ギー ( VFE )、 驚 きの 上 限 存 在 論 的 立 場 最 大 の Φ を 持 つ シ ス テ ム の み が「真 の」 存 在 を 持 つ シ ス テ ム は 統 計 的 境 界 (マ ル コ フブ ラ ン ケッ ト) に よっ て 定 義 さ れ る 情 報 の 見 方 内 在 的、 観 察 者 非 依 存、 シ ス テ ム 外 在 的、 観 察 者 依 存...
4. 抜粋: れ た 再 帰 的 ネッ ト ワー ク は、 疎 な フィー ド フォ ワー ド ネッ ト ワー ク よ り も 訓 練 と 実 行 が は る か に 困 難 で す。 し た がっ て、 IIT の 原 理 を AI 設 計 に 適 用 す る こ と は、 単 純 な 改 善 策 で は あ り ま せ ん。 「統 合 性」 (お よ び そ れ に 伴 う 堅 牢...

🎉 RAGシステムの実行が完了しました!

実行結果のポイント

  • 処理時間: PDFの読み込みからベクトル化まで数十秒で完了
  • チャンク分割: 44個の意味のある単位に自動分割
  • 関連情報抽出: 質問に関連する4つの情報源を自動選択
  • 日本語回答: コンテキストに基づいた自然な日本語での回答生成

🐛 トラブルシューティング

APIキーエラー

❌ エラー: 環境変数 'GOOGLE_API_KEY' が設定されていません。

.env ファイルにAPIキーが正しく設定されているか確認

ImportError

→ Dockerコンテナ内で実行しているか、または pip install -r requirements.txt が完了しているか確認

📄 ライセンス

このプロジェクトはMITライセンスの下で公開されています。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published