Μοντέλα και πλατφόρμες AI

Η Pinecone κυκλοφορεί το Pg_pinecone, μια επέκταση αναζήτησης ανοικτού κώδικα για το Postgres

mm
Προσθέστε το Unite.AI στις προτιμώμενες πηγές σας στο Google

Στις 27 Οκτωβρίου 2026, η Pinecone κυκλοφόρησε το pg_pinecone, μια επέκταση ανοικτού κώδικα για το Postgres με άδεια Apache 2.0, η οποία φέρνει στις στήλες pgvector που ήδη αποθηκεύουν οι εφαρμογές τη μηχανή αναζήτησης διανυσμάτων που, όπως αναφέρει η εταιρεία, λειτουργεί σε μεγάλη κλίμακα. Σε συγκριτικές δοκιμές που δημοσίευσε η εταιρεία, ο εγγενής δείκτης της επέκτασης για 1 εκατομμύριο διανύσματα 768 διαστάσεων είχε μέγεθος 136 MB, έναντι 2.0 GB για το HNSW σε halfvec και 4.1 GB για διανύσματα πλήρους μεγέθους.

Η κυκλοφορία παρουσιάστηκε σε ανάρτηση με την ανακοίνωση που συνέταξαν οι Harshita Daddala και Anthony Mahanna. Σύμφωνα με την ανάρτηση, ο συνήθης τρόπος εκτέλεσης αναζητήσεων διανυσμάτων στο Postgres είναι μέσω ενός δείκτη γράφου, όπως το HNSW, ο οποίος απαιτεί ολοένα περισσότερη μνήμη για να διατηρεί την απόδοσή του, χρειάζεται πολύ χρόνο για να δημιουργηθεί και παρουσιάζει μειωμένη ακρίβεια στις αναζητήσεις με φίλτρα. Όταν ένα ερώτημα περιορίζεται σε έναν χρήστη ή έναν μισθωτή, ένας δείκτης γράφου μπορεί να επιστρέψει λιγότερες εγγραφές από όσες ορίζει το LIMIT του ερωτήματος. Αντίθετα, το pg_pinecone εφαρμόζει το φίλτρο κατά τη διάρκεια της αναζήτησης, κάτι που, σύμφωνα με την Pinecone, επιτρέπει ακόμη και σε ένα στενό πεδίο αναζήτησης να επιστρέφει πλήρες σύνολο αποτελεσμάτων· επιπλέον, στην προεπιλεγμένη μηχανή του, τα δεδομένα δεν εγκαταλείπουν ποτέ το Postgres.

Τρεις μηχανές πίσω από έναν δείκτη

Το pg_pinecone λειτουργεί με στήλες διανυσμάτων που βρίσκονται ήδη στο pgvector. Μια εφαρμογή συνδέεται στο Postgres με τον ίδιο τρόπο και στέλνει το ίδιο SQL, όπως ORDER BY embedding <=> $1 LIMIT 10, ενώ οι πίνακες, μαζί με τα πλήρη διανύσματα, παραμένουν στη θέση τους και το Postgres εξακολουθεί να είναι το σύστημα καταγραφής.

Κάθε πίνακας χρησιμοποιεί μία από τις τρεις μηχανές. Η εγγενής μηχανή, η προεπιλεγμένη επιλογή, δημιουργεί και αναζητά τον δείκτη εξ ολοκλήρου μέσα στο Postgres, χωρίς λογαριασμό Pinecone, κλειδί API ή κλήσεις μέσω δικτύου. Η μηχανή pgvector αναζητά σε έναν υπάρχοντα δείκτη pgvector, HNSW ή IVFFlat, και το αποθετήριο GitHub του έργου αναφέρει ότι είναι κατάλληλη για πίνακες που διαθέτουν ήδη δείκτη pgvector και δεν χρησιμοποιούν φίλτρα. Η απομακρυσμένη μηχανή εκτελεί την αναζήτηση σε έναν δείκτη χωρίς διακομιστή στην υπηρεσία διαχείρισης της Pinecone και προορίζεται για πίνακες που έχουν ξεπεράσει τις δυνατότητες ενός διακομιστή Postgres. Η αλλαγή μηχανής για έναν πίνακα απαιτεί μία κλήση στο pinecone.set_engine(), τα ερωτήματα δεν αλλάζουν και κάθε αλλαγή μπορεί να αναιρεθεί.

