ロードマップ
indx が目指す Web アプリを画面ごとに追い、各画面の背後にすでにあるものと、先に作らなければならないものを示します。
英語版が原文です。
現在の indx は、/v1/plan、/v1/encode、/v1/embed、/v1/capabilities の 4 操作を持つ API と、CLI、プロセス内ファサード、そして Web アプリのプレイグラウンドです。目指すのは Web アプリです。プロダクトの青写真(English)は 2026-09-10 付の対話型モックで、そのフッターが述べるとおり、データ、スコア、API パスはサンプルと提案です。層は 2 つあります。Layer 01 は 埋め込み基盤、つまり埋め込み空間、データストア、レコードに意味を与える特徴とタグです。Layer 02 はその上に 構築する もの、つまりプレイグラウンド、few-shot ライブラリ、エンドポイントです。ワークスペース層が、それらすべてをどこで動かすかを選びます。
このページは青写真を画面ごとに追います。各セクションは、画面が何を見せるか、main にすでに何があるか、何が欠けているか、何を先に作らなければならないかを述べます。各画面は 3 つの状態のいずれかを持ちます。計画中 は、背後に使えるものがまだ何もないことを意味します。進行中 は、画面が見せるものにサービスが API かプレイグラウンドを通じてすでに答えるものの、画面そのものは存在しないことを意味します。完了 は Web アプリで人が使える画面のために取ってあり、Web アプリがまだ存在しないので、どの画面もまだ得ていません。この順序の技術的な理由は実装順のページにあります。このページの以前の版は 8 つのステップを KR1 の目標に照らして測っていました。それはマイルストーンとして残しています。
Overview — 空間、エンドポイント、改善サイクルを備えたワークスペース 計画中
画面が見せるもの。 実行環境のピルを持つテナントのワークスペース、レコード数つきの 3 つの埋め込み空間、その上に作られたエンドポイント、そして知識を育てるサイクル(取り込む、意味を加えて教える、検証して使う)。
今あるもの。 /health と、カードが見せるものの大半にすでに答えるケイパビリティスナップショット。インストール済みの埋め込み空間、利用できるリーダーと分類器、それぞれの費用です。ワークスペース、テナント、サインインはありません。
欠けているもの。 ワークスペースそのものと、その前に立つ認証。
先に必要なもの。 他のすべての画面。Overview は残りの合計です。
Embedding spaces — モデル、バージョン、レコード数を持つ名前つきの空間 進行中
画面が見せるもの。 operations、layout、product のような空間。それぞれに背後のモデル、次元数、保持するレコード数、宣言された特徴の数、そして評価の後にだけ切り替わるバージョンがあります。ボタンで新しい空間を作り、使ってよいモデルを選びます。
今あるもの。 埋め込み空間は ケイパビリティ です。default-text(ハッシュ、モデルなし)、minilm-multilingual と clip-vit-b32(1 つのエクストラ、テキストと画像)、hosted-text(LiteLLM 経由のホスト型モデル)。それぞれスナップショットに広告され、リクエストが使う空間を名指しし、/v1/embed がクエリを同じ空間で符号化するので、ベクトルを後から検索できます。バージョンはスナップショット ID だけです。計画はそれに束縛され、インストールが変われば答えが静かに変わるのではなく計画が無効になります。
欠けているもの。 顧客が作る空間。モデル、バージョン、特徴スキーマを束ねて保存したもので、その下に何かが保存されているからレコード数を持ちます。今のバージョンはインストールの属性で、青写真はそれを空間の属性にします。
先に必要なもの。 データストア。何も保存されていない空間は、すでにあるケイパビリティそのものです。
Data store — 全レコードとそのベクトル、属性、来歴を 1 つの表に 計画中
画面が見せるもの。 取り込んだ文書の表(種類、取引先、モダリティ、状態)、その上のフィルタ、そして 1 つのレコードをソースファイルからページとチャンクを経て、埋め込んだ空間バージョンまで辿る詳細ビュー。関連レコードがその横に並びます。ボタンでさらに取り込みます。
今あるもの。 何も永続化されません。すべての呼び出しはブロックとベクトルを呼び出し元に返して忘れます。それがゴールのページにある非ゴール「indx はあなたのインデックスを所有しない」です。ただし詳細ビューが見せる来歴は、レスポンスごとにすでに存在します。page:1/chunk:1 のようなブロック ID、すべての計画が束縛されるソースダイジェスト、答えの各部分の背後にあるディストリビューションを名指しするトレースです。
欠けているもの。 ストアと、それを満たす 2 つのもの。フォルダやバケットを進捗と文書ごとの失敗つきで処理するコーパス実行と、実行が生んだものを空間とクエリエンコーダを名指ししてインデックスに書き出すエクスポートです。非ゴールは場所の規則として生き残ります。ストアはエクスポート先であり、顧客の環境にあります(ADR-0049)。
先に必要なもの。 永続化の決定。エクスポートとレシピの両方が見えている状態で一度だけ下すもので、実装順がすでに名指しするトリガーです。
Features & tags — 各空間に載る業務の軸のスキーマ 進行中
画面が見せるもの。 空間ごとの特徴スキーマ。カテゴリとしての document_type、エンティティとしての supplier、人が設定するカテゴリの confidentiality、ビジョンエンコーダによるベクトルの layout_signature。それぞれが由来(人、分類器、抽出、エンコーダ)を名指しし、それぞれがフィルタ、分類、抽出の軸になります。特徴は構造化データとしてレコードに結びつけられ、モデルのベクトルに付け足されることはありません。
今あるもの。 その画面のすべての由来が、リクエストごとに答えます。分類器はスコアつきの document_type などのファセットを返し、エンティティ抽出器は組織、人、日付、金額を見つけてテキスト中の位置を指し、エンリッチャーはタグを返し、呼び出し元自身のラベルは EncodeRequest.metadata で文書ブロックに載ります(これが「人が設定する」由来です)。invoice や process-chart のようなシグネチャはページの構造を認識し、それが layout_signature の意味するものです。すべて返されますが、どこにも宣言されていません。
欠けているもの。 空間の各特徴をどのファセット、エンティティ、タグ、メタデータキーが満たすかを述べる保存済みスキーマと、それによるフィルタ。
先に必要なもの。 空間とストア。スキーマは空間に宣言され、フィルタは保存済みレコードの上で走るからです。
Playground — 機能を選び、文書に対して実行し、正しかったものを残す 進行中
画面が見せるもの。 実行する機能(セマンティック検索、情報抽出、自動タグ付け、レイアウト検出、few-shot 検出、関係、OCR ルーティング、パーサールーティング)、実行する空間、入力、サンプル文書。結果は根拠と使った空間を示し、2 つのボタンが先へ運びます。承認済みの例として追加するか、エンドポイントにするかです。
今あるもの。 プレイグラウンドはひとつ、Web アプリのものだけで、実サービスに対して動きます。サンプルやアップロードをエンコードし、各ページをチャンクの位置ごと読み、そのページに計画されたパーサーと理由を隣に読み、横断検索し、エンティティのスパン、分類のファセット、エンリッチメントのタグを読み、スライドの工程系統図を見られます。選ぶ機能はありません。実行は 1 回のエンコードで、レーンはそのスイッチです(ADR-0057)。
欠けているもの。 セールスページが見せるレイアウト。実行の入力を上に横一列、その下にページを左、構造化された出力を右に置き、ページ上のブロックにカーソルを合わせると indx がそのブロックについて渡すものが表示され、ルートはページの上に述べられます。今日はフォームと結果が 2 列を分け合い、ページ、チャンクの一覧、ルートは縦に積まれています。ストアとライブラリを必要とし、計画中のままの関係と few-shot 検出。そして例とエンドポイントを置く場所を必要とする 2 つのボタン。
先に必要なもの。 レイアウトとカーソル連動には何も。今日 encode が返す行チャンクの上で動き、ブロックが揃うにつれてより細かい対象を得ます。最初のボタンにはライブラリ、2 つ目にはエンドポイント。
Few-shot library — 承認済みの例、評価セット、そしてスコアが上がったときだけ昇格するバージョン 計画中
画面が見せるもの。 文書種類ごとにまとめた承認済みの例の数、それらと切り離された評価セット、有効なバージョン、そして評価セット上で現行バージョンと候補を比べ、候補が勝ったら昇格させるボタン。
今あるもの。 評価セットはプロダクトではなくリポジトリにあります。ベンチマークのラベル付きケースは正しい読み取りが生むべきテキスト、フィールド、エンティティ、言語を持ち、1 回の実行がすべてのリーダーと抽出器をそれに対して採点します。認識される帳票はコードで書かれたシグネチャであって例の集合ではなく、ベンチマークは似た帳票の few-shot 立ち上げを数値ではなく未実装として報告します。
欠けているもの。 例のストア。レシピ、つまり認識される帳票ごとの少数の例とスキーマで、シグネチャで引くもの。そしてリポジトリでの実行ではなくプロダクト内での評価と昇格。
先に必要なもの。 まだ採点されていないメディアタイプまでラベル付きセットを広げること(実装順の第 1 フェーズの調達側)と、ストア。
Endpoints — 基盤と各アプリケーションを、それぞれ独立した API として提供する 進行中
画面が見せるもの。 Layer 01 の埋め込みエンドポイント /v1/embed が 1 つと、Layer 02 のアプリケーションエンドポイント。検索、抽出、検出に加え、ユーザーがプレイグラウンドから作るもので、それぞれ空間バージョンに固定されます。コードパネルは提案中の SDK と HTTP の形を示します。
今あるもの。 5 つのパス(/v1/plan、/v1/encode、/v1/embed、/v1/capabilities、/health)、zod スキーマつきの生成 TypeScript クライアント 1 つ、プロセス内の Indx ファサード、CLI。抽出と検出は encode のオプションであって独自のエンドポイントではなく、モックの from indx import Client は提案です。
欠けているもの。 ストアの上で走る検索。名前つきのエンドポイントとしての抽出と検出。ユーザーが作りバージョンに固定するエンドポイント。そして認証、レート制限、リトライを前に備えた公開クライアント。
先に必要なもの。 検索にはストア、固定には空間、そして機能一覧が成熟として挙げる運用の作業。
Deployment — 同じ基盤を、マネージドクラウドでも、自社クラウドでも、自社のマシンでも 進行中
画面が見せるもの。 3 つのターゲット、INDX Cloud、プライベートクラウド、セルフホスト。ターゲットごとの実行ポリシー、データ境界、既定は CPU、外部モデルは許可リストのみ、未承認のフォールバックは拒否して人手レビューへ。埋め込み、OCR、LLM を別々に扱い、切り替え前に新しい空間バージョンを再埋め込みするモデル許可リスト。
今あるもの。 9 画面の中で最も作られている画面です。本番イメージ、境界の内側にデプロイされた AWS ターゲット、すべての URI スキームを閉じる強化モード。data_residency と device はプランナーが守るリクエスト制約で、どのエクストラが入っているかがどのモデルが存在するかを決め、ラダーは人手レビューで終わるのでページが静かに落とされることはありません。
欠けているもの。 それを見せる画面(/v1/capabilities がすでに満たせます)、マネージドターゲットのテナント、インストールごとではなく空間ごとの許可リスト。
先に必要なもの。 画面には何も。空間ごとの許可リストには空間、テナントにはワークスペース。
セールスページが約束していること
Section titled “セールスページが約束していること”Web アプリのトップページは 3 つのページ(表のある通知、スキャンされた別紙、工程系統図のスライド)と、その上の各ブロックについて indx が渡すものを見せます。その出力は目標であり、ページ上でもそう明示しています(ADR-0060)。ページとルートは本物で、ブロックは encode が返す行チャンクから手でまとめたものです。以下の約束はそれぞれ機能一覧の項目なので、この差は他の作業と同じ場所で追跡されます。
| ページが見せるもの | 今日 | 項目 |
|---|---|---|
| 行を結合した 1 つのブロックとしての段落 | 視覚的な行ごとに 1 チャンク | チャンク — 文と段落のチャンク境界 |
| レベルを持つ見出しと、すべてのブロックの章節パス | 見出しは行で、章節はない | チャンク — 見出しブロックと章節パス |
| 列、セルごとのボックス、正規化された値を持つ表 | セルは読み順の行としてだけ残る | チャンク — 表構造ブロック |
| ブロックとしての工程系統図、記号と接続線ごとのボックス、解決された凡例の行 | グラフはページのメタデータで、ボックスはない | チャンク — ブロックとしての図 |
| 残したうえで検索から外す柱 | 柱もチャンクで、埋め込まれる | チャンク — ページの付属物 |
| 次のページへ続く段落 | 無関係な 2 つのチャンク | チャンク — 改ページをまたいで続くブロック |
| ブロックごとに訂正された OCR の誤読と復元された行 | 認識器が読んだままのテキスト | ページの読み取り — OCR の訂正 |
| 定義語とその意味 | 読まない | エンリッチメント — 定義語 |
| 表、条項、法令へ解決された相互参照 | 読まない | エンリッチメント — 相互参照 |
| キャプションと写っているものを持つ写真 | 埋め込める画像チャンクだが、説明はない | エンリッチメント — 画像ブロック |
| AWS、Azure、Google Cloud へのデプロイ | 3 つすべてにデプロイ済み | デプロイ |
ページの裏にすでにあるもの: ページごとのルートとその理由、スキャンの OCR、工程系統図のシグネチャとパーサー、エンティティ、埋め込み、図の Draw.io と Mermaid のファイル。encode が段落、表、図のブロックを返すようになれば、ページは同じ 3 ページの実際の実行を描き、ADR-0060 の例外は終わります。
何を先に作るか
Section titled “何を先に作るか”- 今すぐ、依存なし。 プレイグラウンドの機能起点の枠組みとセールスページのレイアウト(実行を上に、ページとその出力を横に並べ、ブロックに合わせて読む)、そして
/v1/capabilitiesから満たす読み取り専用のデプロイ画面。どちらも既存のリクエストの上のフロントエンド作業です。 その横で、リクエスト側が追加のリクエストフィールドを通じてリーダー、モデル、言語ごとの抽出レーンを名指しできるようにします([ADR-0050](/ja/developer/decisions/#adr-0050–リクエスト側がコンポーネントを名指ししラダーは決定ではなく既定である))。新しいエンドポイントも新しい実行器も要りません。 - 意味を保つブロック、上に挙げたセールスページの約束を 1 回の契約変更として。まず段落、見出しと章節、表、図、付属物、継続、その上に定義語、相互参照、OCR の訂正。下のどれも待たず、保存するレコードに保存する価値を与えるものです。
- 永続化の決定。 実装順がすでに求めるとおり、エクスポートとレシピの両方を並べて一度だけ下します。Layer 01 のすべてがこれを待ちます。
- データストア。 それを満たすコーパス実行とエクスポート。
- 空間とバージョン をストアの上に、その上に特徴スキーマ。
- few-shot ライブラリ、indx が読むすべてのメディアタイプへ広げたラベル付きセットの上に。調達は初日から続けます。
- エンドポイント を空間バージョンに固定し、前に認証を置く。
- ワークスペース、テナントとマネージドターゲット。