このトピックでは、ナレッジストレージサービスのシステムアーキテクチャ、データモデル、埋め込みと検索の戦略、ならびに Subspace を用いたマルチテナンシー設計について説明します。また、適合性評価についても説明し、技術的な意思決定者が本製品がビジネス要件に適合するかどうかを判断するのに役立ちます。
システムアーキテクチャ
ナレッジストレージサービスは、フルマネージドのサーバーレスアーキテクチャ上に構築されています。お客様は API を介してサービスを利用し、基盤となるインフラストラクチャはプラットフォームが自動的に管理します。データフローは次のとおりです。
AddDocumentsAPI を呼び出して、Object Storage Service (OSS) 内のファイルへのパスを指定するか、SDK を使用してローカルファイルをアップロードします。サービスが OSS からファイルを読み取り、ドキュメントを自動的に解析してチャンクに分割します。
各チャンクについて、サービスが埋め込みモデルを呼び出してベクトルを生成し、Tablestore のチャンクテーブルに書き込みます。
サービスがベクトルインデックスと全文検索インデックスを自動的に構築します。
Retrieve API を呼び出すと、サービスがハイブリッド検索を実行し、関連するチャンクを返します。
元のドキュメント、解析結果、ベクトルデータを含むすべてのデータは、お客様のアカウント内の OSS インスタンスおよび Tablestore インスタンスに保存されます。サービス自体はお客様のデータを保持しません。ストレージとコンピュートは分離されており、それぞれ個別に課金されます。
データモデル
ナレッジベースは、4 層のエンティティ構造で構成されます。
エンティティ | 説明 |
ナレッジベース | 各ナレッジベースは、Document テーブル、チャンクテーブル、Index テーブルに対応します。1 つのナレッジベースで最大 1 億件のドキュメントをサポートできます。 |
Document | ドキュメントレコードです。OSS 内のファイルにリンクされ、ドキュメントのステータスとメタデータを保存します。 |
チャンク | ベクトルデータと元のコンテンツを保存するドキュメントチャンクです。検索の最小単位です。 |
Index | 検索のために、ベクトルデータとその他のコンテンツを保存するインデックステーブルです。サービスはこれを使用して、チャンクに対する高速検索を実行します。 |
サービスは、対応するデータテーブルを Tablestore に自動的に作成します。
ドキュメントテーブル:
{knowledge_base_name}_{knowledge_base_id}チャンクテーブル:
{knowledge_base_name}_{knowledge_base_id}_chunkインデックス テーブル:
{knowledge_base_name}_{knowledge_base_id}_index

