ベクターストア

このガイドは、開発者としてRememberizerベクターストアを使用する方法を理解するのに役立ちます。

Rememberizer ベクターストアは、ベクターデータの取り扱いを簡素化し、テキスト入力に集中できるようにし、検索やデータ分析などのさまざまなアプリケーションのためにベクターの力を活用します。

はじめに

Rememberizer Vector Storeは、ベクトルデータを扱うための使いやすいインターフェースを提供し、ベクトル埋め込みの複雑さを抽象化します。pgvector拡張機能を備えたPostgreSQLによって支えられたRememberizer Vector Storeは、テキストを直接操作することを可能にします。このサービスは、テキストデータのチャンク化、ベクトル化、保存を処理し、コアアプリケーションロジックに集中できるようにします。

ベクトル埋め込みとベクトルデータベースの背後にある理論的概念をより深く理解するには、ベクトル埋め込みとベクトルデータベースとは?をご覧ください。

技術概要

ベクトルストアの仕組み

Rememberizer ベクトルストアは、テキストを高次元のベクトル表現(埋め込み)に変換し、意味的な意味を捉えます。これにより、以下が可能になります:

  1. 意味検索:キーワードだけでなく、意味に基づいて文書を見つける

  2. 類似性マッチング:概念的に関連するコンテンツを特定する

  3. 効率的な取得:大規模データセットから関連情報を迅速に見つける

主要コンポーネント

  • ドキュメント処理: テキストは、コンテキストを保持するために重複する境界を持つ最適なサイズのチャンクに分割されます

  • ベクトル化: チャンクは、最先端のモデルを使用して埋め込みに変換されます

  • インデックス作成: 専門的なアルゴリズムがベクトルを整理し、効率的な類似検索を実現します

  • クエリ処理: 検索クエリはベクトル化され、保存された埋め込みと比較されます

アーキテクチャ

Rememberizerは、次の方法でベクターストアを実装しています:

  • pgvector拡張を使用したPostgreSQL:効率的なベクターの保存と検索のため

  • コレクションベースの組織:各ベクターストアは独自の孤立したコレクションを持つ

  • API駆動のアクセス:すべての操作のためのシンプルなRESTfulエンドポイント

始めに

ベクトルストアの作成

  1. ダッシュボードのベクトルストアセクションに移動します

  2. 「新しいベクトルストアを作成」をクリックします:

    • 詳細を入力するように促すフォームが表示されます。

  3. 詳細を入力します:

    • 名前:ベクトルストアのユニークな名前を提供します。

    • 説明:ベクトルストアの簡単な説明を書きます。

    • 埋め込みモデル:テキストをベクトルに変換するモデルを選択します。

    • インデックスアルゴリズム:ベクトルが検索のためにどのように整理されるかを選択します。

    • 検索メトリック:ベクトル間の類似性がどのように計算されるかを定義します。

    • ベクトル次元:ベクトル埋め込みのサイズ(通常は768-1536)。

  4. フォームを送信します:

    • 「作成」ボタンをクリックします。成功通知が届き、新しいストアがベクトルストアリストに表示されます。

設定オプション

埋め込みモデル

モデル
次元
説明
最適

openai/text-embedding-3-large

1536

OpenAIの高精度埋め込みモデル

最大の精度を必要とするプロダクションアプリケーション

openai/text-embedding-3-small

1536

OpenAIのより小さく、より高速な埋め込みモデル

より高いスループット要件を持つアプリケーション

インデクシングアルゴリズム

アルゴリズム
説明
トレードオフ

IVFFLAT (デフォルト)

フラット圧縮の逆ファイル

スピードと精度の良いバランス; ほとんどのデータセットでうまく機能

HNSW

階層的ナビゲーション可能なスモールワールド

大規模データセットに対してより良い精度; より高いメモリ要件

検索メトリクス

メトリック
説明
最適

コサイン (デフォルト)

ベクトル間の角度を測定

一般的な類似性マッチング

内積 (ip)

ベクトル間のドット積

ベクトルの大きさが重要な場合

L2 (ユークリッド)

ベクトル間の直線距離

空間的関係が重要な場合

ベクトルストアの管理

  1. ベクトルストアの表示と編集:

    • 管理ダッシュボードにアクセスして、ベクトルストアを表示、編集、または削除します。

  2. ドキュメントの表示:

    • 特定のベクトルストア内の個々のドキュメントとその関連メタデータを閲覧します。

  3. 統計:

    • 保存されたベクトルの数、クエリパフォーマンス、運用指標などの詳細な統計を表示します。

APIキー管理

APIキーは、RememberizerベクターストアのAPIエンドポイントへのアクセスを認証および承認するために使用されます。APIキーの適切な管理は、ベクターストアのセキュリティと整合性を維持するために不可欠です。

