hermes-memory-pgvector est le plugin open source qui offre à une flotte d’agents hermes-agent une mémoire partagée et durable sur PostgreSQL et pgvector. La version 0.5.3 est disponible sur PyPI, et elle supprime la dernière hypothèse codée en dur dans le plugin : quel modèle d’intégration transforme vos mémoires en vecteurs recherchables.
Pourquoi cette version existe
Jusqu’à présent, le modèle d’intégration était en pratique figé. Le plugin vérifiait chaque vecteur par rapport à une valeur littérale de 768 dimensions, la taille du modèle par défaut nomic-embed-text, et il n’avait aucun moyen d’envoyer une clé API, si bien que les services d’intégration hébergés étaient hors de portée.
Cela est devenu une vraie limite pour notre propre déploiement. Nous avons déplacé la base de données de mémoire vers text-embedding-3-small d’OpenAI, servi via OpenRouter, parce qu’un point de terminaison hébergé est toujours chaud tandis qu’un modèle auto-hébergé peut mettre plusieurs secondes à se réveiller. Les colonnes de la base de données sont passées à 1536 dimensions, et le plugin n’avait aucun paramètre capable de suivre. La v0.5.3 ajoute ces paramètres.
Trois nouveaux paramètres
embed_dimest la longueur du vecteur renvoyée par votre modèle. La valeur par défaut est768, donc les configurations existantes ne sont pas affectées. Chaque intégration est toujours vérifiée, désormais par rapport à cette valeur, de sorte qu’une incompatibilité échoue rapidement au lieu d’atteindre la base de données.embed_api_key_envest le nom d’une variable d’environnement qui contient un jeton bearer, commeOPENROUTER_API_KEY. La clé ne figure jamais dans le fichier de configuration ; elle est lue au moment de l’appel et n’est jamais journalisée.embed_protocolestopenai,ollamaouauto. La valeur par défaut,auto, essaie le chemin compatible OpenAI puis revient à l’API native d’Ollama. Choisiropenaipour un service hébergé signifie qu’une erreur d’authentification ou de modèle est signalée telle quelle, au lieu d’être masquée derrière un 404 issu du repli.
Voici maintenant à quoi ressemble le fait de pointer le plugin vers text-embedding-3-small via OpenRouter :
plugins:
pgvector:
embed_url: "https://openrouter.ai/api"
embed_model: "openai/text-embedding-3-small"
embed_dim: 1536
embed_api_key_env: "OPENROUTER_API_KEY"
embed_protocol: "openai"
Deux correctifs importants même si vous ne changez rien
- Intégrations sous le chargeur de plugins hermes-agent. Après le chargement du plugin, le chargeur de l’hôte rattache chaque sous-module au package, y compris un module nommé
embed. Cela remplaçait la fonction appelée par le plugin, si bien que l’intégration échouait avecTypeError: 'module' object is not callableet que les écritures de mémoire étaient abandonnées au lieu d’être stockées sous forme de texte. Le plugin appelle désormais un alias privé que le chargeur ne touche jamais. - Points de terminaison lents. Un serveur qui acceptait la connexion mais répondait après le délai d’attente levait un simple
TimeoutError, qui passait à travers la gestion d’erreurs du plugin : pas de repli, pas de nouvelles tentatives, et une écriture perdue. C’est désormais traité comme toute autre défaillance de point de terminaison.
Mise à niveau
Les valeurs par défaut n’ont pas changé : 768 dimensions, aucun en-tête d’authentification, le protocole auto, et aucune nouvelle migration de base de données. Mettez à niveau avec :
pip install -U hermes-memory-pgvector
Passer à un modèle avec une taille de vecteur différente est une migration de base de données, pas seulement une modification de configuration, car les vecteurs de deux modèles différents ne sont pas comparables. Le README explique la procédure : changez le type de colonne, ré-encodez les lignes existantes avec hermes-pgvector backfill, puis reconstruisez les index HNSW.
La source et la référence complète de configuration sont sur GitHub :
