このアプリは、StreamlitとOpenAIのGPT-4.1-nanoモデルを活用したシンプルなWebアプリケーションです。加えて、sample/ディレクトリ内のMarkdown設計書を分割(チャンキング)し、AI活用や検索などに利用できる形に変換するスクリプトも含まれています。サブディレクトリごとに設計書を管理し、個別にインデックス化することもできます。
ragapp/
├── app.py # StreamlitによるWebアプリ本体
├── llm_client.py # OpenAI APIを使った応答取得ラッパー
├── chunk_md.py # sample/内Markdownファイルのチャンキングスクリプト
├── embed_and_index.py # Markdownチャンクの埋め込み生成&txtaiインデックス作成スクリプト
├── requirements.txt # 必要なPythonパッケージ
├── README.md # このファイル
├── ragapp.code-workspace # VSCode用ワークスペース設定
├── sample/ # サンプル設計書Markdown格納ディレクトリ
│ ├── batch_design/ # バッチ設計書のサブディレクトリ
│ │ ├── 受注データ取込バッチ.md
│ │ ├── 受注確定バッチ.md
│ │ └── ...
│ ├── screen_design/ # 画面設計書のサブディレクトリ
│ │ ├── 受注入力画面.md
│ │ ├── 受注管理画面.md
│ │ └── ...
├── index_files/ # txtaiインデックス・チャンク情報の保存先
│ ├── all/ # 全サブディレクトリを含むインデックス
│ │ ├── chunks.pkl
│ │ └── txtai.index/
│ ├── batch_design/ # バッチ設計書のみのインデックス
│ │ ├── chunks.pkl
│ │ └── txtai.index/
│ ├── screen_design/ # 画面設計書のみのインデックス
│ │ ├── chunks.pkl
│ │ └── txtai.index/
├── pages/ # Streamlitのマルチページアプリ用ディレクトリ
│ └── md_viewer.py # Markdown設計書表示アプリ
└── __pycache__/ # Pythonキャッシュ
OPENAI_API_KEY に設定)pip install -r requirements.txt
set OPENAI_API_KEY=sk-... # Windowsの場合
export OPENAI_API_KEY=sk-... # Mac/Linuxの場合
streamlit run app.py --server.fileWatcherType none
メインアプリ(app.py):
設計書表示アプリ(pages/md_viewer.py):
chunk_md.py を実行すると、sample/ディレクトリ内の全Markdownファイルを見出しや文字数で分割し、AIや検索用途で扱いやすいチャンクデータを生成できます。サブディレクトリ内のファイルも処理されます。
python chunk_md.py
※標準出力にチャンク例とサブディレクトリごとのチャンク数が表示されます。embed_and_index.py を実行すると、chunk_md.pyで生成されるチャンクに対して日本語BERTモデル(GLuCoSE-base-ja-v2)で埋め込みベクトルを生成し、txtaiでインデックス化します。デフォルトでは、すべてのサブディレクトリを含む「all」インデックスと、各サブディレクトリごとのインデックスが生成されます。
python embed_and_index.py
python embed_and_index.py --subdir batch_design
python embed_and_index.py --all-in-one
※index_files/配下にtxtaiインデックスとチャンク情報が保存されます。llm_client.py はOpenAIのAPIラッパーです。モデル名やAPIキーは適宜変更してください。embed_and_index.py はMarkdownチャンクの埋め込み生成とtxtaiインデックス作成を行います。日本語BERTモデル(GLuCoSE-base-ja-v2)を利用します。index_files/ 配下には各サブディレクトリごとのtxtaiインデックスとチャンク情報が保存されます。sample/配下のMarkdownは業務システムの架空の設計書例です。ご自身の設計書に差し替えて利用可能です。サブディレクトリを作成して整理することができます。このアプリは、StreamlitとOpenAIのGPT-4.1-nanoモデルを活用したシンプルなWebアプリケーションです。加えて、sample/ディレクトリ内のMarkdown設計書を分割(チャンキング)し、AI活用や検索などに利用できる形に変換するスクリプトも含まれています。サブディレクトリごとに設計書を管理し、個別にインデックス化することもできます。
ragapp/
├── app.py # StreamlitによるWebアプリ本体
├── llm_client.py # OpenAI APIを使った応答取得ラッパー
├── chunk_md.py # sample/内Markdownファイルのチャンキングスクリプト
├── embed_and_index.py # Markdownチャンクの埋め込み生成&txtaiインデックス作成スクリプト
├── requirements.txt # 必要なPythonパッケージ
├── README.md # このファイル
├── ragapp.code-workspace # VSCode用ワークスペース設定
├── sample/ # サンプル設計書Markdown格納ディレクトリ
│ ├── batch_design/ # バッチ設計書のサブディレクトリ
│ │ ├── 受注データ取込バッチ.md
│ │ ├── 受注確定バッチ.md
│ │ └── ...
│ ├── screen_design/ # 画面設計書のサブディレクトリ
│ │ ├── 受注入力画面.md
│ │ ├── 受注管理画面.md
│ │ └── ...
├── index_files/ # txtaiインデックス・チャンク情報の保存先
│ ├── all/ # 全サブディレクトリを含むインデックス
│ │ ├── chunks.pkl
│ │ └── txtai.index/
│ ├── batch_design/ # バッチ設計書のみのインデックス
│ │ ├── chunks.pkl
│ │ └── txtai.index/
│ ├── screen_design/ # 画面設計書のみのインデックス
│ │ ├── chunks.pkl
│ │ └── txtai.index/
├── pages/ # Streamlitのマルチページアプリ用ディレクトリ
│ └── md_viewer.py # Markdown設計書表示アプリ
└── __pycache__/ # Pythonキャッシュ
OPENAI_API_KEY に設定)pip install -r requirements.txt
set OPENAI_API_KEY=sk-... # Windowsの場合
export OPENAI_API_KEY=sk-... # Mac/Linuxの場合
streamlit run app.py --server.fileWatcherType none
メインアプリ(app.py):
設計書表示アプリ(pages/md_viewer.py):
chunk_md.py を実行すると、sample/ディレクトリ内の全Markdownファイルを見出しや文字数で分割し、AIや検索用途で扱いやすいチャンクデータを生成できます。サブディレクトリ内のファイルも処理されます。
python chunk_md.py
※標準出力にチャンク例とサブディレクトリごとのチャンク数が表示されます。embed_and_index.py を実行すると、chunk_md.pyで生成されるチャンクに対して日本語BERTモデル(GLuCoSE-base-ja-v2)で埋め込みベクトルを生成し、txtaiでインデックス化します。デフォルトでは、すべてのサブディレクトリを含む「all」インデックスと、各サブディレクトリごとのインデックスが生成されます。
python embed_and_index.py
python embed_and_index.py --subdir batch_design
python embed_and_index.py --all-in-one
※index_files/配下にtxtaiインデックスとチャンク情報が保存されます。llm_client.py はOpenAIのAPIラッパーです。モデル名やAPIキーは適宜変更してください。embed_and_index.py はMarkdownチャンクの埋め込み生成とtxtaiインデックス作成を行います。日本語BERTモデル(GLuCoSE-base-ja-v2)を利用します。index_files/ 配下には各サブディレクトリごとのtxtaiインデックスとチャンク情報が保存されます。sample/配下のMarkdownは業務システムの架空の設計書例です。ご自身の設計書に差し替えて利用可能です。サブディレクトリを作成して整理することができます。