Skip to content

Crux 模块功能问题分析报告 #15

Description

@youngbeauty250

Crux 模块功能问题分析报告

生成时间: 2026-04-01
分析维度: 业务逻辑与功能设计层面


📊 流程概览

User Query → Understanding → Retrieval → Adjudication → Gap Analysis → Report
                                        ↑                ↓
                                        └────────────────┘ (迭代闭环)

1️⃣ Understanding (意图理解) 模块

📋 职责

解析用户自然语言查询,生成结构化的 IntentObject,包括:

  • 认知策略(用户目标、推理拓扑、深度要求)
  • 约束条件(结构化/非结构化)
  • 信息面(需要获取的信息维度)
  • 检索策略(关键词、语义查询、假设文档)

🔴 功能问题

# 问题 严重程度 影响
1 信息面未被后续模块充分利用 🔴 严重 Understanding解析的information_facets在Adjudication和GapAnalysis中只是被简单传递,没有真正用于指导每个独立信息面的证据收集和研判
2 认知策略完全未使用 🔴 严重 reasoning_topology(因果链/时序/列表)、depth_requirement(深/浅)在整个流程中完全未被考虑
3 假设文档未实际应用 🟡 中等 retrieval_execution.hypothetical_document是HyDE策略的关键,但Retrieval模块没有使用
4 非结构化约束未实现 🟡 中等 unstructured_content_patterns(正则/短语/通配)定义了内容过滤规则,但Retrieval模块没有实现
5 相关性阈值未生效 🟡 中等 success_criteria.relevance_threshold定义了HIGH/MEDIUM,但后续模块没有据此调整判断标准

📝 具体问题说明

问题1: 信息面未被充分利用

Understanding解析出多个信息面(如F1:定义、F2:原因、F3:解决方案),但:

  • Adjudication只使用统一的judgement_rubric,没有针对每个facet独立判断
  • GapAnalysis只给出整体覆盖度,没有指出哪些facet未覆盖
  • 最终报告没有按facet结构化组织证据

问题2: 认知策略完全未使用

认知策略字段 预期用途 实际情况
reasoning_topology 决定证据组织方式(因果/时序/列表) 完全未使用
depth_requirement 决定检索深度和证据粒度 完全未使用
user_goal 决定整体回答风格(调查性/事实性) 完全未使用

2️⃣ Retrieval (检索) 模块

📋 职责

执行混合检索,召回候选文档:

  • 字段过滤(基于结构化约束)
  • 稀疏检索(BM25关键词)
  • 向量检索(语义相似度)

🔴 功能问题

# 问题 严重程度 影响
1 混合检索融合逻辑不明确 🔴 严重 BM25和向量检索的结果如何融合(RRF/加权/取并集)没有明确定义,实际是交给data_loader处理
2 未使用HyDE策略 🔴 严重 Understanding生成的hypothetical_document未被用于向量检索,无法提升语义召回
3 未实现内容模式过滤 🟡 中等 unstructured_content_patterns定义了正则/短语过滤,但检索模块没有实现
4 迭代检索无动态调整 🟡 中等 多次迭代时检索策略完全相同,没有根据前次adjudication的拒绝原因调整
5 无去重和重排序 🟡 中等 检索结果可能重复,没有基于证据质量的重排序

📝 具体问题说明

问题1: 混合检索融合逻辑不明确

当前实现:

docs = self.data_loader.search(
    keywords=keywords,
    vector_queries=vector_queries,
    constraints=constraints,
    top_k=self.config.search.top_k
)

问题:

  • 不知道BM25和向量检索如何融合
  • 没有RRF(Reciprocal Rank Fusion)或加权融合策略
  • 无法分别控制两种检索的召回数量

问题2: 未使用HyDE策略

Understanding生成:

{
  "hypothetical_document": "假设有一篇论文回答了用户问题..."
}

Retrieval应该:将假设文档转为向量进行检索,但实际没有使用。


3️⃣ Adjudication (研判) 模块

📋 职责

对召回的候选文档进行深度研判:

  • 判断文档是否相关
  • 提取高价值证据
  • 过滤语义相似但无关的噪音

🔴 功能问题

# 问题 严重程度 影响
1 未按信息面独立研判 🔴 严重 所有文档使用统一的judgement_rubric,没有针对每个facet独立判断和收集证据
2 facet_id无实际映射 🔴 严重 返回的facet_id没有映射到原始的information_facets,后续无法按facet组织证据
3 忽略认知策略 🟡 中等 没有根据depth_requirement调整研判深度,没有根据reasoning_topology组织证据
4 只有单维度判断 🟡 中等 只用judgement_rubric,忽略了success_criteria中的正负向标准
5 无证据质量评分 🟡 中等 虽然有relevance_score,但没有基于证据完整性、准确性等的多维度评分

📝 具体问题说明

问题1: 未按信息面独立研判

当前流程:

用户问题: "RAG系统的优化方法"
信息面: [F1:检索优化, F2:生成优化, F3:评估方法]

Adjudication: 使用统一的rubric判断所有文档

问题:

  • 一篇论文可能同时包含F1和F2的信息,但只被判断一次
  • 无法区分哪篇论文支持哪个facet
  • GapAnalysis无法知道哪个facet缺少证据