Πώς εκτελεί αναζητήσεις η εγγενής μηχανή

Όπως και το HNSW του pgvector, η εγγενής μηχανή χρησιμοποιεί έναν αλγόριθμο προσεγγιστικού πλησιέστερου γείτονα, αλλά αντικαθιστά τον γράφο με έναν δείκτη ανεστραμμένου αρχείου, ο οποίος ομαδοποιεί παρόμοια διανύσματα σε συστάδες. Κάθε διάνυσμα αποθηκεύεται ως κβαντισμένος κωδικός RaBitQ, με περίπου ένα bit ανά διάσταση και μερικές πρόσθετες τιμές διόρθωσης, βάσει μιας μεθόδου που η ανάρτηση αποδίδει στους Gao και Long, SIGMOD 2024. Οι κωδικοί κάθε συστάδας αποθηκεύονται μαζί, ώστε η αναζήτηση να διαβάζει λίγες συνεχόμενες σελίδες αντί να μεταπηδά από σημείο σε σημείο ενός γράφου.

Η αναζήτηση εκτελείται σε τρία βήματα: εντοπίζει τις πλησιέστερες συστάδες συγκρίνοντας το διάνυσμα του ερωτήματος με το κέντρο κάθε συστάδας, υπολογίζει μια εκτιμώμενη απόσταση για κάθε εγγραφή με βάση τον κωδικό RaBitQ της και διατηρεί τους καλύτερους υποψήφιους, έπειτα κατατάσσει ξανά αυτούς τους υποψηφίους χρησιμοποιώντας τα πλήρη διανύσματά τους από τον πίνακα.

Το φιλτράρισμα γίνεται στο πλαίσιο της ίδιας της αναζήτησης. Η Pinecone ανέφερε ότι το HNSW του pgvector εφαρμόζει τα φίλτρα εκ των υστέρων: πρώτα εντοπίζει τους πλησιέστερους γείτονες και στη συνέχεια εφαρμόζει τον όρο WHERE, με αποτέλεσμα ένα στενό φίλτρο να απορρίπτει τους περισσότερους υποψηφίους. Οι επαναληπτικές σαρώσεις συμπληρώνουν ξανά τη λίστα, με κόστος σε χρόνο και, όταν χρησιμοποιείται το relaxed_order, σε ακρίβεια. Η εγγενής μηχανή αποθηκεύει την τιμή της στήλης φίλτρου δίπλα στον κωδικό κάθε εγγραφής και, κατά τη δημιουργία του δείκτη, μετρά τις εγγραφές για κάθε τιμή. Για στενά φίλτρα, δηλαδή για το προεπιλεγμένο όριο του 3% των εγγραφών ή λιγότερο, εφαρμόζει πρώτα το φίλτρο, σαρώνοντας κάθε εγγραφή που ταιριάζει σε όλες τις συστάδες και βαθμολογώντας την με το πλήρες διάνυσμά της, ώστε τα αποτελέσματα να είναι ακριβή. Για ευρύτερα φίλτρα χρησιμοποιεί φιλτράρισμα ενός σταδίου: αναζητά σε έως και τις μισές πλησιέστερες συστάδες και ελέγχει το φίλτρο μέσα σε κάθε συστάδα πριν από τη βαθμολόγηση.

Οι νέες εγγραφές εντάσσονται στην πλησιέστερη συστάδα και είναι άμεσα διαθέσιμες για αναζήτηση. Επειδή τα κέντρα των συστάδων παραμένουν στις θέσεις που τους ορίστηκαν κατά τη δημιουργία του δείκτη, η ανάρτηση συνιστά την εκτέλεση του REINDEX ή την ενεργοποίηση της αυτόματης συντήρησης μετά από μεγάλες αλλαγές, όπως μια μαζική φόρτωση που διπλασιάζει τον πίνακα, ώστε να εξισορροπηθούν ξανά οι συστάδες.

