生成AIで大きなデータを扱おうとすると、意外なところで困る。

この記事は約7分で読めます。

生成AIで大きなデータを扱おうとすると、意外なところで困る。

たとえば私の場合、NextcloudにFXのTickデータを保存している。

CSVは1ファイル数GBから数十GB。全部合わせれば100GBを超える。

これをChatGPTに読ませて、EAのバックテストや市場データの研究に使いたい。

ChatGPT Workのようにブラウザや外部サービスを直接扱える仕組みを使えば、かなり便利になってきた。

ただ、巨大ファイルを調べるたびに高機能なエージェント環境を使う必要があるのだろうか。

「普通のWebページとしてデータを公開しておけば、通常の生成AIから必要な部分だけ読めるのでは?」

ということで、少し変わった実験を始めた。

スポンサーリンク

136GBのデータを全部AIへ渡す必要はない

まず考え方を変えた。

巨大なCSVを生成AIに渡すと聞くと、普通はこう考える。

NextcloudからCSVをダウンロード

生成AIへアップロード

全部解析

でも、バックテストや時系列データ解析では、最初からファイル全体が必要とは限らない。

まず必要なのは、だいたいこんな情報だ。

  • どんなファイルがあるか
  • ファイルサイズ
  • 更新日時
  • CSVの列構造
  • 最初の数行
  • 最後の数行
  • 収録期間
  • 調べたい日時付近のデータ

たとえば20GBのUSDJPY CSVがあったとしても、

2020年3月16日の値動きを調べたい

のであれば、20GB全部を最初に読む必要はない。

必要な位置を探して、その周辺だけ数百KB~数MB取ればいい。

そこで「Nextcloud → Web → AI」の橋を作る

今回作っているのが、Nextcloudと普通のWebページの間に置く小さなBridgeだ。

Nextcloud
   ↓
読み取り専用Bridge
   ↓
普通のHTMLページ
   ↓
ファイル一覧
   ↓
ファイル詳細
   ↓
必要部分だけRange取得
   ↓
生成AI

Bridgeがやることは、それほど複雑ではない。

  • list ― フォルダ内のファイル一覧
  • stat ― サイズ、更新日時など
  • range ― 巨大ファイルの一部分だけ取得
  • text ― 小さなテキストを確認
  • search ― ファイル名検索
  • seek-time ― CSV内の指定日時付近を探す

Nextcloud本体をインターネットへ丸裸にするわけではない。

むしろBridge側は読み取り専用にする。

削除、変更、アップロードといった機能は生成AI側へ公開しない。

最初はAPIとして作った

最初に考えたのは、ごく普通のREST APIだった。

/wp-json/.../list
/wp-json/.../stat
/wp-json/.../range

人間がブラウザから使う分には、これでいい。

しかし実際に通常の生成AIからアクセスさせてみると、環境によってはAPI風のURLや動的URLを直接取得できないことがあった。

そこで、かなり古典的な方向へ戻ってみることにした。

普通のWebサイトとして公開する。

API for AIではなく「Web for AI」

考えてみれば、Webそのものが巨大なデータ交換規格だ。

HTMLがあり、リンクがあり、URLがある。

検索エンジンはリンクをたどる。

生成AIもWeb検索を使う場合、似た経路を使う。

だったら、AI専用の怪しい入口を作るより、人間が読んでも意味のあるデータ公開ページにしてしまったほうがいい。

技術記事
   ↓
実験用データブラウザ
   ↓
USDJPY
EURUSD
XAUUSD
AUDCAD
...
   ↓
ファイル詳細
   ↓
収録期間・サイズ・CSV構造
   ↓
必要な日時を見る

これなら「AIにWebページだと思わせる」必要すらない。

本当にWebコンテンツだからだ。

人間にも便利なデータブラウザにする

ここは結構重要だと思っている。

検索エンジンや生成AIのためだけに大量の意味のないページを作るのではなく、人間が使っても便利なものにする。

たとえばファイル詳細ページなら、こんな表示にする。

USDJPY_GMT+0_NO-DST.csv

ファイルサイズ
18.4 GB

形式
CSV

列
Date, Time, Bid, Ask

収録開始
2003-05-05

収録終了
2026-08-14

[先頭を見る]
[25%地点を見る]
[50%地点を見る]
[75%地点を見る]
[末尾を見る]

日時を指定
2020-03-16 09:00
[この付近を見る]

これはAIがいなくても普通に便利だ。

