Seis semanas después de que v0.4.0 incorporara la gobernanza de identidad y la atribución de agentes, ya está aquí hermes-memory-pgvector v0.4.1 — y corrige la única clase de fallo de recuperación que la búsqueda vectorial pura no puede resolver por sí sola.
El vacío que deja la búsqueda vectorial pura
La similitud coseno sobre embeddings es muy buena para el "significado similar" y, discretamente, mala en dos cosas: las coincidencias léxicas exactas (un código de error, un nombre de host, una cadena literal que un compañero escribió tal cual) y cualquier fila que se escribió antes de que un backfill de embeddings la alcanzara — una fila con embedding nulo es invisible para una consulta solo vectorial por muy relevante que sea.
Reciprocal Rank Fusion, no un truco de reranking
v0.4.1 añade hybrid_search() y hybrid_search_turns(), que ejecutan en paralelo la consulta coseno HNSW existente y una consulta de texto completo de PostgreSQL sobre las mismas filas y fusionan ambas clasificaciones con Reciprocal Rank Fusion (k=60) — una combinación basada en rangos que evita normalizar dos puntuaciones de similitud incompatibles. Un índice GIN sobre to_tsvector('english', content) (migración 003_hybrid_search_fts.sql) mantiene rápida la parte léxica de esa arquitectura a escala de tabla.
Las filas con un embedding nulo — las que una consulta vectorial pura omitiría en silencio — ahora aparecen a través de la parte de texto completo de la fusión en lugar de desaparecer.
Activado por defecto, desactívalo por llamada
plugins.pgvector.hybrid_search tiene el valor predeterminado true. Nada de los datos o del comportamiento existentes de v0.3.x/v0.4.0 cambia; la fusión solo se activa en las nuevas llamadas de recuperación y se degrada con elegancia a solo vectorial si el índice de texto completo no está presente. No se requiere ningún servicio externo de búsqueda en la nube — es Postgres, haciendo una cosa más bien.
Consíguelo
pip install hermes-memory-pgvector
Código fuente, migración y configuración en GitHub:

