agentic_huge_data_base / wiki
页面 Mem0 · 6.5 重排序·DeepWiki 中文全文译文

6.5 · 重排序(Reranking)

长期记忆与上下文管理 · 本章是 Mem0 DeepWiki 中文译文的独立章节页,保留原始链接、源码锚点、模块标签和章节层级。

项目Mem0 章节6.5 状态全文译文 模块检索、召回与索引、模型调用与提供方适配、系统架构、记忆与上下文
源码线索
  • docs/components/rerankers/config.mdx
  • docs/components/rerankers/custom-prompts.mdx
  • docs/components/rerankers/models/cohere.mdx
  • docs/components/rerankers/models/huggingface.mdx
  • docs/components/rerankers/models/llm.mdx
  • docs/components/rerankers/models/llm_reranker.mdx
  • docs/components/rerankers/models/sentence_transformer.mdx
  • docs/components/rerankers/models/zero_entropy.mdx
  • docs/components/rerankers/optimization.mdx
  • docs/open-source/features/async-memory.mdx
模块标签
  • 检索、召回与索引
  • 模型调用与提供方适配
  • 系统架构
  • 记忆与上下文
  • 界面与交互

中文译文

重排序(中文译文)

原始 DeepWiki 页面:https://deepwiki.com/mem0ai/mem0/6.5-reranking
翻译时间:2026-05-27T08:45:01.667Z
翻译模型:deepseek-chat
原文字符数:9684
项目:Mem0 (mem0)

---

重排序

相关源文件

以下文件被用作生成此 Wiki 页面的上下文:

  • docs/components/rerankers/config.mdx
  • docs/components/rerankers/custom-prompts.mdx
  • docs/components/rerankers/models/cohere.mdx
  • docs/components/rerankers/models/huggingface.mdx
  • docs/components/rerankers/models/llm.mdx
  • docs/components/rerankers/models/llm_reranker.mdx
  • docs/components/rerankers/models/sentence_transformer.mdx
  • docs/components/rerankers/models/zero_entropy.mdx
  • docs/components/rerankers/optimization.mdx
  • docs/open-source/features/async-memory.mdx
  • docs/open-source/features/openai_compatibility.mdx
  • docs/open-source/features/overview.mdx
  • mem0-ts/src/oss/src/vector_stores/pgvector.ts
  • mem0-ts/src/oss/tests/pgvector.unit.test.ts
  • mem0/configs/rerankers/llm.py
  • mem0/reranker/llm_reranker.py
  • mem0/vector_stores/azure_mysql.py
  • mem0/vector_stores/cassandra.py
  • tests/rerankers/conftest.py
  • tests/rerankers/test_llm_reranker_config.py
  • tests/rerankers/test_llm_reranker_nested_config.py
  • tests/rerankers/test_llm_reranker_rerank.py

目的与范围

重排序通过根据与查询的相关性对从向量存储或图存储中检索到的记忆进行重新排序,从而提升搜索结果质量。向量相似性搜索提供初始结果后,重排序器会应用更复杂的模型(如交叉编码器或大语言模型)来优化排序,并呈现最相关的记忆。

本页面涵盖重排序器配置、支持的提供商(Cohere、Zero Entropy、Sentence Transformers、基于大语言模型和 HuggingFace),以及与检索管线的集成。

来源: mem0/reranker/llm_reranker.py:10-11docs/components/rerankers/models/llm_reranker.mdx:6-9mem0/configs/rerankers/llm.py:8-10

---

重排序器架构

工厂模式与提供商注册

Mem0 使用工厂模式动态实例化重排序器。该模式将提供商字符串(例如 "cohere")映射到具体的实现类及其对应的配置模型。

graph TB
    subgraph "代码实体:RerankerFactory"
        Factory["RerankerFactory.create()"]

        subgraph "提供商映射 [mem0/utils/factory.py]"
            CohereMapping["'cohere' → CohereReranker"]
            STMapping["'sentence_transformer' → SentenceTransformerReranker"]
            ZEMapping["'zero_entropy' → ZeroEntropyReranker"]
            LLMMapping["'llm_reranker' → LLMReranker"]
            HFMapping["'huggingface' → HuggingFaceReranker"]
        end

        subgraph "配置模型 [mem0/configs/rerankers/]"
            CohereConfig["CohereRerankerConfig"]
            STConfig["SentenceTransformerRerankerConfig"]
            ZEConfig["ZeroEntropyRerankerConfig"]
            LLMConfig["LLMRerankerConfig"]
            HFConfig["HuggingFaceRerankerConfig"]
        end
    end

    Factory --> CohereMapping
    Factory --> STMapping
    Factory --> ZEMapping
    Factory --> LLMMapping
    Factory --> HFMapping

    CohereMapping -.-> CohereConfig
    STMapping -.-> STConfig
    ZEMapping -.-> ZEConfig
    LLMMapping -.-> LLMConfig
    HFMapping -.-> HFConfig

来源: mem0/utils/factory.py:232-245mem0/reranker/llm_reranker.py:4-7mem0/configs/rerankers/llm.py:8-20

---

支持的重排序器提供商