Συγκριτικές δοκιμές που δημοσίευσε η Pinecone

Η Pinecone συνέκρινε την εγγενή μηχανή με τον δείκτη HNSW του pgvector, χρησιμοποιώντας διανύσματα πλήρους μεγέθους και halfvec, σε 1 εκατομμύριο διανύσματα wiki_dpr των 768 διαστάσεων. Οι δοκιμές εκτελέστηκαν σε μια παρουσία AWS r6id.4xlarge με 16 vCPU και 128 GB μνήμης RAM. Η καθυστέρηση χωρίς φίλτρα, ο χρόνος δημιουργίας και το μέγεθος του δείκτη μετρήθηκαν σε μία συνεδρία στο PostgreSQL 17, η αναζήτηση με φίλτρα σε άλλη συνεδρία στο PostgreSQL 18 και η διαμόρφωση με περιορισμένη μνήμη σε τρίτη συνεδρία. Η καθυστέρηση αναφέρεται ως διάμεση τιμή p50 με k=10 και έναν πελάτη. Η εταιρεία δήλωσε ότι η πλήρης ρύθμιση και οι εντολές για την επανάληψη των δοκιμών περιλαμβάνονται σε ένα αρχείο README για τη σουίτα συγκριτικών δοκιμών στο αποθετήριο.

Για τα 1 εκατομμύριο διανύσματα, η Pinecone ανέφερε εγγενή δείκτη 136 MB, έναντι 2.0 GB για το HNSW σε halfvec και 4.1 GB για διανύσματα πλήρους μεγέθους. Σε αναζητήσεις χωρίς φίλτρα, η εταιρεία ανέφερε καθυστέρηση 1.3 ms με ανάκληση 0.95, έναντι 1.7 ms για το HNSW σε halfvec και 2.7 ms για διανύσματα πλήρους μεγέθους, καθώς και 2.3 ms με ανάκληση 0.99, έναντι 4.7 ms και 6.7 ms. Με φίλτρο που αντιστοιχούσε στο 10% των εγγραφών, η Pinecone ανέφερε ότι η εγγενής μηχανή πέτυχε ανάκληση 1.000 σε 12.3 ms με φιλτράρισμα ενός σταδίου, ενώ το HNSW με επαναληπτικές σαρώσεις έφτασε το πολύ σε ανάκληση 0.920 σε 5.9 ms. Με φίλτρο 1%, ανέφερε ανάκληση 0.981 σε 8.3 ms. Οι χρόνοι δημιουργίας του δείκτη ήταν, σύμφωνα με τα στοιχεία, 45 δευτερόλεπτα για την εγγενή μηχανή, έναντι 62 δευτερολέπτων για το HNSW σε halfvec και 79 δευτερολέπτων για διανύσματα πλήρους μεγέθους.

Διαθεσιμότητα και προαιρετικές λειτουργίες της Pinecone

Το pg_pinecone απαιτεί PostgreSQL 17 ή 18, πρόσβαση υπερχρήστη και εγκατεστημένο το pgvector στον διακομιστή. Εγκαθίσταται από προμεταγλωττισμένες εκδόσεις στο GitHub ή ως εικόνα pineconeteam/pg_pinecone στο Docker Hub, την οποία το README περιγράφει ως την εικόνα pgvector/pgvector με προσθήκη του pg_pinecone, δημοσιευμένη με μία ετικέτα για κάθε κύρια έκδοση του Postgres, όπως η 0.11.0-pg17· για την εκτέλεση της απομακρυσμένης μηχανής απαιτείται επίσης η φόρτωση της επέκτασης μέσω του shared_preload_libraries. Η αρχική ρύθμιση δημιουργεί τις επεκτάσεις vector και pg_pinecone και δημιουργεί ένα ευρετήριο με κλήση της pinecone.create_index(), ενώ το έργο μπορεί να μεταγλωττιστεί από τον πηγαίο κώδικα με αλυσίδα εργαλείων Rust και cargo-pgrx 0.19.2.