APIキーの作成

  1. ベクターストアの詳細ページに移動します

  2. APIキー管理セクションに移動します:

    • 「設定」タブ内にあります

  3. **「APIキーを追加」**をクリックします:

    • 詳細を入力するように促すフォームが表示されます。

  4. 詳細を入力します:

    • 名前: APIキーの使用ケースを特定するための名前を提供します。

  5. フォームを送信します:

    • 「作成」ボタンをクリックします。新しいAPIキーが生成され、表示されます。必ずコピーして安全に保管してください。このキーは、その特定のベクターストアへのリクエストを認証するために使用されます。

APIキーの取り消し

APIキーがもはや必要ない場合は、潜在的な悪用を防ぐために削除できます。

セキュリティ上の理由から、APIキーを定期的にローテーションすることをお勧めします。これは、新しいキーを生成し、古いキーを取り消すことを含みます。

ベクトルストアAPIの使用

ベクトルストアを作成し、APIキーを生成した後、REST APIを使用してそれと対話できます。

コード例

import requests
import json

API_KEY = "your_api_key_here"
VECTOR_STORE_ID = "vs_abc123"  # あなたのベクトルストアIDに置き換えてください
BASE_URL = "https://api.rememberizer.a

# ベクターストアにドキュメントをアップロードする
def upload_document(file_path, document_name=None):
    if document_name is None:
        document_name = file_path.split("/")[-1]
    
    with open(file_path, "rb") as f:
        files = {"file": (document_name, f)}
        headers = {"x-api-key": API_KEY}
        
        response = requests.post(
            f"{BASE_URL}/vector-stores/{VECTOR_STORE_ID}/documents",
            headers=headers,
            files=files
        )
        
        if response.status_code == 201:
            print(f"ドキュメント '{document_name}' が正常にアップロードされました!")
            return response.json()
        else:
            print(f"ドキュメントのアップロード中にエラーが発生しました: {response.text}")
            return None

# ベクトルストアにテキストコンテンツをアップロードする
def upload_text(content, document_name):
    headers = {
        "x-api-key": API_KEY,
        "Content-Type": "application/json"
    }
    
    data = {
        "name": document_name,
        "content": content
    }
    
    response = requests.post(
        f"{BASE_URL}/vector-stores/{VECTOR_STORE_ID}/documents/text",
        headers=headers,
        json=data
    )
    
    if response.status_code == 201:
        print(f"テキストドキュメント '{document_name}' が正常にアップロードされました!")
        return response.json()
    else:
        print(f"テキストのアップロード中にエラーが発生しました: {response.text}")
        return None

# ベクトルストアを検索する
def search_vector_store(query, num_results=5, prev_chunks=1, next_chunks=1):
    headers = {"x-api-key": API_KEY}
    
    params = {
        "q": query,
        "n": num_results,
        "prev_chunks": prev_chunks,
        "next_chunks": next_chunks
    }
    
    response = requests.get(
        f"{BASE_URL}/vector-stores/{VECTOR_STORE_ID}/documents/search",
        headers=headers,
        params=params
    )
    
    if response.status_code == 200:
        results = response.json()
        print(f"'{query}' に対して {len(results['matched_chunks'])} 件の一致が見つかりました")
        
        # 上位の結果を表示
        if results['matched_chunks']:
            top_match = results['matched_chunks'][0]
            print(f"上位の一致 (距離: {top_match['distance']}):")
            print(f"ドキュメント: {top_match['document']['name']}")
            print(f"内容: {top_match['matched_content']}")
        
        return results
    else:
        print(f"検索中にエラーが発生しました: {response.text}")
        return None

# 使用例
# ドキュメントをアップロードする("path/to/document.pdf")
# upload_text("これはベクトル化されるサンプルテキストです", "sample-document.txt")
# search_vector_store("ベクトル類似性はどのように機能しますか?")

移行のベストプラクティス

成功する移行のために、以下の推奨事項に従ってください:

  1. 事前計画:

    • 移行に必要なデータ量と時間を見積もる

    • トラフィックが少ない時間帯に移行をスケジュールする

    • 大規模な移行を開始する前にディスクスペースを増やす

  2. 最初にテスト:

    • Rememberizer にテストベクトルストアを作成する

    • 小さなデータセット(100-1000 ベクトル)を移行する

    • 主要なクエリで検索機能を確認する

  3. データ検証:

    • 移行前後のドキュメント数を比較する

    • 同様の結果を確保するためにベンチマーククエリを実行する

    • メタデータが正しく保持されていることを検証する

  4. パフォーマンスの最適化:

    • 効率のためにバッチ操作を使用する

    • ソースデータベースとターゲットデータベースの地理的な共同配置を考慮する

    • API レート制限を監視し、バッチサイズを適宜調整する

  5. 移行後のステップ:

    • Rememberizer でのインデックス作成を確認する

    • 新しいベクトルストアを指すようにアプリケーション設定を更新する

    • 移行が確認されるまでソースデータベースをバックアップとして保持する

詳細な API リファレンスとエンドポイントのドキュメントについては、ベクターストアAPI ページを訪問してください。


API キーを安全に取り扱い、API キー管理のベストプラクティスに従ってください。

Last updated