巨大CSVをPCへダウンロードすることなく、ブラウザから中身をちょっと確認できる。

HTTP Rangeとの相性がいい

この方式の肝になるのがHTTP Rangeだ。

Range取得に対応していれば、10GBのファイルでも、

先頭から1MBだけ
中央付近から1MBだけ
末尾から1MBだけ

のように取得できる。

生成AIがファイル全体を抱える必要がなくなる。

Tickデータのような巨大時系列データとは特に相性がいい。

日時からファイル位置を探す

さらに実験しているのが、日時からCSV内の位置を探す機能だ。

たとえば、

2024-01-01

を指定する。

Bridgeは巨大CSVを最初から順番に読むのではなく、ファイル中央付近をRange取得する。

そこに書かれている日時を見る。

中央地点
↓
2018年だった
↓
もっと後ろを見る

2022年だった
↓
さらに後ろ

2024年付近
↓
発見

要するに巨大な時系列CSVを二分探索する。

これがうまくいけば、数十GBのデータから特定の日付周辺をかなり少ない通信量で探せる。

EAのバックテストにも使いたい

私がこの仕組みを作っている大きな理由は、EAの研究だ。

Nextcloudには長期間のFX Tickデータを保存している。

理想はこうだ。

「このEAを2008年から2026年まで検証して」

        ↓

AIがデータ一覧を見る

        ↓

必要な通貨ペアを特定

        ↓

必要期間をRange取得

        ↓

Pythonバックテスト

        ↓

PF / DD / 勝率 / 年別成績を集計

        ↓

EAを修正

        ↓

再テスト

これが通常のチャット環境だけで動けば、かなり面白い。

高機能なブラウザ操作環境は、本当にブラウザ操作が必要な仕事へ残しておける。

もちろん公開範囲には注意が必要

便利だからといって、Nextcloud全体をAIから自由に読めるようにするのは危険だ。

今回の設計では、できるだけ次のようにする。

  • 読み取り専用
  • 指定フォルダ以外へ移動できない
  • アップロード不可
  • 削除不可
  • ファイル変更不可
  • 巨大ファイルを丸ごと取得させない
  • Rangeサイズに上限を設ける
  • 機密情報を置かない

特に今回公開するTickデータは、個人情報や秘密文書ではない。

生成AIに渡して困るデータは、そもそもこの公開領域へ置かない。

実験用 Tick Data Browser

現在、Nextcloud上の研究用TickデータをWebから確認できるブラウザを試験的に作っている。

目的は、巨大ファイルそのものを配ることではなく、人間や生成AIが必要な部分だけ確認できるデータ公開方法を試すことだ。

※実験中のため、構成やURLは変更する場合があります。

検索エンジン向けページとAI向けページを分ける必要はないのかもしれない

今回やっていて面白かったのはここだ。

当初は、

生成AIからNextcloudへアクセスするための特殊なAPIを作ろう

と考えていた。

でも、いろいろ試しているうちに、

普通のWebを、ちゃんと普通のWebとして作る

ほうが汎用性が高いのではないかと思い始めた。

人間が記事を読む。

検索エンジンが記事を読む。

生成AIも記事を読む。

その先に構造化されたデータページがある。

それで十分なのかもしれない。

Webサイトが「AI用の外付けストレージ」になる

この方法がうまくいけば、Nextcloudだけに限らない。

  • 巨大CSV
  • アクセスログ
  • センサーデータ
  • バックテスト結果
  • JSON
  • 研究データ
  • 公開資料

などを、Webサイト経由で生成AIへ渡せる。

それも、毎回ファイルをアップロードし直すのではない。

URLを知っていれば、AIが必要なところを取りに行く。

Webサイトが一種の「生成AI用外付けストレージ」になる。

まだ実験中

もちろん、まだ完成した仕組みではない。

生成AI側のWebアクセス制限は環境や時期によって変わるし、検索エンジンがどこまで巡回するかも一定ではない。

それでも、

巨大ファイルをAIへ全部渡す

のではなく、

AIが必要なデータへWeb経由で取りに行けるようにする

という方向性は、かなり使い道がありそうだ。

API、MCP、専用コネクタだけが生成AIとの接続方法ではない。

昔からあるHTML、URL、リンク、HTTP Rangeでも、意外といろいろできる。

しばらくこの方法で、Nextcloudに保存している巨大Tickデータを通常の生成AIからどこまで扱えるか試してみる。

タイトルとURLをコピーしました