Γρήγορη αναφορά

Διανυσματικές Βάσεις Δεδομένων & Αρχιτεκτονική Ανάκτησης: Οδηγός Αναφοράς (Έννοιες, Ευρετήρια, Κβαντισμός & Επιλογή)

Συμπυκνωμένος οδηγός για διανυσματικές βάσεις δεδομένων και σημασιολογική ανάκτηση: μετρικές απόστασης, αλγόριθμοι ANN (HNSW, IVF, DiskANN, ScaNN), υπολογισμός μνήμης με κβαντισμό, inline φιλτράρισμα, υβριδική συγχώνευση RRF και σύγκριση εγγενών βάσεων, επεκτάσεων και cloud υπηρεσιών.

· Δημοσιεύτηκε

Μια διανυσματική βάση δεδομένων (Vector Database) αποθηκεύει πυκνά και αραιά embeddings υψηλών διαστάσεων μαζί με μεταδεδομένα, προσφέροντας αναζήτηση ομοιότητας Approximate Nearest Neighbor (ANN) σε χιλιοστά του δευτερολέπτου ως επίπεδο μνήμης και ανάκτησης για RAG, σημασιολογική αναζήτηση και πράκτορες ΤΝ.

Φόρτος / Περιορισμός Προτεινόμενη Κατηγορία Αντιπροσωπευτικές Λύσεις Λόγος Επιλογής
Υπάρχουσα στοίβα PostgreSQL, κάτω από ~10M διανύσματα Επέκταση Σχεσιακής ΒΔ pgvector (+ halfvec / HNSW) Επαναχρησιμοποιεί συναλλαγές ACID, SQL JOINs και υφιστάμενη λειτουργία χωρίς νέα υποδομή
Υβριδική βαθμολόγηση πλήρους κειμένου BM25 + διανυσμάτων Επέκταση Μηχανής Αναζήτησης Elasticsearch / OpenSearch / Vespa Ώριμο οικοσύστημα ανεστραμμένων ευρετηρίων και πολυβάθμιας υβριδικής κατάταξης
Αυτόνομη υπηρεσία υψηλού QPS με βαριά φίλτρα Εξειδικευμένη Κατανεμημένη ΒΔ Qdrant / Milvus / Weaviate Ειδική μηχανή αποθήκευσης, γρήγορο φιλτράρισμα payload και οριζόντια κλιμάκωση
Τοπική ανάπτυξη, edge/desktop εφαρμογές ή data lakes Ενσωματωμένη / Στηλοειδής ΒΔ LanceDB / Chroma / FAISS Εκτέλεση εντός διεργασίας με ενσωμάτωση zero-copy Apache Arrow / Parquet
Τεράστια cold/warm δεδομένα με ελάχιστο κόστος Object-Storage-Native SaaS Turbopuffer Object Storage (S3/GCS) ως πηγή αλήθειας + τοπική κρυφή μνήμη NVMe/RAM
Serverless χωρίς συντήρηση σε δημόσιο cloud Πλήρως Διαχειριζόμενη Υπηρεσία Pinecone / Vertex AI Vector Search / Azure AI Search Ελαστική serverless κλιμάκωση με εγγενή ενσωμάτωση IAM και παρακολούθησης

🔗 Σχετικοί οδηγοί: Έννοιες LLM & AI Agents · Σύγχρονοι Αλγόριθμοι ΤΝ · Εντολές PostgreSQL · Εντολές Redis · Εντολές MongoDB


1. Βασικές Έννοιες & Μετρικές Απόστασης

1.1 Ορολογία Κλειδί

Όρος Ορισμός Τεχνικές Επισημάνσεις
Embedding Πίνακας float σταθερού μήκους που κωδικοποιεί σημασιολογία κειμένου, εικόνας ή ήχου Κοινές διαστάσεις: 384 / 768 / 1024 / 1536 / 3072· η RAM και ο υπολογισμός αυξάνονται γραμμικά
ANN (Approximate Nearest Neighbor) Αναζήτηση με ευρετήριο που θυσιάζει ελάχιστο recall (95%–99%) για επιτάχυνση 100×–1000× Κύριος συμβιβασμός καθυστέρησης vs recall, έναντι της ακριβούς σάρωσης k-NN
Metadata Filtering Περιορισμός της αναζήτησης μέσω βαθμωτών ιδιοτήτων (tenant, χρόνος, ACL, κατηγορία) Διάκριση Pre-filtering, Single-stage / Inline και Post-filtering
Hybrid Search Συνδυασμός πυκνών διανυσμάτων (σημασιολογία) και αραιών / BM25 (ακριβείς λέξεις) Καλύπτει αστοχίες της καθαρής σημασιολογίας σε κωδικούς SKU, σφάλματα και ακρωνύμια
Sparse Vector Διάνυσμα υψηλών διαστάσεων με κυρίως μηδενικά (π.χ. SPLADE, βάρη BM25) Αποθηκεύει μόνο μη μηδενικούς δείκτες και βάρη· συμπληρώνει την πυκνή αναζήτηση

