ナレッジストレージを運用する
ベクトルDBは、文書をAIが検索できる形式(ベクトル)に変換して保存する場所です。ナレッジインデックス作成で作られた検索データがここに保存され、AI文書検索とRAG回答がこのデータを使用します。
ベクトルDBに保存されるデータは、元の文書からいつでも作り直せる派生データです。ベクトルDBを変更または初期化しても、ワークスペースの元のファイルは変わりません。
始める前に
- 必要な権限:Workspace管理者
ナレッジサービス>ナレッジストレージで、現在のドライバーと接続状態を確認します。- ストレージの切り替えや初期化は、検索結果が再び準備されるまで影響を与える場合があるため、作業時間を決めておきます。
ベクトルストレージの選択
ナレッジストレージのドライバーで選択します。
| ドライバー | 保存場所 | コレクションの準備 | 推奨環境 |
|---|---|---|---|
| Automatic (SQLite) | SpaceBuilderサーバー内部のファイル | 不要 | デフォルト値。埋め込みモデルを選択すると、内蔵のSQLiteストレージを使用します。 |
| Local (SQLite) | 指定したパスのlocal_vectors.dbファイル | 不要 | ベクトルが約5万個以下の小規模な環境。保存パスを自分で決めたい場合に使用します。 |
| Qdrant | 外部のQdrantサーバー | 自動作成 | ベクトルが多い場合や、検索データを別のサーバーに分離する場合 |
| Milvus | 外部のMilvusサーバー | 事前に作成が必要 | すでにMilvusを運用している場合や、大規模なクラスターが必要な場合 |
ベクトル数は文書数ではなく、文書の断片(チャンク)の数です。文書は形式に応じてセクション、ページ、行の単位で分割した後、韓国語基準で約700〜1,000文字のサイズにさらに分割して保存します。長い文書1つが数十個のベクトルになることがあります。
外部ベクトルDBのインストールと接続の方法は、それぞれのドキュメントを参照してください。
- Qdrantを接続する — Dockerコンテナ1つでインストールできる軽量な構成です。別のサーバーを初めて構成する場合は、Qdrantを推奨します。
- Milvusを接続する — メモリ8GB以上の別のサーバーを推奨します。コレクションを自分で作成する必要があります。
Local (SQLite)の運用
Localドライバーは、外部サービスを使わずに、1つのSQLiteファイル(local_vectors.db)でベクトル検索を運用します。
| 項目 | 内容 |
|---|---|
| 保存ファイル | データパスの下のlocal_vectors.db |
| データパス | デフォルト値はvectordb_localです。相対パスは、SpaceBuilderの設定ファイルがあるフォルダを基準にします。 |
| 検索方式 | 保存されているベクトルをすべて比較する方式です。1024次元の場合、1万個で約10msかかり、データが増えるほど検索時間も長くなります。 |
| 推奨規模 | ベクトル約5万個以下。これを超える場合は、QdrantまたはMilvusへの切り替えを推奨します。 |
ベクトルDBの運用状況には、local_vectors.db 使用量もあわせて表示されます。
| 項目 | 意味 |
|---|---|
| DB ファイル / WAL / SHM | SQLiteの本体ファイルと書き込みログファイルのサイズ |
| DB 内部の再利用可能領域 | データの削除によって空いたものの、まだファイルサイズには反映されていない領域です。新しいデータを保存するときは、この領域を先に再利用します。 |
ストレージや埋め込みモデルを変更するとき
次の項目のうち1つでも変更して保存すると、SpaceBuilderが変更を検知し、元の資料全体の再インデックスを自動的に開始します。
- ドライバー、エンドポイント、コレクション、データパス
- 埋め込みモデル、ベクトル次元数
切り替えは、次の順序で進みます。
- 新しい設定を保存します。
- インデックススケジューラーが変更を検知し、元の資料全体の再インデックスをリクエストします。
- すべての文書を新しい設定で埋め込み直し、新しいストレージに保存します。
- すべての文書が新しいストレージに保存され、検索の検証まで終わると、以前のベクトルを元の保存場所から削除します。
切り替え中の検索
- 変更を検知するまでは、ベクトル検索を一時的に停止し、キーワード検索のみを使用します。
- 再インデックス中は、新しいストレージを検索します。まだ新しいストレージに移されていない文書は、ベクトル検索の結果に表示されない場合があります。
- 再インデックスが終わると、新しい設定で作成したベクトルのみを検索します。
文書が多いと再インデックスに時間がかかる場合があるため、ユーザーが少ない時間帯に切り替えてください。
切り替え時の注意点
- 以前の外部ストレージは、整理が終わるまで稼働させておいてください。 QdrantやMilvusから別のストレージに移行した場合は、以前のベクトルの削除が終わるまで、以前のサーバーに接続できる必要があります。接続できない場合、整理作業は
以前の保存先に接続できませんの状態で再試行され続けます。 - ベクトル次元数を変更する場合は、コレクションも新しく指定してください。 作成済みのQdrant・Milvusコレクションは、次元を変更できません。次元が異なるコレクションには保存できません。
- 以前の設定に戻しても、再インデックスします。 A → B → Aのように戻した場合、最初のAのデータは再利用されず、新たにインデックスを作成します。
運用状態の確認
ベクトルDBの運用状況
ナレッジストレージ画面の上部で確認します。
| 項目 | 意味 |
|---|---|
| 接続状態 | ベクトルストレージに接続できるかどうか |
| ベクトルストア | 使用中のドライバーと種類(組み込み型・サービス型) |
| 保存済みベクトル数 | このインスタンス(現在のSpaceBuilder)が保存したベクトルの数。同じストレージを使用する別のインスタンスのデータは含みません。 |
| コレクション数 | Localは1(初回のインデックス作成前は0)、Qdrant・Milvusはそのサーバーにあるすべてのコレクションの数 |
| コレクション設定 | ストレージの次元と距離の計算方式が、設定と一致しているかどうか |
コレクション設定には、次のいずれかが表示されます。
| 表示 | 意味 |
|---|---|
| 正常(現在の設定と互換性あり) | コレクションを使用できます。 |
| 未作成・初回インデックス作成時に自動で作成されます | Qdrantのコレクションがまだありません。エラーではなく、初回のインデックス作成時に作成されます。 |
| コレクションがありません・先に Milvus でコレクションを作成してください | Milvusのコレクションは自動的には作成されません。Milvusを接続するを参照して作成してください。 |
| コレクション設定の確認が必要 | 次元または距離の計算方式が一致していません。あわせて表示されるエラー内容を確認してください。 |
ナレッジインデックス作成画面
ナレッジインデックス作成のインデックス要約で、進行状況を確認します。
| 項目 | 意味 |
|---|---|
| 更新待ち | 新しく作成または変更したファイルのうち、インデックス作成を待っている数 |
| 埋め込み待ち | テキストの抽出が終わり、ベクトルへの変換を待っている数 |
| 埋め込み数 | SpaceBuilderが記録している現在の埋め込み数。切り替えや再インデックスの間は、ベクトルDBの保存済みベクトル数と異なる場合があります。 |
| ベクトル削除待ち | ファイルの削除やストレージの切り替えの後、元の保存場所から削除されるのを待っているベクトルの数 |
以前のベクトルの削除に失敗すると、整理の再試行一覧に保存先と理由が表示されます。再試行の間隔は徐々に長くなり、最大5分です。
| 理由 | 意味と対処 |
|---|---|
| 以前の保存先に接続できません | 以前のベクトルDBサーバーが停止しているか、接続できません。以前のサーバーを再び起動すると、自動的に整理を再開します。 |
| リモート削除に失敗 | ベクトルDBが削除リクエストを拒否しました。ベクトルDBサーバーの状態とログを確認してください。 |
| 以前の保存結果を確認中 | 結果が確認されていない保存リクエストが残っているため、削除の完了を待っています。ほとんどの場合、自動的に解消されます。 |
| 削除完了の記録に失敗 | 削除はされましたが、SpaceBuilderに完了を記録できませんでした。次の周期でもう一度試行します。 |
ベクトルの同期と再構築
ナレッジストレージの管理者専用の領域で実行します。どちらの操作でも元のファイルは削除されず、Team以上のライセンスが必要です。
| 操作 | 動作 | 使用する場面 |
|---|---|---|
既存の埋め込みを同期 | 現在の文書チャンクと互換性のある既存の埋め込みを、選択したベクトルDBにコピーし、復元できないベクトルだけを作り直します。 | ベクトルDBを変更した場合や、ストレージのベクトルが欠けている場合 |
ベクトル世代を再構築 | 以前のベクトルを維持したまま新しいベクトル世代を作成し、検証が終わると以前のベクトルを整理します。 | 保存されているベクトルを最初から構成し直す必要がある場合 |
- どちらの操作もリクエストを受け付けるものであり、進行状況は収集・インデックス作成で確認します。
- 同じQdrant・Milvusコレクションを使用する別のインスタンスのデータには影響しません。
複数のインスタンスが1つのベクトルDBを共有するとき
インスタンスとは、個別にインストールして運用する1つのSpaceBuilderのことです。インスタンスごとに固有のインスタンス分離キーがあり、保存するベクトルにはこのキーがあわせて記録されます。そのため、同じコレクションを共有しても、検索、統計、ベクトルの整理は、それぞれのインスタンスのデータの中だけで行われます。
ただし、バックアップ、容量の管理、削除をインスタンスごとに行うには、インスタンスごとに別のコレクションを使用することを推奨します。デフォルトのコレクション名(knowledge_vectors)を使用すると、設定画面に警告とともに、このインスタンスの推奨名(setfn_knowledge_...)が表示されます。
バックアップと復元
ナレッジデータのバックアップは、SpaceBuilderサーバーを停止してからコマンドで実行します。サーバーが実行中の場合、バックアップと復元は拒否されます。復元できるのは、同じインスタンス、同じホームフォルダで作成したバックアップだけです。
# バックアップ(対象フォルダは、まだ存在しない新しいパスである必要があります)
~/setfn-spacebuilder admin knowledge-backup <バックアップフォルダ>
# 復元
~/setfn-spacebuilder admin knowledge-restore <バックアップフォルダ>
| 対象 | バックアップに含まれるか |
|---|---|
| ナレッジインデックスの記録(チーム・個人スペース) | 含まれる |
Localのlocal_vectors.db | SpaceBuilderのホームまたは設定フォルダの中にある場合のみ含まれる |
| Qdrant・Milvusのベクトル | 含まれない(元の資料から作り直す派生データ) |
復元後はサーバーを起動し、ナレッジストレージで既存の埋め込みを同期を実行して、ベクトルDBにデータを入れ直してください。バックアップ以降に外部ベクトルDBへ保存されたベクトルは、復元の過程で整理対象になり、サーバーの起動後に元の保存場所から自動的に削除されます。
トラブルシューティング
| 症状 | 確認する内容 |
|---|---|
接続状態が未接続 | エンドポイントのアドレスとポート、ファイアウォール、ベクトルDBサーバーが実行中かどうかを確認してください。 |
コレクション設定の確認が必要とcollection dimension is ..., expected ... | コレクションの次元と、設定したベクトル次元数が異なります。新しいコレクション名を指定してください。 |
コレクション設定の確認が必要とunnamed dense vectorに関するエラー | QdrantのコレクションをHybridまたはnamed vectorで作成しています。Qdrantを接続するを参照してください。 |
| 保存済みベクトル数が増えない | ナレッジインデックス作成がオンになっているか、許可時間帯の外ではないか、開始前の設定確認がすべて完了しているかを確認してください。 |
開始前の設定確認のAIベクトルDBに警告が表示される | ベクトルDBの接続エラー、コレクション設定の不一致、またはMilvusのコレクションなしです。接続エラーと設定の不一致は、カードにマウスポインターを合わせると詳細なエラーが表示されます。Milvusのコレクションなしの場合は、別途表示されるエラー内容がないため、Milvusを接続するを参照してコレクションを作成してください。カードを押すと、ベクトルDB設定に移動します。 |
ベクトルDBに認証が設定されていて未接続になる | ナレッジストレージでAPIキー(Qdrant・Milvus)、またはユーザー名とパスワード(Milvus)を入力して保存してください。 |
| 整理の再試行がたまり続ける | 以前のストレージに接続できるかどうかを確認してください。運用状態の確認の理由別の対処を参照してください。 |