MYAI — ローカル個人記録アシスタント

Apple Silicon Mac 上で完全ローカル動作する、個人日記・メモ向け RAG チャットアシスタントです。

特徴

  • 完全オフライン動作 — mlx_lm + SQLite FTS5 のみ使用(外部APIなし)
  • 日本語対応 — Janome による形態素解析・複合名詞抽出
  • 日付・期間検索 — 「2024年3月」「2022/1〜2022/3」などの自然言語日付に対応
  • ストリーミング出力 — Streamlit UI でリアルタイム表示
  • フィードバック機能 — 👍 で良い回答を RAG に自動追記

動作環境

項目要件
OSmacOS (Apple Silicon)
Python3.11 以上
RAM8GB 以上(推奨)
モデルmlx-community/Qwen3.5-4B-4bit(約2.9GB)

セットアップ

# 1. 仮想環境作成
任意の場所に仮想環境を作成
ディレクトリ名は myai_local
ターミナルでチェンジディレクトリする cd ~/myai_local

# 1-2. 仮想環境作成(myai_localを開いた状態で以下を実行)
python3 -m venv venv
source venv/bin/activate

# 2. 依存パッケージ
pip install mlx-lm streamlit janome striprtf watchdog

# 3. データディレクトリ作成
mkdir -p ~/myai_local/knowledge

# 4. プロフィール作成(任意)
# ~/myai_local/profile.txt に自由記述

# 5. config.py を編集してユーザー名を設定
#    USER_NAME = "あなたの名前"

# 6. knowledge/ にテキストファイルを配置してDBを構築
python build_db.py

# 7. 起動
streamlit run app.py

ファイル構成

myai_local/
├── app.py              # Streamlit UI メインアプリ
├── config.py           # 設定ファイル(ユーザー名・パス・モデル)
├── llm.py              # LLM 推論モジュール(mlx_lm)
├── prompt.py           # システムプロンプト構築
├── search.py           # FTS5 + LIKE ハイブリッド検索
├── db.py               # チャット履歴 DB(SQLite)
├── build_db.py         # knowledge/ → diary.db 変換
├── watch_knowledge.py  # knowledge/ の変更を自動監視・反映
├── import_twitter.py   # Twitter アーカイブのインポート
└── myai.py             # CLI 版アシスタント

ナレッジファイルの命名規則

ファイル名に日付を含めると日付検索が有効になります。

20240315_メモ.txt
2024-03-15_日記.md

ライセンス

MIT License