1.2 Τρεις Κύριες Μετρικές Απόστασης & Ομοιότητας

Cosine(u, v) = (u · v) / (‖u‖₂ · ‖v‖₂)
IP(u, v)     = u · v = ∑ᵢ (uᵢ × vᵢ)
L₂(u, v)     = √( ∑ᵢ (uᵢ − vᵢ)² )
Μετρική Σημασία Μαθηματική Ισοδυναμία Τυπικές Εφαρμογές
Ομοιότητα Συνημιτόνου (Cosine) Μετρά μόνο τη γωνία αγνοώντας το μέτρο (−1 έως 1· απόσταση = 1 - cos) Ίδια κατάταξη με το εσωτερικό γινόμενο για L₂-κανονικοποιημένα διανύσματα Σημασιολογική αναζήτηση κειμένου, RAG, embeddings προτάσεων (προεπιλογή)
Εσωτερικό Γινόμενο (IP / Dot) Αντικατοπτρίζει γωνία και μέτρο· ελάχιστο υπολογιστικό κόστος Σε μοναδιαία διανύσματα αντικαθιστά το Cosine αποφεύγοντας ρίζες/διαιρέσεις Συστάσεις two-tower, κανονικοποιημένα embeddings (π.χ. OpenAI)
Ευκλείδεια Απόσταση (L₂) Ευθύγραμμη γεωμετρική απόσταση· μικρότερη = πιο κοντά Για μοναδιαία διανύσματα: L₂² = 2 − 2 · cos(u, v) Embeddings εικόνων/προσώπων, χωρικό clustering, χαρακτηριστικά ευαίσθητα στο μέτρο

2. Αλγόριθμοι Ευρετηρίασης ANN & Κβαντισμός

2.1 Σύγκριση Διανυσματικών Ευρετηρίων

Τύπος Ευρετηρίου Μηχανισμός Χρήση RAM Καθυστέρηση & Recall Κλίμακα & Μηχανές
Flat (Ακριβής Σάρωση) Εξαντλητικός υπολογισμός απόστασης σε όλα τα διανύσματα Μέτρια (μόνο ακατέργαστα/κβαντισμένα) 100% recall· η καθυστέρηση εκτοξεύεται >~100k Μικρά σύνολα (<100k) και benchmarks αναφοράς
IVF-Flat (Ανεστραμμένο Αρχείο) K-Means clustering σε nlist κάδους· σαρώνει τους nprobe πλησιέστερους Χαμηλή (χωρίς επιβάρυνση γράφου) Ρυθμιζόμενο μέσω nprobe· μέτριο-υψηλό recall 1M–10M γραμμές με περιορισμένη RAM (FAISS / Milvus / pgvector)
IVF-PQ (IVF + Product Quantization) Διαμερισμός σε κάδους + συμπίεση υποχώρων με codebooks Πολύ χαμηλή (16×–64× μικρότερη) Υπερταχύ· χαμηλότερο αρχικό recall (χρειάζεται rescoring) 100M+ στη μνήμη (FAISS / Milvus / LanceDB)
HNSW (Ιεραρχικός Γράφος) Πολυεπίπεδος γράφος γειτνίασης τύπου skip-list Υψηλή (διανύσματα + ακμές σε RAM ή hot mmap) Χιλιοστά δευτ. + 95%–99% recall· βιομηχανικό πρότυπο 1M–100M+ πραγματικού χρόνου (Qdrant / Milvus / Weaviate / pgvector)
DiskANN (Γράφος Vamana) Γράφος για SSD: συμπιεσμένα διανύσματα στη RAM, πλήρης γράφος σε NVMe Χαμηλή (μείωση RAM 5×–10×) 100M+ ανά κόμβο σε ms· απαιτεί γρήγορο NVMe IOPS 100M–1B+ με στενό προϋπολογισμό μνήμης (Milvus / LanceDB / Azure)
ScaNN Ανισοτροπικός κβαντισμός διανυσμάτων + δενδρικός διαμερισμός Χαμηλή–Μέτρια Κορυφαία καμπύλη recall/καθυστέρησης σε IP Μεγάλης κλίμακας αναζήτηση & συστάσεις (Vertex AI Vector Search / OSS)

