1 juillet 2026

hermes-memory-pgvector v0.4.1 : l’arrivée de la recherche hybride par vecteur + texte intégral

Par Andrea Borghi
hermes-memory-pgvector v0.4.1 : l’arrivée de la recherche hybride par vecteur + texte intégral

Six semaines après la sortie de v0.4.0 avec la gouvernance d’identité et l’attribution à l’agent, hermes-memory-pgvector v0.4.1 est disponible — et il corrige la seule classe d’échec de rappel que la recherche vectorielle pure ne peut pas résoudre à elle seule.

Le manque laissé par la recherche vectorielle pure

La similarité cosinus sur les embeddings est très efficace pour le « sens proche », et discrètement mauvaise sur deux points : les correspondances lexicales exactes (un code d’erreur, un nom d’hôte, une chaîne littérale qu’un membre de l’équipe a tapée mot pour mot) et toute ligne écrite avant qu’un backfill d’embeddings ne la rattrape — une ligne sans embedding est invisible pour une requête vectorielle, quelle que soit sa pertinence.

Reciprocal Rank Fusion, pas un simple rerank bricolé

v0.4.1 ajoute hybrid_search() et hybrid_search_turns(), qui exécutent en parallèle la requête cosinus HNSW existante et une requête PostgreSQL en texte intégral sur les mêmes lignes, puis fusionnent les deux classements avec Reciprocal Rank Fusion (k=60) — une fusion fondée sur le rang qui évite d’avoir à normaliser deux scores de similarité incompatibles. Un index GIN sur to_tsvector('english', content) (migration 003_hybrid_search_fts.sql) maintient rapide, à l’échelle de la table, le versant lexical de cette architecture.

Les lignes avec un embedding nul — celles qu’une requête vectorielle pure ignorerait silencieusement — apparaissent désormais via le versant texte intégral de la fusion au lieu de disparaître.

Activé par défaut, désactivable à chaque appel

plugins.pgvector.hybrid_search est défini par défaut sur true. Rien ne change pour les données ou le comportement existants de v0.3.x/v0.4.0 ; la fusion ne s’active que sur les nouveaux appels de rappel, et elle se dégrade gracieusement en mode vectoriel uniquement si l’index texte intégral n’est pas présent. Aucun service de recherche cloud externe requis — c’est Postgres, qui fait une chose de plus et la fait bien.

Obtenez-le

pip install hermes-memory-pgvector

Source, migration et configuration sur GitHub :

👉 github.com/andreab67/hermes-memory-pgvector