Backup, snapshot-uri și migrare între baze vectoriale în Baze de Date Vectoriale & Căutare Semantică

Cum faci backup la colecțiile vectoriale (snapshot-uri Qdrant, backup-uri Pinecone, pg_dump pentru pgvector) și cum muți datele între motoare.

Sintaxă & interogare
# Qdrant: snapshot de colecție, descărcare, restaurare din URL
curl -X POST http://localhost:6333/collections/articole/snapshots
curl http://localhost:6333/collections/articole/snapshots/<nume>.snapshot --output articole.snapshot
curl -X PUT http://localhost:6333/collections/articole/snapshots/recover \
     -H 'Content-Type: application/json' \
     -d '{"location": "file:///qdrant/snapshots/articole/<nume>.snapshot"}'

Recalcularea embeddings pentru tot corpusul costă timp și bani, deci colecțiile vectoriale au nevoie de backup ca orice altă bază de date. Fiecare motor are mecanismul lui.

Qdrant: un snapshot de colecție conține configurația, toate punctele și payload-urile (nu și aliasurile) și se salvează ca fișier .snapshot. Restaurarea se face din URL sau fișier local (PUT .../snapshots/recover), prin încărcarea fișierului, ori la pornire cu argumentul --snapshot cale:colectie (instalări cu un singur nod). Variabila QDRANT__STORAGE__SNAPSHOTS_PATH doar schimbă directorul în care se salvează snapshot-urile. În Qdrant Cloud există și backup-uri la nivel de disc. Pinecone: un backup este o copie statică, neinterogabilă, a unui index serverless; se poate programa zilnic, săptămânal sau lunar, cu retenție, și se poate crea un index nou din backup.

pgvector: coloanele vector sunt incluse în backup-urile obișnuite PostgreSQL (pg_dump, point-in-time recovery). Pentru migrarea între motoare nu există un format standard; o variantă practică este exportul perechilor (id, vector, metadate, text) într-un format columnar precum Parquet și reîncărcarea în loturi. Păstrează și numele și versiunea modelului de embedding: vectorii de la modele diferite nu sunt compatibili.

Concepte cheie și caracteristici

Concept / Parametru Descriere practică
POST /collections/{nume}/snapshots Creează un snapshot de colecție (Python: client.create_snapshot(collection_name=...)).
PUT /collections/{nume}/snapshots/recover Restaurează din location (URL sau file://); priority decide ce se întâmplă la conflict cu datele existente.
--snapshot cale:colectie Restaurare la pornirea binarului Qdrant, pentru un singur nod.
snapshots_path / QDRANT__STORAGE__SNAPSHOTS_PATH Directorul de stocare al snapshot-urilor; nu restaurează nimic.
Backup Pinecone Copie statică a unui index serverless; programare cu frecvență și retenție (API 2026-04+).
pg_dump -Fc Backup PostgreSQL în format custom, inclusiv coloanele vector.

Exemple practice și scenarii reale

Exemplul 1: Snapshot din Python și restaurare pe alt nod

from qdrant_client import QdrantClient

sursa = QdrantClient(url="http://qdrant-node-1:6333")
sursa.create_snapshot(collection_name="articole")

destinatie = QdrantClient(url="http://qdrant-node-2:6333")
destinatie.recover_snapshot(
    "articole",
    "http://qdrant-node-1:6333/collections/articole/snapshots/<nume>.snapshot",
)

Exemplul 2: Backup pgvector cu pg_dump

pg_dump -Fc -d blog -t articole > articole.dump

Exemplul 3: Export în Parquet cu pyarrow

import pyarrow as pa
import pyarrow.parquet as pq

tabel = pa.table({"id": ids, "vector": vectori, "text": texte})
pq.write_table(tabel, "vectori.parquet")

Greșeli frecvente și capcane

  • Crezi că setarea QDRANT__STORAGE__SNAPSHOTS_PATH la pornirea containerului restaurează un snapshot. Restaurarea cere --snapshot, endpoint-ul recover sau încărcarea fișierului.
  • Restaurezi din URL în Qdrant Cloud. Documentația spune că acolo traficul de ieșire este blocat; încarcă fișierul.
  • Exporți vectorii fără numele modelului de embedding și fără dimensiune. La migrare nu mai știi dacă poți amesteca vectorii vechi cu cei noi.

Noțiuni și module înrudite