Βασικές παράμετροι ρύθμισης HNSW:

  • M (μέγιστες αμφίδρομες συνδέσεις ανά κόμβο, συνήθως 16–64): μεγαλύτερο M βελτιώνει το recall σε υψηλές διαστάσεις αυξάνοντας RAM και χρόνο κατασκευής.
  • efConstruction (μέγεθος λίστας υποψηφίων κατά την κατασκευή, συνήθως 100–400): επηρεάζει μόνο τον χρόνο κατασκευής και βελτιώνει την ποιότητα του γράφου.
  • efSearch (εύρος αναζήτησης ανά ερώτημα, ≥ top_k): η μόνη παράμετρος που ρυθμίζεται ανά query· η αύξηση ανεβάζει το recall και μειώνει το QPS.

2.2 Κβαντισμός & Εκτίμηση Μνήμης

Βάση αναφοράς για 10 εκατομμύρια διανύσματα × 1536 διαστάσεις (ακατέργαστο FP32):

Ακατέργαστο μέγεθος ≈ N × D × 4 Bytes   (ο γράφος HNSW προσθέτει ~1,2×–1,5× επιβάρυνση RAM)
Κβαντισμός Εύρος / διάστ. Συμπίεση Μέγεθος 10M × 1536-dim Ακρίβεια & Χρήση
FP32 (Χωρίς συμπίεση) 32-bit (4 B) 1× ~57,2 GB Ακρίβεια αναφοράς· ακριβή η διατήρηση στη RAM
FP16 / BF16 (Μισή ακρίβεια) 16-bit (2 B) 2× ~28,6 GB Σχεδόν μηδενική απώλεια recall (π.χ. pgvector halfvec), εξαιρετικό ROI
SQ8 (Βαθμωτός Int8) 8-bit (1 B) 4× ~14,3 GB Διατηρεί συνήθως 97%+ recall· στάνταρ επιλογή παραγωγής
PQ (Product Quantization) Υποχώροι 16×–64× ~1–4 GB Απαιτεί εκπαίδευση codebook· συνδυασμός με oversampling + rescore
BQ (Δυαδικός 1-bit) 1-bit 32× ~1,79 GB Αστραπιαία σάρωση Hamming· συνιστάται rescore 3×–5× (≥1024 dim)

3. Κλιμακωτή Σύγκριση Συστημάτων

3.1 Εξειδικευμένες Εγγενείς Διανυσματικές Βάσεις

Προϊόν Άδεια / Ανάπτυξη Γλώσσα & Μηχανή Αποθήκευσης Ευρετήρια & Δυνατότητες Ιδανική Χρήση
Qdrant Apache 2.0 / Self-hosted & Cloud Rust· στη μνήμη, mmap δίσκου & κβαντισμός δίσκου HNSW + SQ8/BQ· εγγενή αραιά διανύσματα και γρήγορα ευρετήρια payload Αυτόνομη υπηρεσία υψηλού QPS, multi-tenancy, σύνθετα φίλτρα
Milvus Apache 2.0 / Κατανεμημένη & Zilliz Cloud Go control plane + εκτέλεση C++· διαχωρισμένο object storage + MQ IVF, HNSW, DiskANN, GPU CAGRA· διαμερίσματα multi-tenant Επιχειρησιακές πλατφόρμες κλίμακας δισεκατομμυρίων
Weaviate BSD-3-Clause (ορισμένα enterprise πρόσθετα κλειστά) Go· ενσωματωμένο object storage + ανεστραμμένο ευρετήριο HNSW + δυναμικός/PQ/BQ κβαντισμός· GraphQL/REST, μονάδες vectorization Εφαρμογές RAG με ενσωματωμένο pipeline embeddings
Chroma Apache 2.0 / Embedded & Client-Server Πυρήνας Python / Rust· SQLite + τοπική ή κατανεμημένη αποθήκευση HNSW· μινιμαλιστικό API, στενή ενσωμάτωση LangChain / LlamaIndex Ταχεία πρωτοτυποποίηση και μικρομεσαίο Python RAG
LanceDB Apache 2.0 / Embedded & Enterprise Rust· στηλοειδές φορμά Lance & Apache Arrow IVF-PQ, HNSW, DiskANN· zero-copy I/O, εγγενές πολυτροπικό (ήχος/βίντεο/πίνακες) Τοπικές embedded εφαρμογές, serverless ανάγνωση S3, data lakes
Pinecone Ιδιόκτητο Serverless SaaS Διαχειριζόμενη κατανεμημένη μηχανή (από Pods σε Serverless) Αποσυνδεδεμένο ιδιόκτητο ευρετήριο· υβριδικό sparse-dense, απομόνωση Namespace Ομάδες cloud zero-ops που προτιμούν διαχειριζόμενη απλότητα
Turbopuffer Ιδιόκτητο SaaS / BYOC Rust· object storage (S3/GCS) ως πηγή αλήθειας + cache NVMe/RAM Ευρετήριο κεντροειδών (τύπου SPFresh) αποφεύγοντας τυχαία άλματα δίσκου· κείμενο + διάνυσμα Τεράστια cold/warm δεδομένα (π.χ. ευρετηρίαση κώδικα) με ελάχιστο κόστος

