ベクトルデータ管理(Vectors API)

このドキュメントでは、RAG システムが利用するベクトルデータ(Embedding)を API で管理する方法をまとめています。 ベクトル登録、削除、検索、メタデータ管理など、ベクトルストアの運用に必要な すべての仕様を扱います。


1. ベクトルストアとは

ベクトルストアは、テキストをベクトル(数値配列)として保存し、類似検索を行うためのデータベースです。 当プラットフォームでは以下の用途で使用されます:

  • テキストチャンク(文書)の意味的検索
  • RAG(Retrieval Augmented Generation)の検索対象
  • FAQ・ナレッジ・社内文書の類似検索

ベクトルは LLM / Embedding モデルにより生成された 768 次元 / 1536 次元(モデルにより異なる) の配列として保存されます。

2. Vectors API 一覧

メソッド エンドポイント 説明
POST /api/vectors/upsert ベクトルデータの登録または更新
POST /api/vectors/search ベクトル類似検索
DELETE /api/vectors/{id} 特定ベクトルを削除
GET /api/vectors/{id} 特定ベクトルのメタ情報取得

3. ベクトル登録(Upsert)

ベクトルの登録または更新を行います。 同じ ID があれば上書き、なければ新規登録されます。

■ リクエスト例
POST /api/vectors/upsert
Content-Type: application/json

{
  "id": "chunk-001",
  "values": [0.12, -0.44, 0.91, ...],
  "metadata": {
    "text": "AIとは、人間の知的行動を模倣する技術の総称である。",
    "source": "wiki-ai",
    "path": "/docs/ai",
    "updatedAt": "2025-01-14T10:00:00Z"
  }
}
■ レスポンス
{
  "status": "ok",
  "id": "chunk-001",
  "operation": "updated"
}

4. ベクトル検索(Similarity Search)

ベクトル類似度計算(cosine similarity)により、指定クエリに最も近い文書を検索します。

■ リクエスト例
POST /api/vectors/search
Content-Type: application/json

{
  "vector": [0.11, -0.52, 0.33, ...],
  "topK": 5,
  "includeMetadata": true
}
■ レスポンス
{
  "results": [
    {
      "id": "chunk-001",
      "score": 0.92,
      "metadata": {
        "text": "AIとは〜",
        "source": "wiki-ai",
        "path": "/docs/ai"
      }
    }
  ]
}

5. メタデータ取得

保存済みのベクトルデータの詳細を取得します。

GET /api/vectors/chunk-001
{
  "id": "chunk-001",
  "dimensions": 1536,
  "metadata": {
    "text": "...",
    "source": "wiki-ai",
    "path": "/docs/ai"
  }
}

6. ベクトル削除

特定ベクトルを削除します。

DELETE /api/vectors/chunk-001
{
  "status": "deleted",
  "id": "chunk-001"
}

7. ベストプラクティス

  • 1チャンクは 300–600 文字が最適
  • メタデータに text / path / source / updatedAt を入れると検索品質が上がる
  • 同じ文書を再処理する場合は ID を固定して upsert する
  • RAG 評価(Semantic Eval)を定期的に実行しバイアスを監視する

次:RAG 全体アーキテクチャ →