ローカルRAG基盤構築研究

ozy's labo.


序章 ― アーカイブと再帰性

二十年以上にわたり蓄積されたWEB文書群は,単なる記録ではありません.
それは思考の堆積であり,時間の中で再帰的に更新され続けた知的地層です.

検索とは単語照合ではなく,
過去の自分との対話を再開するための装置です.

本研究は,巨大な外部サービスやクラウドに依存せず,
手元に存在するテキスト資産のみを用いて,
再帰的知識空間を再構築する試みです.

基盤はディレクトリとファイルという最小単位です.
その上に全文検索を構築し,
将来的にはRAG(Retrieval-Augmented Generation)へ接続します.

設計方針

前提環境

  • OS: xubuntu 20.04 LTS
  • 可能な限り標準パッケージを利用
  • 外部DBサーバーは使用しない
  • ディレクトリツリー+ファイル構造を維持
  • 実装はCLI志向
  • フロントエンドは Emacs と ローカルWeb UI

WEB再構築は行わない

既存サイトはすでにローカル環境で閲覧可能であり,
再公開やCMS化は不要と判断しました.

目的は検索基盤の整備であり,
公開形態の再設計ではありません.

データフォーマット決定経緯 ― YAML + Markdown

最終的に文書フォーマットは
「YAMLフロントマター + Markdown本文」に決定しました.

決定理由は以下の通りです.

1. HTML依存の回避

既存資産はHTMLですが,

  • 装飾タグ
  • レイアウト依存構造
  • ナビゲーション要素
  • スクリプト混在

など,検索ノイズが多く含まれます.

検索対象は「意味」であり,
表示構造ではありません.

そのため,本文をMarkdownへ正規化します.

2. メタデータの明示化

日付,タグ,カテゴリ,URLなどの情報は
検索品質に影響します.

これらをMarkdownヘッダではなく,
YAMLフロントマターに分離することで,

  • 構造化
  • 将来の機械処理
  • ベクトル検索との連携

が容易になります.

3. 単純性と可読性

YAML + Markdownは

  • プレーンテキスト
  • git管理容易
  • エディタ依存なし
  • 将来変換容易

という利点があります.

これは本研究の
「ファイル中心主義」と整合します.

全体アーキテクチャ

wgetによるWEBミラー取得
	↓
フィルタ群によるデータ正規化
(HTML整理 / 不要タグ除去 / 本文抽出)
	↓
YAML + Markdown 形式へ変換
	↓
ディレクトリツリー確定
	↓
Recollによる全文インデックス生成
	↓
 ┌──────────────────┐
 │ Emacsフロントエンド │
 │ ローカルWeb UI      │
 └──────────────────┘
	↓
(将来)ベクトル再ランキング
	↓
LLM統合

フィルタによるデータ正規化の重要性

検索品質はインデックス生成前にほぼ決まります.

実施する処理例:

  • 不要タグ除去
  • ナビゲーション削除
  • スクリプト削除
  • 重複排除
  • 文字コード統一(UTF-8)
  • 改行整形
  • 本文抽出

検索器はあくまでインデックス生成装置です.
データ品質保証はフィルタ工程の責務です.

全文検索エンジン選定

検討対象:

  • SQLite FTS5
  • grepベース自作
  • 専用検索エンジン

SQLiteは単一巨大ファイル化するため,
設計思想(分散ファイル型)と合致しないと判断しました.

最終的に採用したのは
:contentReference[oaicite:0]{index=0} です.

Recollは内部的に
:contentReference[oaicite:1]{index=1} を利用します.

採用理由

  • aptで導入可能
  • 外部DB不要
  • ファイルベースインデックス
  • CLI利用可能(recollq)
  • Emacs連携容易
  • ローカルWeb UIあり
  • 日本語対応可能

インデックスは ~/.recoll/xapiandb/ 以下に
複数ファイルとして生成されます.

単一巨大DBではありません.

Emacs統合設計

  • recollq を非同期実行
  • JSON出力を取得
  • elispでパース
  • org-bufferへ整形表示
  • 該当ファイルへジャンプ

将来的には:

  • 上位N件抽出
  • ベクトル再ランキング
  • LLMへ文脈供給

を統合します.

将来拡張構想

最終目標は以下のハイブリッド構造です.

  1. Lexical検索(Recoll)
  2. Vector検索
  3. 再ランキング
  4. LLM応答生成

全文検索は候補生成装置として機能します.

実装フェーズ

  1. wgetによるサイトミラー取得
  2. 正規化フィルタ群設計
  3. YAML + Markdown変換
  4. ディレクトリ構造確定
  5. Recollインデックス生成
  6. CLI動作確認
  7. Emacs統合

結語

本研究は,オールドスクールなファイル構造と
現代的検索技術を統合する試みです.

中心は検索器ではなく,
正規化されたテキスト資産そのものです.

まずは wget による取得から開始します.


Date: 2026-03-04

Author: ozyukiwo

Created: 2026-03-11 水 08:08

Emacs 26.3 (Org mode 9.1.9)

Validate