3.2 Βιβλιοθήκες Διανυσματικής Αναζήτησης (Όχι Πλήρεις ΒΔ)

Προϊόν Άδεια Όρια & Δυνατότητες Εφαρμογές
FAISS (Meta) MIT Βιβλιοθήκη ομοιότητας C++ / Python (χωρίς διατήρηση μεταδεδομένων, κατανεμημένες συναλλαγές ή server auth)· CPU SIMD & multi-GPU Μαζικοί υπολογισμοί offline, έρευνα ML, ενσωματωμένος πυρήνας

3.3 Επεκτάσεις Παραδοσιακών ΒΔ & Μηχανών Αναζήτησης

Προϊόν Βάση Διανυσματικές Δυνατότητες Πλεονεκτήματα & Περιορισμοί
pgvector Επέκταση PostgreSQL (συμπ. Supabase) Τύποι vector / halfvec / sparsevec / bit· HNSW & IVFFlat Υπέρ: ACID, SQL JOINs, μηδενική νέα λειτουργία· Κατά: write amplification & πίεση RAM >10M–50M γραμμές
Elasticsearch / OpenSearch Ανεστραμμένο ευρετήριο Lucene + HNSW Εγγενές υβριδικό Dense Vector + BM25, συγχώνευση RRF, ένθετα φίλτρα Υπέρ: αξιοποιεί υπάρχουσες ομάδες search· Κατά: υψηλή κατανάλωση JVM off-heap RAM & συγχωνεύσεις τμημάτων
Redis (Query Engine) Κατάστημα KV στη μνήμη Flat & HNSW, καθυστέρηση κάτω του ms, ενημερώσεις σε πραγματικό χρόνο Υπέρ: ιδανικό για σημασιολογική cache & feature stores· Κατά: υψηλό κόστος RAM σε μεγάλη κλίμακα
MongoDB Atlas Search ΒΔ εγγράφων (Atlas / Local CLI) HNSW βασισμένο σε Lucene δίπλα στα έγγραφα BSON Υπέρ: καταργεί τη διπλή εγγραφή εγγράφου/διανύσματος· Κατά: κύρια αναζήτηση δεμένη με το Atlas
SingleStore Κατανεμημένη HTAP SQL ΒΔ SQL + εγγενείς διανυσματικές συναρτήσεις (dot / L₂), columnstore + rowstore Επιχειρησιακοί φόρτοι με real-time SQL analytics και συναλλαγές
Vespa Μηχανή big-data Apache 2.0 HNSW + ακριβές/προσεγγιστικό υβριδικό, πολυβάθμια κατάταξη ML (Tensor/XGBoost/ONNX) Μεγάλες πλατφόρμες αναζήτησης & συστάσεων· υψηλότερη καμπύλη εκμάθησης

3.4 Πλήρως Διαχειριζόμενες Υπηρεσίες Cloud

Υπηρεσία Πάροχος Cloud Αρχιτεκτονική & Χαρακτηριστικά
Vertex AI Vector Search (πρώην Matching Engine) Google Cloud (GCP) Βασισμένο στο ScaNN· ενημερώσεις ροής κλίμακας δισεκατομμυρίων και υβριδικό sparse-dense
Amazon OpenSearch Serverless / Aurora pgvector AWS Διαχειριζόμενα serverless clusters & επεκτάσεις RDS/Aurora με εγγενή ενσωμάτωση Amazon Bedrock
Azure AI Search Microsoft Azure Ενσωματωμένο Semantic Ranker, pipelines vectorization και έλεγχος πρόσβασης RBAC