提供商实现类配置类主要用途
cohereCohereRerankerCohereRerankerConfig生产级托管重排序 API。
sentence_transformerSentenceTransformerRerankerSentenceTransformerRerankerConfig使用交叉编码器模型进行本地重排序。
zero_entropyZeroEntropyRerankerZeroEntropyRerankerConfig高性能专用重排序服务。
llm_rerankerLLMRerankerLLMRerankerConfig使用大语言模型(OpenAI、Anthropic 等)进行相关性评分。
huggingfaceHuggingFaceRerankerHuggingFaceRerankerConfig通过 HuggingFace 推理 API 进行重排序。

来源: mem0/utils/factory.py:239-245docs/components/rerankers/models/llm_reranker.mdx:71-150

---

基于大语言模型的重排序

LLMReranker 是一种专用实现,允许使用任何受支持的语言模型作为重排序器。它利用 LlmFactory 创建底层的大语言模型实例 mem0/reranker/llm_reranker.py:59-59

大语言模型重排序的数据流

rerank 方法遍历候选文档,将输入截断至 _MAX_INPUT_LEN(4000 个字符)以防止提示溢出,并从大语言模型响应中提取数值分数 mem0/reranker/llm_reranker.py:89-102

sequenceDiagram
    participant M as "Memory"
    participant LR as "LLMReranker"
    participant LF as "LlmFactory"
    participant LLM as "BaseLlm"

    M->>LR: "rerank(query, documents)"
    loop 对每个文档
        LR->>LF: "LlmFactory.create(provider, config)"
        LF-->>LR: "大语言模型实例"
        LR->>LLM: "generate_response(messages)"
        Note right of LLM: messages 包含 system_prompt 和 user_message
        LLM-->>LR: "相关性分数(例如 '0.85')"
        LR->>LR: "_extract_score(response_text)"
    end
    LR->>LR: "scored_docs.sort(reverse=True)"
    LR-->>M: "List[Dict](Top K)"

实现细节:

  • 提示词:使用默认的 _SYSTEM_PROMPT,该提示词定义了从 0.0(不相关)到 1.0(完全相关)的评分范围 mem0/reranker/llm_reranker.py:75-86
  • 分数提取:使用正则表达式 r'\b([01](?:\.\d+)?)\b' 在大语言模型的文本响应中查找十进制数字,并将结果限制在 0.0 到 1.0 之间 mem0/reranker/llm_reranker.py:91-102
  • 回退机制:如果评分失败,则分配中性回退分数 0.5 mem0/reranker/llm_reranker.py:102-102
配置参数(LLMRerankerConfig
参数类型默认值描述
providerstr"openai"大语言模型提供商(openai、anthropic 等)mem0/configs/rerankers/llm.py:30-33
modelstr"gpt-4o-mini"用于重排序的大语言模型 mem0/configs/rerankers/llm.py:22-25
scoring_promptstrNone用于评分的自定义提示模板(已废弃)mem0/configs/rerankers/llm.py:46-49
top_kintNone重排序后返回的顶部文档数量 mem0/configs/rerankers/llm.py:34-37
llmdictNone嵌套的大语言模型配置,用于提供商特定字段(例如 ollama_base_urlmem0/configs/rerankers/llm.py:50-54

来源: mem0/reranker/llm_reranker.py:10-169mem0/configs/rerankers/llm.py:8-54docs/components/rerankers/models/llm_reranker.mdx:31-43

---

集成与使用

检索管线

重排序步骤发生在从存储后端(如 PGVectorCassandraDB)进行初始检索之后。

graph LR
    subgraph "检索阶段"
        Query["用户查询"] --> VS["VectorStore.search()"]
        VS --- PGV["PGVector [mem0-ts/src/oss/src/vector_stores/pgvector.ts]"]
        VS --- CDB["CassandraDB [mem0/vector_stores/cassandra.py]"]
    end

    subgraph "重排序阶段"
        VS --> Cand["候选文档"]
        Cand --> RR["LLMReranker.rerank() [mem0/reranker/llm_reranker.py]"]
        RR --> Sorted["排序后的相关性结果"]
    end
关键词与向量搜索上下文

虽然重排序器通常对向量搜索结果进行操作,但像 PGVector 这样的提供商也支持使用 PostgreSQL 全文搜索功能(to_tsvectorplainto_tsquery)进行 keywordSearch,这可以作为重排序器的候选来源 mem0-ts/src/oss/src/vector_stores/pgvector.ts:200-231

来源: mem0/reranker/llm_reranker.py:104-115mem0-ts/src/oss/src/vector_stores/pgvector.ts:200-231mem0/vector_stores/cassandra.py:146-160

---

自定义提示词

你可以使用 LLMRerankerConfig 中的 scoring_prompt 参数提供自定义提示模板。该提示词现在用作系统消息 mem0/reranker/llm_reranker.py:61-71

必需变量:

  • {query}:搜索查询。
  • {document}:正在评分的记忆条目。

配置示例:

config = {
    "reranker": {
        "provider": "llm_reranker",
        "config": {
            "provider": "openai",
            "model": "gpt-4o-mini",
            "scoring_prompt": "从 0.0 到 1.0 对 {document} 与 {query} 的相关性进行评分。"
        }
    }
}

来源: docs/components/rerankers/custom-prompts.mdx:30-74mem0/reranker/llm_reranker.py:61-73