データソース
ナレッジベースのデータソースは OSS です。アップロード方法にかかわらず、元のドキュメントはお客様自身の OSS バケットに保存されます。
ナレッジベースには、OSS バケットに対する読み取りおよび書き込み権限が必要です。解析とチャンク分割のために元のドキュメントを読み取り、解析プロセスの中間結果を OSS に書き戻します。
次の 3 つの方法のいずれかで、ドキュメントをナレッジベースにインポートできます。
ローカルファイルのアップロード:ローカルのファイルまたはディレクトリを指定します。SDK が自動的に OSS にアップロードし、その後ナレッジベースに追加します。ディレクトリを指定した場合、SDK はその配下のすべてのファイルを再帰的に探索します。
OSS ファイルの追加:ファイルがすでに OSS に存在する場合は、OSS パスを指定してナレッジベースに直接追加できます。
OSS ディレクトリからの一括インポート:OSS ディレクトリパスを指定します。サービスは、ディレクトリ内のすべてのファイルを自動的かつ再帰的にスキャンします。
inclusionFiltersとexclusionFiltersを使用して、ファイル名のパターンに基づいてファイルをフィルタリングできます。
各方法の詳細な手順については、「Document management」をご参照ください。
埋め込み設定
埋め込み設定は、ドキュメントチャンクをどのようにベクトルに変換するかを決定します。この設定は、ナレッジベースの作成時に指定します。
パラメーター | 説明 |
| モデルプロバイダー。 |
| モデル名。Model Studio は |
| ベクトル次元。たとえば、 |
|
|
|
|
embeddingConfiguration を指定しない場合、サービスはデフォルトで、ほとんどのユースケースに適した Model Studio の text-embedding-v4 モデル (1024 次元) を使用します。
埋め込み設定は、ナレッジベースの作成後に変更できません。別のモデルまたは次元を使用するには、ナレッジベースを削除して再作成する必要があります。作成前にモデル選定を慎重に評価することを推奨します。
モデル選定の推奨事項:
汎用的な中国語および英語のシナリオでは、
text-embedding-v4(1024 次元) を推奨します。これは、意味理解とパフォーマンスのバランスに優れています。自社開発またはサードパーティの埋め込みサービスをすでにお持ちの場合は、
customモードを使用して統合することで、一貫した技術スタックを維持できます。次元が高いほど、より豊かな意味を表現できますが、ストレージとコンピュートのコストが増加します。ほとんどのユースケースでは 1024 次元を推奨します。
検索戦略
Retrieve API を呼び出すと、取得設定 (retrievalConfiguration) は、以下の優先順位に基づいて決定されます:
優先度 | ソース | 説明 |
1 (最優先) | Retrieve API パラメーター | 現在のリクエストで渡される設定で、この呼び出しにのみ適用されます。 |
2 | ナレッジベースレベルの設定 | ナレッジベース作成時に設定します。UpdateKnowledgeBase API を使用して変更できます。 |
3 (最下位) | システムデフォルト | ベクトル検索と全文検索を組み合わせたハイブリッド検索です。結果は WEIGHT 戦略 (ベクトル:0.7、全文検索:0.3) で融合されます。 |
検索タイプ
タイプ | 説明 | ユースケース |
| ベクトルを使用してセマンティック検索を実行します。 | クエリが自然言語で表現され、セマンティック理解が必要な場合。 |
| テキストに対してキーワードベースの検索を実行します。 | クエリに厳密なキーワード、固有名詞、または識別子が含まれる場合。 |
両方の検索タイプを有効にし、結果の融合にはリランクの仕組みを使用することを推奨します。
リランク戦略
タイプ | 説明 | ユースケース |
RRF | Reciprocal Rank Fusion です。追加のモデル呼び出しを必要とせず、順位に基づいて結果を融合します。 | 低レイテンシが重要な汎用シナリオ。 |
WEIGHT | ベクトル検索結果と全文検索結果に重み付けスコアを適用して結果を融合します。 | 各検索手法の寄与度をきめ細かく制御する必要があるシナリオ。 |
MODEL | リランクモデルを使用して候補結果を並べ替えます。 | ランキング品質が極めて重要で、追加レイテンシを許容できるシナリオ。 |
検索戦略の設定とチューニングの詳細については、「Retrieval and ranking」をご参照ください。
マルチテナンシー向けの Subspace
Subspace は、ナレッジベース内にデータ分離パーティションを提供します。この機能は、同じナレッジベース内でユーザー、部門、またはテナントごとにデータを分離する必要があるシナリオに最適です。有効にするには、ナレッジベースを作成するときに "subspace": true を設定します。
主なルール:
Subspace を有効にすると、すべてのドキュメント操作 (追加、クエリ、削除、リスト) および取得呼び出しで必ず
subspaceフィールドを指定する必要があります。そうしないと、サービスはエラーを返します。Retrieve API は、Subspace 名のリストを渡すことで、複数の Subspace を同時にクエリできます。最大 32 件まで指定できます。
Subspace 名の最大長は 128 文字です。
Subspace の設定は、ナレッジベース作成後に変更できません。
例えば、企業環境では、部門の各従業員は独自のドキュメントセットを持っています。 部門の管理者は、Subspace が有効化された単一のナレッジベースを作成し、各従業員に一意の Subspace (例えば、employee_alice や employee_bob など) を割り当てることができます。 これにより、各従業員のドキュメントは他の従業員から分離される一方、管理者はナレッジベースの設定を一元管理できます。 従業員を横断した検索を実行するには、管理者は、単一の Retrieve コールで複数の Subspace 名を渡して、フェデレーテッド検索を実行できます。
Subspace と複数ナレッジベースの比較
観点 | Subspace | 複数ナレッジベース |
分離の粒度 | 単一ナレッジベース内の論理パーティション | 完全に分離されたナレッジベース |
埋め込み設定 | すべての Subspace で同一の埋め込み設定を共有 | 各ナレッジベースが独自の埋め込み設定を持つ |
検索スコープ | 複数 Subspace を横断する連合検索をサポート | 検索は単一のナレッジベースに限定されます。複数ナレッジベースを横断する検索は、アプリケーション層で実装する必要があります。 |
管理コスト | 低 (1 つのナレッジベース内で全テナントを管理) | 高 (複数のナレッジベースの管理が必要) |
ユースケース | 同種データに対するマルチテナント分離 | 異なる業務ドメイン、または埋め込み要件が異なる場合 |
適合性評価
推奨:
大規模言語モデル (LLM) アプリケーション向けに、検索拡張生成 (RAG) の機能を構築する場合。
ベクトル検索と全文検索を組み合わせたハイブリッド検索を実装する場合。
マルチテナンシーのデータ分離が必要な場合。
数百から数十億までスケールするドキュメントコレクションを管理する場合。
すべてのデータをご自身のアカウント内に保持する必要があるなど、厳格なデータセキュリティを求める場合。
従量課金で、運用管理が不要なソリューションを求める場合。
要検討:
インデックスの鮮度が極めて重要なシナリオ。ドキュメント取り込みは非同期プロセスであるため、コンテンツが検索可能になるまでにレイテンシが発生します。
カスタムのドキュメントチャンク分割戦略が必要なシナリオ。現時点では、サービスは自動チャンク分割プロセスを使用します。
非推奨:
構造化データのみをクエリする場合。この用途には、Tablestore のワイドカラムモデル、またはリレーショナルデータベースの使用を推奨します。
リアルタイムのストリーミングデータのインデックスを作成する場合。この用途には、Tablestore の Search Index 機能を直接使用することを推奨します。