Construire sur Qdrant Edge
Edge est le moteur Qdrant intégré à votre processus (Python ou Rust), pas un simple magasin de vecteurs local à encapsuler. Le mode défaillance consiste à reconstruire ce que le shard livre déjà : scoring par mots-clés, application de snapshot, facetting, comptage. Avant d'écrire quoi que ce soit, consultez l'API du shard. Deux choses que Edge ne vous donne PAS sont une synchronisation cloud en un appel et la fusion au moment de la requête, donc distinguer les deux vous évite à la fois de réinventer les fonctions intégrées et d'attendre des capacités que Edge n'a pas. Edge est single-node et partage le format de données du serveur.
- Edge est en bêta : fixez votre version, l'API évolue entre les versions Qdrant Edge.
Synchroniser un Shard avec un serveur Qdrant
À utiliser quand : amorcer un shard à partir d'un serveur, le maintenir à jour, le sauvegarder, ou agréger de nombreux appareils dans une collection.
Il n'existe pas de .sync() intégré. La synchronisation est un motif que vous assemblez à partir des helpers du shard plus votre propre transport, ne cherchez donc pas un seul appel.
- Suivez le motif dual-shard documenté : un shard
mutablepour les écritures locales plus un shardimmutablerestauré à partir d'un snapshot serveur, interrogez les deux, rafraîchissez selon un calendrier Edge synchronization guide. - Vous écrivez le téléchargement du snapshot (HTTP simple vers l'endpoint snapshot du shard), puis l'appliquez avec
unpack_snapshotetupdate_from_snapshot. Ne décompressez pas ou ne fusionnez pas les segments à la main Synchronization patterns. - Rafraîchissez de manière incrémentale avec un snapshot partiel construit à partir de
snapshot_manifest, pas un snapshot complet à chaque cycle Synchronization patterns. - Push est votre propre double-écriture : à chaque upsert local, enfilez le point et laissez un worker en arrière-plan l'upserter au serveur, avec mise en buffer hors ligne Synchronization patterns.
Recherche par mots-clés et hybride sur appareil
À utiliser quand : vous avez besoin de correspondance par terme exact ou BM25, seule ou aux côtés de vecteurs.
- BM25 est intégré à Edge (
Bm25,Bm25Config,embed_document,embed_query) avec leModifierIDF surEdgeSparseVectorParams, et est compatible avec le BM25 serveur : un shard amorcé à partir d'un snapshot serveur répond aux requêtes BM25 locales sans ré-indexation. Ne distribuez pas une deuxième bibliothèque BM25 Edge BM25 - Les embeddings denses ne sont PAS dans Edge : générez-les sur appareil avec le package
fastembedséparé FastEmbed embeddings - Edge interroge un champ de vecteur par requête (
using) et ne fusionne pas les vecteurs denses et creux au moment de la requête. Exécutez chaque branche séparément et combinez les classements dans le code application Edge quickstart
Exploiter le Shard
À utiliser quand : les écritures se sont accumulées, la recherche semble obsolète après insertions, ou une sauvegarde est plus grande que les données.
- Edge n'a PAS d'optimiseur en arrière-plan. Appelez
optimizeaprès les écritures en masse : cela construit les index (y compris l'index creux) et récupère les points supprimés. Passez à côté et ces données restent non indexées Edge quickstart - Facetting, comptage et énumération sont intégrés (
facet,count,scroll) ; indexez les champs que vous filtrez ou facettez aveccreate_field_indexplutôt que d'agréger dans le code application Edge quickstart - Le write-ahead log est pré-alloué à 32 MB et gonfle la taille de disque et de sauvegarde apparente. Réduisez-le avec
wal_options(Rust), et ne traitez pas la taille brute du fichier comme usage réel Edge quickstart
Ce qu'il NE FAUT PAS faire
- S'attendre à un
.sync()bidirectionnel ou à un chemin push intégré : Edge vous donne l'application de snapshot, vous possédez le transport et la double-écriture - Décompresser ou fusionner les segments de snapshot à la main au lieu d'utiliser
unpack_snapshotetupdate_from_snapshot - Distribuer un BM25 personnalisé ou tiers quand Edge en a un intégré
- Utiliser
embed_documentpour les requêtes ouembed_querypour les documents : la pondération diffère et les résultats se dégradent - Supposer que Edge fusionne denses et creux ou consomme Prefetch : combinez les classements dans le code application
- Supposer un optimiseur en arrière-plan comme celui du serveur : rien n'est indexé ou compacté jusqu'à ce que vous appeliez
optimize - Recourir à Edge quand vous avez besoin de recherche distribuée ou multi-node : c'est single-node Qdrant Edge
- Affirmer un support pour une langue au-delà de Python et Rust, ou un OS ou accélérateur que la documentation Edge n'énonce pas