4. Στρατηγικές Φιλτραρίσματος & Υβριδική Αναζήτηση

4.1 Τρόποι Εκτέλεσης Φιλτραρίσματος Μεταδεδομένων

Στρατηγική Σειρά Εκτέλεσης Κίνδυνος & Αντιμετώπιση
Pre-filtering Αξιολογεί πρώτα το βαθμωτό ευρετήριο για bitmap IDs και έπειτα εκτελεί τη διανυσματική αναζήτηση Σε πολύ αυστηρά φίλτρα (<1%) ο γράφος αποσυνδέεται· Λύση: αυτόματη εναλλαγή σε ακριβή σάρωση
Post-filtering Ανακτά το καθολικό Top-K και απορρίπτει όσα δεν πληρούν τα κριτήρια Κινδυνεύει να επιστρέψει λιγότερα από K αποτελέσματα (ή μηδέν)· Λύση: ποτέ μόνο του χωρίς ισχυρό oversampling
Single-stage / Inline Ελέγχει δυναμικά το bitmap φίλτρου σε κάθε βήμα στον γράφο HNSW Σύγχρονο πρότυπο (Qdrant / Milvus / Weaviate / pgvector 0.8+ iterative scan) που εξισορροπεί recall & καθυστέρηση

4.2 Reciprocal Rank Fusion (RRF)

Επειδή οι βαθμολογίες πυκνής αναζήτησης και BM25 έχουν ανόμοιες κλίμακες, το RRF συγχωνεύει τις κατατάξεις απευθείας χωρίς βαθμονόμηση:

RRF_Score(d) = ∑_{r ∈ R} 1 / (k + rank_r(d))     (τυπική σταθερά εξομάλυνσης k = 60)

5. Αποσπάσματα Έτοιμα για Παραγωγή

5.1 Σχήμα pgvector, Ευρετήριο HNSW & Επαναληπτική Σάρωση (SQL)

CREATE EXTENSION IF NOT EXISTS vector;

CREATE TABLE documents (
    id BIGSERIAL PRIMARY KEY,
    tenant_id INT NOT NULL,
    content TEXT NOT NULL,
    embedding halfvec(1536),          -- float16 εξοικονομεί 50% μνήμη έναντι float32
    fts tsvector GENERATED ALWAYS AS (to_tsvector('simple', content)) STORED
);

CREATE INDEX idx_docs_emb_hnsw ON documents
    USING hnsw (embedding halfvec_cosine_ops)
    WITH (m = 16, ef_construction = 128);

CREATE INDEX idx_docs_fts ON documents USING gin (fts);

SET hnsw.ef_search = 100;
SET hnsw.iterative_scan = relaxed_order;

SELECT id, content, 1 - (embedding <=> $1::halfvec) AS cosine_sim
FROM documents
WHERE tenant_id = 42
ORDER BY embedding <=> $1::halfvec
LIMIT 10;

Τελεστές Απόστασης pgvector: <-> Ευκλείδεια (L₂) · <=> Απόσταση συνημιτόνου (1 - cos) · <#> Αρνητικό εσωτερικό γινόμενο · <+> Μανχάταν (L₁).

5.2 Qdrant: Δυαδικός Κβαντισμός & Φιλτράρισμα Payload (Python)

from qdrant_client import QdrantClient, models

client = QdrantClient(url="http://localhost:6333")

client.create_collection(
    collection_name="knowledge_base",
    vectors_config=models.VectorParams(
        size=1536,
        distance=models.Distance.COSINE,
        on_disk=True,
    ),
    quantization_config=models.BinaryQuantization(
        binary=models.BinaryQuantizationConfig(always_ram=True)
    ),
)

client.create_payload_index(
    collection_name="knowledge_base",
    field_name="tenant_id",
    field_schema=models.PayloadSchemaType.KEYWORD,
)

hits = client.query_points(
    collection_name="knowledge_base",
    query=[0.012, -0.045, ...],
    query_filter=models.Filter(
        must=[models.FieldCondition(key="tenant_id", match=models.MatchValue(value="org_a"))]
    ),
    search_params=models.SearchParams(
        quantization=models.QuantizationSearchParams(rescore=True, oversampling=3.0)
    ),
    limit=10,
).points

Σχετικά θέματα