意味的類似性によるベクターストアドキュメントの検索

セマンティック類似性とバッチ操作を使用してベクトルストアのドキュメントを検索する

Initiate a search operation with a query text and receive most semantically similar responses from the vector store.

Path parameters
vector-store-idstringRequired

The ID of the vector store.

Query parameters
qstringRequired

The search query text.

nintegerOptional

Number of chunks to return.

tnumberOptional

Matching threshold.

prev_chunksintegerOptional

Number of chunks before the matched chunk to include.

next_chunksintegerOptional

Number of chunks after the matched chunk to include.

Header parameters
x-api-keystringRequired

The API key for authentication.

Responses
200
Search results retrieved successfully.
application/json
get
GET /api/v1/vector-stores/{vector-store-id}/documents/search HTTP/1.1
Host: api.rememberizer.ai
x-api-key: text
Accept: */*
200

Search results retrieved successfully.

{
  "vector_store": {
    "id": "text",
    "name": "text"
  },
  "matched_chunks": [
    {
      "document": {
        "id": 1,
        "name": "text",
        "type": "text",
        "size": 1,
        "indexed_on": "2025-06-21T09:06:52.399Z",
        "vector_store": "text",
        "created": "2025-06-21T09:06:52.399Z",
        "modified": "2025-06-21T09:06:52.399Z"
      },
      "matched_content": "text",
      "distance": 1
    }
  ]
}

例リクエスト

curl -X GET \
  "https://api.rememberizer.ai/api/v1/vector-stores/vs_abc123/documents/search?q=How%20to%20integrate%20our%20product%20with%20third-party%20systems&n=5&prev_chunks=1&next_chunks=1" \
  -H "x-api-key: YOUR_API_KEY"

YOUR_API_KEY を実際のベクターストアAPIキーに、vs_abc123 をベクターストアIDに置き換えてください。

パスパラメータ

パラメータ
タイプ
説明

vector-store-id

string

必須。 検索するベクトルストアのID。

クエリパラメータ

パラメータ
タイプ
説明

q

文字列

必須。 検索クエリテキスト。

n

整数

返す結果の数。デフォルト: 10。

t

数値

一致の閾値。デフォルト: 0.7。

prev_chunks

整数

一致したチャンクの前に含めるチャンクの数。デフォルト: 0。

next_chunks

整数

一致したチャンクの後に含めるチャンクの数。デフォルト: 0。

レスポンスフォーマット

{
  "vector_store": {
    "id": "vs_abc123",
    "name": "製品ドキュメント"
  },
  "matched_chunks": [
    {
      "document": {
        "id": 1234,
        "name": "統合ガイド.pdf",
        "type": "application/pdf",
        "size": 250000,
        "indexed_on": "2023-06-15T10:30:00Z",
        "vector_store": "vs_abc123",
        "created": "2023-06-15T10:15:00Z",
        "modified": "2023-06-15T10:30:00Z"
      },
      "matched_content": "私たちの製品は、サードパーティシステム向けにいくつかの統合オプションを提供しています。主な方法は、OAuth2認証をサポートするRESTful APIを通じてです。さらに、Python、JavaScript、Javaで利用可能なSDKを使用することもできます。",
      "distance": 0.123
    },
    // ... さらに一致したチャンク
  ]
}

認証

このエンドポイントは、x-api-key ヘッダーを使用して API キーによる認証を必要とします。

エラーレスポンス

ステータスコード
説明

400

不正なリクエスト - 必須パラメータが欠落しているか、無効な形式

401

認証エラー - 無効または欠落したAPIキー

404

未検出 - ベクトルストアが見つかりません

500

サーバ内部エラー

検索最適化のヒント

コンテキストウィンドウ

prev_chunksnext_chunks パラメータを使用して、各一致に含まれるコンテキストの量を制御します:

  • 両方を 0 に設定すると、コンテキストなしの正確な一致になります

  • 両方を 1-2 に設定すると、最小限のコンテキストを持つ一致になります

  • 両方を 3-5 に設定すると、 substantial context を持つ一致になります

一致の閾値

t パラメータは、一致がどのように厳密にフィルタリングされるかを制御します:

  • 高い値(例:0.9)は、非常に近い一致のみを返します

  • 低い値(例:0.5)は、より多様な一致を返します

  • デフォルト(0.7)は、バランスの取れたアプローチを提供します

バッチ操作

高スループットアプリケーション向けに、Rememberizerはベクトルストアに対する効率的なバッチ操作をサポートしています。これらのメソッドは、複数の検索クエリを処理する際のパフォーマンスを最適化します。

バッチ検索の実装

import requests
import time
import concurrent.futures

def batch_search_vector_store(vector_store_id, queries, num_results=5, batch_size=10):
    """
    ベクトルストアに対してバッチ検索を実行します
    
    引数:
        vector_store_id: 検索するベクトルストアのID
        queries: 検索クエリ文字列のリスト
        num_results: クエリごとの結果の数
        batch_size: 並列リクエストの数
        
    戻り値:
        検索結果のリスト
    """
    headers = {
        "x-api-key": "YOUR_API_KEY"
    }
    
    results = []
    
    # APIを圧倒しないようにバッチで処理します
    for i in range(0, len(queries), batch_size):
        batch_queries = queries[i:i+batch_size]
        
        with concurrent.futures.ThreadPoolExecutor(max_workers=batch_size) as executor:
            futures = []
            
            for query in batch_queries:
                params = {
                    "q": query,
                    "n": num_results,
                    "prev_chunks": 1,
                    "next_chunks": 1
                }
                
                # スレッドプールにリクエストを送信します
                future = executor.submit(
                    requests.get,
                    f"https://api.rememberizer.ai/api/v1/vector-stores/{vector_store_id}/documents/search",
                    headers=headers,
                    params=params
                )
                futures.append(future)
            
            # すべてのfutureから結果を収集します
            for future in futures:
                response = future.result()
                if response.status_code == 200:
                    results.append(response.json())
                else:
                    results.append({"error": f"ステータスコードで失敗しました: {response.status_code}"})
        
        # レート制限を避けるためにバッチ間に遅延を追加します
        if i + batch_size < len(queries):
            time.sleep(1)
    
    return results

# 使用例
queries = [
    "REST APIとの統合",
    "認証プロトコル",
    "本番環境へのデプロイ方法",
    "パフォーマンス最適化技術",
    "エラーハンドリングのベストプラクティス"
]

search_results = batch_search_vector_store("vs_abc123", queries, num_results=3, batch_size=5)

バッチ操作のパフォーマンス最適化

ベクトルストア検索のためのバッチ操作を実装する際は、以下のベストプラクティスを考慮してください。

  1. 最適なバッチサイズ: ほとんどのアプリケーションでは、5-10のクエリを並行して処理することで、スループットとリソース使用の良いバランスが得られます。

  2. レート制限の認識: バッチ間に遅延メカニズム(通常1-2秒)を含めて、APIのレート制限に達しないようにします。

  3. エラーハンドリング: バッチ内で失敗する可能性のある個々のクエリに対して、堅牢なエラーハンドリングを実装します。

  4. 接続管理: 高ボリュームのアプリケーションでは、オーバーヘッドを減らすために接続プーリングを実装します。

  5. タイムアウト設定: 長時間実行されるクエリが全体のバッチをブロックしないように、各リクエストに適切なタイムアウトを設定します。

  6. 結果処理: すべての結果を待つのではなく、利用可能になった結果を非同期に処理することを検討してください。

  7. モニタリング: 平均応答時間や成功率などのパフォーマンス指標を追跡して、最適化の機会を特定します。

非常に高いクエリボリュームを持つプロダクションアプリケーションでは、大規模なバッチを効率的に管理するために、ワーカープロセスを持つキューシステムの実装を検討してください。

このエンドポイントを使用すると、意味的類似性を利用してベクトルストアを検索できます。これは、クエリに正確なキーワードが含まれていなくても、概念的に関連する文書を返します。これにより、自然言語クエリや質問応答に特に強力になります。

Last updated