Skip to main content

EverAlgo rank: 4 business-facing rankers (episodic / profile / case / skill) over a shared fusion / weight / rerank toolkit.

Project description

everalgo-rank

Memory ranking for EverAlgo — four business-facing ranker classes (EpisodicRanker / CaseRanker / SkillRanker / profile rank) composed over a shared toolkit (fusion / weight / rerank). Pure in-memory rank, no storage I/O.

See the umbrella project: EverAlgo monorepo and the architecture document at docs/concepts/architecture.md.

Install

pip install everalgo-rank

What this distribution provides

Symbol Role
EpisodicRanker Class facade — episodic memory ranking; LLM bound at construction
CaseRanker Class facade — agent case ranking; LLM bound at construction
SkillRanker Class facade — agent skill ranking; LLM bound at construction
profile.rank Module-level sync function — profile ranking; cosine sort + dedup, no LLM
RankConfig Frozen pydantic config: fusion_mode, rrf_k, alpha, etc.
FusionMode Literal type: "rrf" / "lr" / "vector_anchored"
DEFAULT_RANK_CONFIG RankConfig() with defaults (fusion_mode="rrf", rrf_k=60)
arank / rank Top-level async / sync dispatch — routes to the registered ranker by RankInput.memory_type
arerank / rerank Low-level LLM rerank step; used by the ranker facades internally

Quick start

import asyncio
import json

from everalgo.llm.types import ChatResponse
from everalgo.rank import EpisodicRanker, DEFAULT_RANK_CONFIG
from everalgo.testing.fake_llm import FakeLLMClient
from everalgo.types import Candidate, RankInput

_RERANK_JSON = json.dumps({"ranked": [{"id": "ep_a", "score": 0.95}]})

async def main() -> None:
    fake = FakeLLMClient(responses=[ChatResponse(content=_RERANK_JSON, model="fake")])
    ranker = EpisodicRanker(llm=fake)

    rank_input = RankInput(
        query="Python async retry patterns",
        memory_type="episodic",
        dense_candidates=[
            Candidate(id="ep_a", score=0.9, metadata={"episode": "Alice asked about async retries."}),
            Candidate(id="ep_b", score=0.5, metadata={"episode": "Team discussed lunch."}),
        ],
        top_k=1,
    )

    output = await ranker.arank(rank_input, config=DEFAULT_RANK_CONFIG, enable_rerank=True)
    for item in output.items:
        print(f"{item.id}  score={item.score:.2f}")

asyncio.run(main())

LLM rerank step

arerank is the standalone LLM reranking primitive used internally by the ranker facades and exposed for direct use:

from everalgo.rank.rerank import arerank
from everalgo.rank.prompts.en.episodic import EPISODIC_RERANK_PROMPT_EN
from everalgo.types import Candidate

reranked = await arerank(
    candidates,
    prompt=EPISODIC_RERANK_PROMPT_EN,
    top_k=5,
    llm=client,
)

API surface

Symbol Module Signature summary
EpisodicRanker everalgo.rank __init__(*, llm)arank(rank_input, *, config, prompt, enable_rerank, ...) → RankOutput
CaseRanker everalgo.rank Same shape as EpisodicRanker
SkillRanker everalgo.rank Same shape as EpisodicRanker
profile.rank everalgo.rank.profile (rank_input, *, threshold=0.0) → RankOutput — sync, no LLM
RankConfig everalgo.rank fusion_mode: FusionMode = "rrf", rrf_k: int = 60, alpha: float = 1.0, expand_limit: int = 3
arank everalgo.rank Top-level async dispatch by rank_input.memory_type
arerank everalgo.rank.rerank (items, *, prompt, top_k, llm) → list[Candidate]

Cross-links

  • everalgo-coreRankInput, RankOutput, Candidate, ScoredItem, LLMClient
  • everalgo-user-memory — produces Episode / AtomicFact / Profile that the caller's recall layer packages into Candidate for ranking
  • everalgo-agent-memory — produces AgentCase / AgentSkill candidates

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

everalgo_rank-0.3.0.tar.gz (47.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

everalgo_rank-0.3.0-py3-none-any.whl (39.3 kB view details)

Uploaded Python 3

File details

Details for the file everalgo_rank-0.3.0.tar.gz.

File metadata

  • Download URL: everalgo_rank-0.3.0.tar.gz
  • Upload date:
  • Size: 47.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for everalgo_rank-0.3.0.tar.gz
Algorithm Hash digest
SHA256 46e1045ecb5760641fdf6a82fd6d20568a0a93b356c2c421bfb616ee30e3baf4
MD5 dfb8aa581c69141e36680570ea6cb741
BLAKE2b-256 ed9935296a7f5dc66d49a3849267b166a3f0224566107b9dafbe2fcedb85c3a0

See more details on using hashes here.

File details

Details for the file everalgo_rank-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: everalgo_rank-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 39.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for everalgo_rank-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 02a89455aba75ce9ec7a2d6aed0c57ef1ab586c7351aff3a952e4cc338dc1469
MD5 24675c0c2c7eb8d268b6028bb18b287f
BLAKE2b-256 7ef44af5f39c0047962464e81a01e56f27873454c41ac994163723236efc5831

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page