问题2: facet_id无实际映射

Prompt要求LLM返回facet_id,但:

  • LLM不知道原始的facet定义
  • 返回的facet_id没有对应关系
  • 后续无法按facet组织证据

4️⃣ Strategy/Gap Analysis (缺口分析) 模块

📋 职责

分析已验证证据是否覆盖原始意图:

  • 检查信息面覆盖度
  • 有缺口则生成新查询并回流
  • 覆盖充足则进入报告生成

🔴 功能问题

# 问题 严重程度 影响
1 suggested_queries未传递给Retrieval 🔴 严重 分析生成的suggested_queries被丢弃了,Retrieval无法利用它进行针对性检索
2 整体覆盖度而非按facet覆盖 🔴 严重 只给出整体覆盖度,不知道哪些具体facet未满足
3 coverage_score未被使用 🟡 中等 计算了覆盖度分数,但判断是否继续检索只看status字段
4 无针对性查询生成 🟡 中等 返回的suggested_queries是基于整体分析,不是针对未覆盖的特定facet
5 无迭代效果评估 🟡 中等 无法判断新检索是否有效填补了之前的缺口

📝 具体问题说明

问题1: suggested_queries未传递给Retrieval

# GapAnalysis获取了建议查询
suggested_queries = analysis.get("suggested_queries", [])

# 但state更新中没有传递给Retrieval
return self.build_result({
    "gap_analysis_result": "insufficient",
    "search_iteration": iteration,
    # 缺少: "suggested_queries": suggested_queries
})

Retrieval只能重复使用原始的retrieval_execution,无法根据缺口调整。

问题2: 整体覆盖度而非按facet覆盖

Prompt要求:

Check if the collected evidence fully satisfies all information facets

但返回结果:

{
    "status": "insufficient",
    "missing_info": "缺少一些信息",
    "coverage_score": 0.6
}

问题:

  • 不知道具体是哪些facet未覆盖
  • 无法生成针对性的补充查询

5️⃣ Report (报告生成) 模块

📋 职责

将验证后的证据整合为最终报告

🔴 功能问题

# 问题 严重程度 影响
1 报告结构未使用信息面 🔴 严重 报告是简单的证据列表,没有按information_facets结构化组织
2 未应用推理拓扑 🟡 中等 报告格式固定,没有根据reasoning_topology调整(因果/时序/列表)
3 未应用认知深度 🟡 中等 无论depth_requirement是什么,报告详略程度相同
4 无证据去重和合并 🟡 中等 同一文档的不同证据片段没有合并展示

📝 具体问题说明

问题1: 报告结构未使用信息面

当前报告格式:

[Evidence 1] ...
[Evidence 2] ...

理想格式(基于information_facets):

[F1: 检索优化方法]
  - Evidence 1 ...
  - Evidence 2 ...

[F2: 生成优化方法]
  - Evidence 3 ...

[F3: 评估方法]
  - 缺少证据

🚨 核心问题总结

问题域: 信息断层

模块 产出 谁应该使用 实际使用情况
Understanding information_facets Adjudication, GapAnalysis, Report ❌ 几乎未使用
Understanding reasoning_topology Report ❌ 未使用
Understanding depth_requirement Adjudication, Retrieval, Report ❌ 未使用
Understanding hypothetical_document Retrieval ❌ 未使用
Understanding unstructured_content_patterns Retrieval ❌ 未使用
Understanding relevance_threshold Adjudication ❌ 未使用
GapAnalysis suggested_queries Retrieval ❌ 未使用
GapAnalysis coverage_score 判断是否继续 ❌ 未使用

根本原因

  1. 模块间协作设计不完整 - Understanding解析了丰富的意图信息,但后续模块没有设计相应的消费接口

  2. 闭环机制断裂 - GapAnalysis分析了缺口并生成建议,但无法传递给Retrieval形成真正的闭环

  3. 评估维度单一 - 整个流程只用"相关性"一个维度,没有利用认知策略的多维度评估


💡 改进建议

建议1: 按信息面进行独立研判

Adjudication改进:
for facet in information_facets:
    for doc in candidate_docs:
        # 使用facet的rubric判断
        # 收集支持该facet的证据

建议2: 传递建议查询到检索

GapAnalysis -> state.update(suggested_queries)
Retrieval -> if suggested_queries: use them

建议3: 利用认知策略指导流程

if depth_requirement == "DEEP":
    retrieval.top_k *= 2
    adjudication.extract_full_context = True

if reasoning_topology == "CAUSAL_CHAIN":
    report.organize_by_cause_effect()

建议4: 按信息面组织报告

Report按information_facets结构化:
[F1: xxx]
  - 证据列表
  - 覆盖度评估

[F2: xxx]
  - 证据列表
  - 覆盖度评估

📌 优先级

优先级 问题 影响范围
P0 信息面未被利用 整个系统的核心价值无法体现
P0 建议查询未传递 闭环机制断裂
P1 未使用HyDE 检索效果受限
P1 未按facet独立研判 证据组织混乱
P2 认知策略未使用 系统智能化程度不足

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions