Σημείωση
Η πρόσβαση σε αυτή τη σελίδα απαιτεί εξουσιοδότηση. Μπορείτε να δοκιμάσετε να συνδεθείτε ή να αλλάξετε καταλόγους.
Η πρόσβαση σε αυτή τη σελίδα απαιτεί εξουσιοδότηση. Μπορείτε να δοκιμάσετε να αλλάξετε καταλόγους.
Το Cosmos DB στο Fabric προσφέρει πλέον αποτελεσματική διανυσματική ευρετηρίαση και αναζήτηση. Αυτή η δυνατότητα έχει σχεδιαστεί για τον χειρισμό πολλαπλών τμημάτων, υψηλών διαστάσεων διανυσματικών διανυσματικών, επιτρέποντας την αποτελεσματική και ακριβή διανυσματική αναζήτηση σε οποιαδήποτε κλίμακα. Μπορείτε πλέον να αποθηκεύετε διανύσματα απευθείας στα έγγραφα μαζί με τα δεδομένα σας. Κάθε έγγραφο στη βάση δεδομένων σας μπορεί να περιέχει όχι μόνο παραδοσιακά δεδομένα χωρίς σχήμα, αλλά και πολυ-τμηματικά διανύσματα υψηλής διάστασης ως άλλες ιδιότητες των εγγράφων. Αυτή η συστοιχία δεδομένων και διανυσματικών επιτρέπει την αποτελεσματική δημιουργία ευρετηρίου και αναζήτηση, καθώς τα διανύσματα αποθηκεύονται στην ίδια λογική μονάδα με τα δεδομένα που αντιπροσωπεύουν. Η διατήρηση των διανυσμάτων και των δεδομένων μαζί απλοποιεί τη διαχείριση δεδομένων, τις αρχιτεκτονικές εφαρμογών AI και την αποτελεσματικότητα των λειτουργιών που βασίζονται σε διανύσματα.
Το Cosmos DB in Fabric προσφέρει την ευελιξία που προσφέρει στην επιλογή της μεθόδου δημιουργίας διανυσματικού ευρετηρίου:
Μια ακριβής αναζήτηση "επίπεδων" ή k πλησιέστερων γειτόνων (μερικές φορές ονομάζεται ωμή δύναμη) μπορεί να παρέχει 100% ανάκληση ανάκτησης για μικρότερες, εστιασμένες διανυσματικές αναζητήσεις. Ιδιαίτερα όταν συνδυάζονται με φίλτρα ερωτημάτων και κλειδιά διαμερίσματος.
Ένας ποσοτικοποιημένος επίπεδος δείκτης που συμπιέζει διανύσματα χρησιμοποιώντας μεθόδους ποσοτικοποίησης που βασίζονται στο DiskANN για καλύτερη αποδοτικότητα στην αναζήτηση kNN.
Η DiskANN, μια οικογένεια υπερσύγχρονων διανυσματικών αλγορίθμων ευρετηρίου που αναπτύχθηκε από την Microsoft Research για την παροχή αποτελεσματικής, πολλαπλών διανυσματικών αναζητήσεων υψηλής ακρίβειας σε οποιαδήποτε κλίμακα.
Η διανυσματική αναζήτηση στο Cosmos DB μπορεί να συνδυαστεί με όλα τα άλλα υποστηριζόμενα φίλτρα ερωτημάτων NoSQL και ευρετήρια, χρησιμοποιώντας WHERE όρους. Αυτός ο συνδυασμός επιτρέπει στις διανυσματικές αναζητήσεις σας να είναι τα πιο σχετικά δεδομένα για τις εφαρμογές σας.
Αυτή η δυνατότητα βελτιώνει τις βασικές δυνατότητες του Cosmos DB, καθιστώντας το πιο ευέλικτο για τον χειρισμό των απαιτήσεων διανυσματικών δεδομένων και αναζήτησης σε εφαρμογές AI.
Τι είναι ένα διανυσματικό κατάστημα;
Ένας διανυσματικός χώρος αποθήκευσης ή μια διανυσματική βάση δεδομένων είναι μια βάση δεδομένων που έχει σχεδιαστεί για την αποθήκευση και τη διαχείριση διανυσματικών ενσωματώσεων, οι οποίες είναι μαθηματικές αναπαραστάσεις δεδομένων σε έναν χώρο υψηλής διάστασης. Σε αυτόν τον χώρο, κάθε διάσταση αντιστοιχεί σε μια δυνατότητα των δεδομένων και δεκάδες χιλιάδες διαστάσεις μπορούν να χρησιμοποιηθούν για την αναπαράσταση εξελιγμένων δεδομένων. Η θέση ενός διανυσματικού σε αυτόν τον χώρο αντιπροσωπεύει τα χαρακτηριστικά του. Λέξεις, φράσεις ή ολόκληρα έγγραφα και εικόνες, ήχος και άλλοι τύποι δεδομένων μπορούν όλα να διανυσματικά.
Πώς λειτουργεί ένας διανυσματικός χώρος αποθήκευσης;
Σε έναν διανυσματικό χώρο αποθήκευσης, οι αλγόριθμοι διανυσματικής αναζήτησης χρησιμοποιούνται για τη δημιουργία ευρετηρίου και την υποβολή ερωτημάτων για ενσωματώσεις. Ορισμένοι γνωστοί αλγόριθμοι διανυσματικής αναζήτησης περιλαμβάνουν ιεραρχικό navigable μικρό κόσμο (HNSW), ανεστραμμένο αρχείο (IVF), DiskANN, κ.λπ. Η διανυσματική αναζήτηση είναι μια μέθοδος που σας βοηθά να βρείτε παρόμοια στοιχεία με βάση τα χαρακτηριστικά δεδομένων τους αντί για ακριβείς αντιστοιχίσεις σε ένα πεδίο ιδιότητας. Αυτή η τεχνική είναι χρήσιμη σε εφαρμογές όπως η αναζήτηση παρόμοιου κειμένου, η εύρεση σχετικών εικόνων, η πραγματοποίηση προτάσεων ή ακόμα και η ανίχνευση ανωμαλιών. Χρησιμοποιείται για την υποβολή ερωτημάτων σχετικά με τις διανυσματικές ενσωματώσεις των δεδομένων σας που δημιουργήσατε χρησιμοποιώντας ένα μοντέλο εκμάθησης μηχανής χρησιμοποιώντας ένα API ενσωματώσεων. Παραδείγματα των API ενσωμάτωσης είναι οι ενσωματώσεις Azure OpenAI ή οι αγκαλιέςστο Azure. Η διανυσματική αναζήτηση μετρά την απόσταση μεταξύ των διανυσματικών δεδομένων και του διανυσματικού ερωτήματος. Τα διανύσματα δεδομένων που βρίσκονται πιο κοντά στο διάνυσμα ερωτήματος είναι αυτά που βρέθηκαν να είναι πιο παρόμοια σημαδιολογικά.
Στην ενσωματωμένη διανυσματική βάση δεδομένων στο Cosmos DB στο Fabric, οι ενσωματώσεις μπορούν να αποθηκευτούν, να καταχωρηθούν στο ευρετήριο και να υποβληθούν ερωτήματα μαζί με τα αρχικά δεδομένα. Αυτή η προσέγγιση εξαλείφει το επιπλέον κόστος αναπαραγωγής δεδομένων σε μια ξεχωριστή καθαρή διανυσματική βάση δεδομένων. Επιπλέον, αυτή η αρχιτεκτονική διατηρεί μαζί τις ενσωματώσεις διανυσματικών και τα αρχικά δεδομένα, γεγονός που διευκολύνει καλύτερα τις λειτουργίες δεδομένων πολλαπλών τμημάτων και επιτρέπει μεγαλύτερη συνέπεια δεδομένων, κλιμάκωση και επιδόσεις.
Πολιτικές διανυσματικών κοντέινερ
Η εκτέλεση διανυσματικής αναζήτησης με το Cosmos DB στο Fabric απαιτεί να ορίσετε μια πολιτική διανυσματικών για το κοντέινερ. Αυτή η πολιτική παρέχει βασικές πληροφορίες για τη μηχανή βάσης δεδομένων ώστε να διεξάγει αποτελεσματική αναζήτηση ομοιότητας για διανύσματα που βρίσκονται στα έγγραφα του κοντέινερ. Αυτή η ρύθμιση παραμέτρων ενημερώνει επίσης την πολιτική δημιουργίας διανυσματικού ευρετηρίου για τις απαραίτητες πληροφορίες, σε περίπτωση που επιλέξετε να καθορίσετε μία. Οι ακόλουθες πληροφορίες περιλαμβάνονται στην πολιτική διάνυσμα που περιλαμβάνεται:
path: η ιδιότητα που περιέχει το διάνυσμα (απαιτείται).datatype: ο τύπος δεδομένων της ιδιότητας διανυσματικού. Οι υποστηριζόμενοι τύποι είναιfloat32(προεπιλογή),int8καιuint8.dimensions: Η διαστατικότητα ή το μήκος κάθε διανυσματικού στη διαδρομή. Όλα τα διανύσματα σε μια διαδρομή πρέπει να έχουν τον ίδιο αριθμό διαστάσεων. (προεπιλογή1536).distanceFunction: Το μετρικό που χρησιμοποιείται για τον υπολογισμό της απόστασης/ομοιότητας. Τα υποστηριζόμενα μετρικά είναι τα εξής:cosine, η οποία έχει τιμές από $-1$ (τουλάχιστον παρόμοια) έως $+1$ (οι περισσότερες παρόμοιες).dot product, η οποία έχει τιμές από $-\infty$ (τουλάχιστον παρόμοια) έως $+\infty$ (οι πιο παρόμοιες).euclidean, η οποία έχει τιμές από $0$ (οι περισσότερες παρόμοιες) έως $+\infty$ (τουλάχιστον παρόμοιες).
Note
Κάθε μοναδική διαδρομή μπορεί να έχει το πολύ μία πολιτική. Ωστόσο, μπορούν να καθοριστούν πολλές πολιτικές εάν όλες στοχεύουν σε διαφορετική διαδρομή.
Η πολιτική διανυσματικού κοντέινερ μπορεί να περιγραφεί ως αντικείμενα JSON. Ακολουθούν δύο παραδείγματα έγκυρων πολιτικών διανυσματικών κοντέινερ:
Μια πολιτική με μία μόνο διανυσματική διαδρομή
{
"vectorEmbeddings": [
{
"path": "/vector1",
"dataType": "float32",
"distanceFunction": "cosine",
"dimensions": 1536
}
]
}
Μια πολιτική με δύο διανυσματικές διαδρομές
{
"vectorEmbeddings": [
{
"path": "/vector1",
"dataType": "float32",
"distanceFunction": "cosine",
"dimensions": 1536
},
{
"path": "/vector2",
"dataType": "int8",
"distanceFunction": "dotproduct",
"dimensions": 100
}
]
}
Για περισσότερες πληροφορίες και παραδείγματα ρυθμίσεων μιας πολιτικής διανυσματικών κοντέινερ, ανατρέξτε στο θέμα Δείγματα πολιτικής διανυσματικού ευρετηρίου.
Πολιτικές δημιουργίας διανυσματικού ευρετηρίου
Τα διανυσματικά ευρετήρια αυξάνουν την αποτελεσματικότητα κατά την εκτέλεση διανυσματικών αναζητήσεων χρησιμοποιώντας τη VectorDistance λειτουργία συστήματος. Οι αναζητήσεις διανυσματικών έχουν χαμηλότερο λανθάνοντα χρόνο, υψηλότερη ταχύτητα μετάδοσης και λιγότερη κατανάλωση RU κατά τη χρήση διανυσματικού ευρετηρίου. Μπορείτε να καθορίσετε αυτούς τους τύπους πολιτικών διανυσματικού ευρετηρίου:
| Description | Μέγιστες διαστάσεις | |
|---|---|---|
flat |
Αποθηκεύει διανύσματα στο ίδιο ευρετήριο με άλλες ιδιότητες ευρετηρίου. | 505 |
quantizedFlat |
Ποσοτικοποιεί (συμπιέζει) τα διανύσματα πριν από την αποθήκευση στο ευρετήριο. Αυτή η πολιτική μπορεί να βελτιώσει τον λανθάνοντα χρόνο και την ταχύτητα μετάδοσης με κόστος μια μικρή ποσότητα ακρίβειας. | 4096 |
diskANN |
Δημιουργεί ένα ευρετήριο που βασίζεται στο DiskANN για γρήγορη και αποτελεσματική κατά προσέγγιση αναζήτηση. | 4096 |
Note
Το quantizedFlat ευρετήριο και diskANN απαιτεί την εισαγωγή τουλάχιστον 1.000 διανυσμάτων . Το ελάχιστο αυτό είναι η εξασφάλιση της ακρίβειας της διαδικασίας ποσοτικοποίησης. Εάν υπάρχουν λιγότερα από 1.000 διανύσματα, εκτελείται μια πλήρης σάρωση και οδηγεί σε υψηλότερες χρεώσεις RU για ένα ερώτημα διανυσματικής αναζήτησης.
Μερικά σημεία που πρέπει να λάβετε υπόψη:
Οι
flatτύποι ευρετηρίου καιquantizedFlatχρησιμοποιούν το ευρετήριο του Cosmos DB για την αποθήκευση και την ανάγνωση κάθε διανυσματικού στοιχείου κατά τη διάρκεια μιας διανυσματικής αναζήτησης. Οι διανυσματικές αναζητήσεις με ευρετήριοflatείναι αναζητήσεις ωμής δύναμης και παράγουν 100% ακρίβεια ή ανάκληση. Αυτό σημαίνει ότι είναι εγγυημένο ότι θα βρουν τα πιο παρόμοια διανύσματα στο σύνολο δεδομένων. Ωστόσο, υπάρχει ένας περιορισμός των505διαστάσεων για τα διανύσματα σε έναν επίπεδο δείκτη.Ο
quantizedFlatδείκτης αποθηκεύει ποσοτικά (συμπιεσμένα) διανύσματα στο ευρετήριο. Οι διανυσματικές αναζητήσεις μεquantizedFlatευρετήριο είναι επίσης αναζητήσεις ωμής δύναμης, ωστόσο η ακρίβειά τους μπορεί να είναι ελαφρώς μικρότερη από 100% δεδομένου ότι τα διανύσματα ποσοτικοποιούνται πριν από την προσθήκη στο ευρετήριο. Ωστόσο, οι διανυσματικές αναζητήσεις μεquantized flatθα πρέπει να έχουν χαμηλότερο λανθάνοντα χρόνου, υψηλότερη ταχύτητα μετάδοσης και χαμηλότερο κόστος RU από τις διανυσματικές αναζητήσεις σε έναflatευρετήριο. Αυτό το ευρετήριο είναι μια καλή επιλογή για μικρότερα σενάρια ή σενάρια όπου χρησιμοποιείτε φίλτρα ερωτημάτων για να περιορίσετε τη διανυσματική αναζήτηση σε ένα σχετικά μικρό σύνολο διανυσματικών.quantizedFlatΣυνιστάται όταν ο αριθμός των διανυσματικών προς ευρετηριοποίηση είναι περίπου 50.000 ή λιγότερος ανά φυσικό διαμέρισμα. Ωστόσο, αυτή η πρόταση αποτελεί απλώς μια γενική κατευθυντήρια γραμμή και οι πραγματικές επιδόσεις θα πρέπει να ελέγχονται καθώς κάθε σενάριο μπορεί να διαφέρει.Το
diskANNευρετήριο είναι ένα ξεχωριστό ευρετήριο που ορίζεται ειδικά για διανύσματα χρησιμοποιώντας το DiskANN, μια σουίτα αλγορίθμων ευρετηρίασης διανυσμάτων υψηλής απόδοσης που αναπτύχθηκε από τη Microsoft Research. Οι δείκτες DiskANN μπορούν να προσφέρουν ορισμένα από τα ερωτήματα με τον μικρότερο λανθάνοντα χρόνο, την υψηλότερη ταχύτητα μετάδοσης και τα χαμηλότερα ερωτήματα κόστους RU, διατηρώντας παράλληλα υψηλή ακρίβεια. Σε γενικές γραμμές, η DiskANN είναι η πιο αποδοτική από όλους τους τύπους ευρετηρίου εάν υπάρχουν περισσότερα από 50.000 διανύσματα ανά φυσικό διαμέρισμα.
Ακολουθούν παραδείγματα έγκυρων πολιτικών διανυσματικού ευρετηρίου:
{
"indexingMode": "consistent",
"automatic": true,
"includedPaths": [
{
"path": "/*"
}
],
"excludedPaths": [
{
"path": "/_etag/?"
},
{
"path": "/vector1/*"
}
],
"vectorIndexes": [
{
"path": "/vector1",
"type": "diskANN"
}
]
}
{
"indexingMode": "consistent",
"automatic": true,
"includedPaths": [
{
"path": "/*"
}
],
"excludedPaths": [
{
"path": "/_etag/?"
},
{
"path": "/vector1/*",
},
{
"path": "/vector2/*",
}
],
"vectorIndexes": [
{
"path": "/vector1",
"type": "quantizedFlat"
},
{
"path": "/vector2",
"type": "diskANN"
}
]
}
Important
Η διανυσματική διαδρομή που προστέθηκε στην excludedPaths ενότητα της πολιτικής δημιουργίας ευρετηρίου για να εξασφαλιστεί βελτιστοποιημένη απόδοση για εισαγωγή. Η μη προσθήκη της διανυσματικής διαδρομής για να excludedPaths οδηγήσει σε υψηλότερη χρέωση μονάδας αίτησης και λανθάνοντα χρόνου για διανυσματικές εισαγωγές.
Important
Οι χαρακτήρες μπαλαντέρ (*, []) δεν υποστηρίζονται προς το παρόν στην πολιτική διανυσματικού ή στο διανυσματικό ευρετήριο.
Εκτέλεση διανυσματικής αναζήτησης με ερωτήματα με χρήση VECTORDISTANCE
Αφού δημιουργήσετε ένα κοντέινερ με την επιθυμητή πολιτική διανυσματικού και εισαγάγετε διανυσματικά δεδομένα στο κοντέινερ, μπορείτε να πραγματοποιήσετε μια διανυσματική αναζήτηση χρησιμοποιώντας την ενσωματωμένη VECTORDISTANCE συνάρτηση σε ένα ερώτημα. Ένα παράδειγμα ενός ερωτήματος NoSQL που προβάλλει τη βαθμολογία ομοιότητας με το ψευδώνυμο scoreκαι ταξινομεί με τη σειρά των πιο παρόμοιων με τα λιγότερο παρόμοια:
SELECT TOP 10
c.title,
VECTORDISTANCE(c.contentVector, [1,2,3]) AS score
FROM
container c
ORDER BY
VECTORDISTANCE(c.contentVector, [1,2,3])
Important
Να χρησιμοποιείτε πάντα έναν TOP N όρο στην SELECT πρόταση ενός ερωτήματος. Διαφορετικά, η διανυσματική αναζήτηση προσπαθεί να επιστρέψει πολλά περισσότερα αποτελέσματα με αποτέλεσμα το ερώτημα να κοστίζει περισσότερες μονάδες αίτησης (RUs) και να έχει υψηλότερο λανθάνοντα χρόνου από ό,τι είναι απαραίτητο.