ベクターストア
このガイドは、開発者としてRememberizerベクターストアを使用する方法を理解するのに役立ちます。
Last updated
このガイドは、開発者としてRememberizerベクターストアを使用する方法を理解するのに役立ちます。
Last updated
Rememberizer ベクターストアは、ベクターデータの取り扱いを簡素化し、テキスト入力に集中できるようにし、検索やデータ分析などのさまざまなアプリケーションのためにベクターの力を活用します。
Rememberizer Vector Storeは、ベクトルデータを扱うための使いやすいインターフェースを提供し、ベクトル埋め込みの複雑さを抽象化します。pgvector拡張機能を備えたPostgreSQLによって支えられたRememberizer Vector Storeは、テキストを直接操作することを可能にします。このサービスは、テキストデータのチャンク化、ベクトル化、保存を処理し、コアアプリケーションロジックに集中できるようにします。
ベクトル埋め込みとベクトルデータベースの背後にある理論的概念をより深く理解するには、をご覧ください。
Rememberizer ベクトルストアは、テキストを高次元のベクトル表現(埋め込み)に変換し、意味的な意味を捉えます。これにより、以下が可能になります:
意味検索:キーワードだけでなく、意味に基づいて文書を見つける
類似性マッチング:概念的に関連するコンテンツを特定する
効率的な取得:大規模データセットから関連情報を迅速に見つける
ドキュメント処理: テキストは、コンテキストを保持するために重複する境界を持つ最適なサイズのチャンクに分割されます
ベクトル化: チャンクは、最先端のモデルを使用して埋め込みに変換されます
インデックス作成: 専門的なアルゴリズムがベクトルを整理し、効率的な類似検索を実現します
クエリ処理: 検索クエリはベクトル化され、保存された埋め込みと比較されます
Rememberizerは、次の方法でベクターストアを実装しています:
pgvector拡張を使用したPostgreSQL:効率的なベクターの保存と検索のため
コレクションベースの組織:各ベクターストアは独自の孤立したコレクションを持つ
API駆動のアクセス:すべての操作のためのシンプルなRESTfulエンドポイント
ダッシュボードのベクトルストアセクションに移動します
「新しいベクトルストアを作成」をクリックします:
詳細を入力するように促すフォームが表示されます。
詳細を入力します:
名前:ベクトルストアのユニークな名前を提供します。
説明:ベクトルストアの簡単な説明を書きます。
埋め込みモデル:テキストをベクトルに変換するモデルを選択します。
インデックスアルゴリズム:ベクトルが検索のためにどのように整理されるかを選択します。
検索メトリック:ベクトル間の類似性がどのように計算されるかを定義します。
ベクトル次元:ベクトル埋め込みのサイズ(通常は768-1536)。
フォームを送信します:
「作成」ボタンをクリックします。成功通知が届き、新しいストアがベクトルストアリストに表示されます。
openai/text-embedding-3-large
1536
OpenAIの高精度埋め込みモデル
最大の精度を必要とするプロダクションアプリケーション
openai/text-embedding-3-small
1536
OpenAIのより小さく、より高速な埋め込みモデル
より高いスループット要件を持つアプリケーション
IVFFLAT (デフォルト)
フラット圧縮の逆ファイル
スピードと精度の良いバランス; ほとんどのデータセットでうまく機能
HNSW
階層的ナビゲーション可能なスモールワールド
大規模データセットに対してより良い精度; より高いメモリ要件
コサイン (デフォルト)
ベクトル間の角度を測定
一般的な類似性マッチング
内積 (ip)
ベクトル間のドット積
ベクトルの大きさが重要な場合
L2 (ユークリッド)
ベクトル間の直線距離
空間的関係が重要な場合
ベクトルストアの表示と編集:
管理ダッシュボードにアクセスして、ベクトルストアを表示、編集、または削除します。
ドキュメントの表示:
特定のベクトルストア内の個々のドキュメントとその関連メタデータを閲覧します。
統計:
保存されたベクトルの数、クエリパフォーマンス、運用指標などの詳細な統計を表示します。
APIキーは、RememberizerベクターストアのAPIエンドポイントへのアクセスを認証および承認するために使用されます。APIキーの適切な管理は、ベクターストアのセキュリティと整合性を維持するために不可欠です。
ベクターストアの詳細ページに移動します
APIキー管理セクションに移動します:
「設定」タブ内にあります
**「APIキーを追加」**をクリックします:
詳細を入力するように促すフォームが表示されます。
詳細を入力します:
名前: APIキーの使用ケースを特定するための名前を提供します。
フォームを送信します:
「作成」ボタンをクリックします。新しいAPIキーが生成され、表示されます。必ずコピーして安全に保管してください。このキーは、その特定のベクターストアへのリクエストを認証するために使用されます。
APIキーがもはや必要ない場合は、潜在的な悪用を防ぐために削除できます。
セキュリティ上の理由から、APIキーを定期的にローテーションすることをお勧めします。これは、新しいキーを生成し、古いキーを取り消すことを含みます。
ベクトルストアを作成し、APIキーを生成した後、REST APIを使用してそれと対話できます。
近日公開: ベクトルストアアーキテクチャダイアグラム
この技術アーキテクチャダイアグラムは以下を示します:
PostgreSQL + pgvector 基盤アーキテクチャ
インデックスアルゴリズム構造 (IVFFLAT vs. HNSW)
ベクトル空間における検索メトリクスの動作 (視覚的比較)
オーバーラップの視覚化を伴うドキュメントチャンク処理
異なるスケールで視覚化されたパフォーマンスの考慮事項
小 (<10k ドキュメント)
IVFFLAT, コサイン類似度
シンプルな構成で良好なパフォーマンスを提供
中 (10k-100k ドキュメント)
IVFFLAT, 定期的な再インデックスを確保
検索速度とインデックス維持のバランス
大 (>100k ドキュメント)
HNSW, ベクトル次元の増加を検討
メモリ使用量が増加するが、スケールでのパフォーマンスを維持
チャンク処理は検索品質に大きな影響を与えます:
チャンクサイズ: Rememberizerはデフォルトのチャンクサイズを1024バイト、200バイトのオーバーラップで使用します
小さいチャンク (512-1024バイト): より正確な一致、特定の質問に適しています
大きいチャンク (1500-2048バイト): 各一致により多くのコンテキスト、広範なトピックに適しています
オーバーラップ: チャンクの境界でコンテキストが失われないようにします
コンテキストウィンドウ: prev_chunks
と next_chunks
を使用して周囲のコンテンツを取得
結果数: 3-5 件の結果(n
パラメータ)から始め、精度のニーズに応じて調整
閾値: 類似スコアで結果をフィルタリングするために t
パラメータを調整
Rememberizerは、ベクトル数が事前に定義された閾値を超えると自動的に再インデックス作成をトリガーしますが、以下の後に手動で再インデックス作成を検討してください:
大量のドキュメントをアップロードした場合
埋め込みモデルを変更した場合
インデックス作成アルゴリズムを変更した場合
より良い検索結果のために:
具体的に 検索クエリを設定する
文脈を含める 可能な場合は
自然言語を使用する キーワードではなく
結果の質に基づいて パラメータを調整する
現在、他のベクターデータベースソリューションを使用していて、Rememberizer Vector Storeに移行したい場合は、以下のガイドがデータを効率的に移行するのに役立ちます。
ベクトルデータの移行には以下が含まれます:
ソースベクトルデータベースからデータをエクスポートする
データをRememberizerと互換性のある形式に変換する
データをRememberizerベクトルストアにインポートする
移行が成功したことを確認する
PostgreSQL基盤: バックアップとリカバリ機能を備えた成熟したデータベース技術に基づいています
統合エコシステム: 他のRememberizerコンポーネントとのシームレスな接続
管理の簡素化: ベクトル操作のための統一インターフェース
高度なセキュリティ: 行レベルのセキュリティと細かいアクセス制御
スケーラブルなアーキテクチャ: データが増えるにつれてパフォーマンスを最適化
すでにSupabaseをpgvectorで使用している場合、Rememberizerへの移行は特に簡単です。なぜなら、両者はpgvector拡張機能を持つPostgreSQLを使用しているからです。
load_dotenv()
SUPABASE_DB_HOST = os.getenv("SUPABASE_DB_HOST") SUPABASE_DB_PORT = os.getenv("SUPABASE_DB_PORT", "5432") SUPABASE_DB_NAME = os.getenv("SUPABASE_DB_NAME") SUPABASE_DB_USER = os.getenv("SUPABASE_DB_USER") SUPABASE_DB_PASSWORD = os.getenv("SUPABASE_DB_PASSWORD") SUPABASE_VECTOR_TABLE = os.getenv("SUPABASE_VECTOR_TABLE", "documents")
REMEMBERIZER_API_KEY = os.getenv("REMEMBERIZER_API_KEY") VECTOR_STORE_ID = os.getenv("VECTOR_STORE_ID") # 例: "vs_abc123" BASE_URL = "https://api.rememberizer.ai/api/v1"
BATCH_SIZE = 100
def connect_to_supabase(): try: conn = psycopg2.connect( host=SUPABASE_DB_HOST, port=SUPABASE_DB_PORT, dbname=SUPABASE_DB_NAME, user=SUPABASE_DB_USER, password=SUPABASE_DB_PASSWORD ) return conn except Exception as e: print(f"Supabase PostgreSQLへの接続中にエラーが発生しました: {e}") return None
def fetch_documents_from_supabase(conn, batch_size, offset=0): try: cursor = conn.cursor()
def upload_to_rememberizer(documents): headers = { "x-api-key": REMEMBERIZER_API_KEY, "Content-Type": "application/json" }
def migrate_supabase_to_rememberizer(): conn = connect_to_supabase() if not conn: print("Supabaseへの接続に失敗しました。移行を中止します。") return
成功する移行のために、以下の推奨事項に従ってください:
事前計画:
移行に必要なデータ量と時間を見積もる
トラフィックが少ない時間帯に移行をスケジュールする
大規模な移行を開始する前にディスクスペースを増やす
最初にテスト:
Rememberizer にテストベクトルストアを作成する
小さなデータセット(100-1000 ベクトル)を移行する
主要なクエリで検索機能を確認する
データ検証:
移行前後のドキュメント数を比較する
同様の結果を確保するためにベンチマーククエリを実行する
メタデータが正しく保持されていることを検証する
パフォーマンスの最適化:
効率のためにバッチ操作を使用する
ソースデータベースとターゲットデータベースの地理的な共同配置を考慮する
API レート制限を監視し、バッチサイズを適宜調整する
移行後のステップ:
Rememberizer でのインデックス作成を確認する
新しいベクトルストアを指すようにアプリケーション設定を更新する
移行が確認されるまでソースデータベースをバックアップとして保持する
詳細な API リファレンスとエンドポイントのドキュメントについては、ベクターストアのドキュメント ページを訪問してください。
API キーを安全に取り扱い、API キー管理のベストプラクティスに従ってください。