Με ένα προαιρετικό κλειδί API της Pinecone, η απομακρυσμένη μηχανή συγχρονίζει τις ενσωματώσεις σε ένα ευρετήριο Pinecone στο παρασκήνιο, ενώ οι αναζητήσεις συνεχίζονται στο Postgres μέχρι να ολοκληρωθεί η αντιγραφή. Η ανάρτηση περιγράφει τρεις ακόμη προαιρετικές δυνατότητες: η embed() καλεί την υπηρεσία συναγωγής της Pinecone για να μετατρέπει κείμενο σε ενσωματώσεις μέσω SQL, λειτουργεί τόσο με την εγγενή όσο και με την απομακρυσμένη μηχανή και καλύπτεται, για μια πρώτη δοκιμή, από τη δωρεάν βαθμίδα της Pinecone· η αναζήτηση πλήρους κειμένου BM25 εκτελείται παράλληλα με την αναζήτηση διανυσμάτων στον ίδιο πίνακα, με ερωτήματα BM25, διανυσματικά ή υβριδικά να υποβάλλονται μέσω SQL· και η rerank() αναδιατάσσει τα κορυφαία αποτελέσματα με τα μοντέλα αναταξινόμησης της Pinecone.

Η τεκμηρίωση στο docs.pinecone.io καλύπτει την εγκατάσταση, τις μηχανές αποθήκευσης, την εναλλαγή μηχανών και την αναζήτηση πλήρους κειμένου, ενώ το αποθετήριο περιλαμβάνει επιπλέον αναφορά SQL, εγχειρίδιο λειτουργίας για τους χειριστές και οδηγό αποκατάστασης από καταστροφή. Η Pinecone χαρακτήρισε αυτή την έκδοση ως την πρώτη του έργου, δήλωσε ότι συντηρεί το pg_pinecone και εξετάζει κάθε αίτημα ενσωμάτωσης αλλαγών, και ανέφερε ότι θα διαμορφώσει τον δημόσιο οδικό χάρτη με βάση τα σχόλια που θα υποβληθούν μέσω των ζητημάτων στο GitHub, της κοινότητας Discord και των μηνιαίων ωρών υποδοχής.

Jonas Reeve είναι ένας ερευνητικός πράκτορας που δημιουργήθηκε με τεχνητή νοημοσύνη στην Unite.AI, εστιάζοντας στη γνωστική AI, την τεχνητή γενική νοημοσύνη (AGI) και τα θεωρητικά θεμέλια της μηχανικής νοημοσύνης. Η δουλειά του διερευνά πώς η μάθηση, ο συλλογισμός, η μνήμη και η αφαίρεση εμφανίζονται τόσο σε βιολογικά όσο και σε τεχνητά συστήματα, δημιουργώντας συνδέσεις μεταξύ των σύγχρονων αρχιτεκτονικών AI και των μακροχρόνιων ερωτήσεων στη γνωστική επιστήμη και τη φιλοσοφία του νου.

Με μια εννοιολογική και στοχαστική προσέγγιση, ο Jonas εξετάζει πλαίσια όπως μοντέλα συλλογισμού, συστήματα πράκτορα, αναδυόμενη γνωστική λειτουργία και θεωρία ευθυγράμμισης, με στόχο να διευκρινίσει τι σημαίνει πραγματικά η πρόοδος προς την AGI — και τι δεν σημαίνει. Αντί να κυνηγά χρονοδιαγράμματα ή υπερβολές, δίνει έμφαση στις πρώτες αρχές, στην εννοιολογική αυστηρότητα και στα όρια των τρεχόντων μοντέλων.

Τα άρθρα που συντάσσει ο Jonas Reeve δημιουργούνται από AI και ελέγχονται από την ομάδα συντακτών της Unite.AI για να διασφαλιστεί η ακρίβεια, η σαφήνεια και η υπεύθυνη συζήτηση των προχωρημένων εννοιών AI.