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 |
判断是否继续 |
❌ 未使用 |
根本原因
-
模块间协作设计不完整 - Understanding解析了丰富的意图信息,但后续模块没有设计相应的消费接口
-
闭环机制断裂 - GapAnalysis分析了缺口并生成建议,但无法传递给Retrieval形成真正的闭环
-
评估维度单一 - 整个流程只用"相关性"一个维度,没有利用认知策略的多维度评估
💡 改进建议
建议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 |
认知策略未使用 |
系统智能化程度不足 |
Crux 模块功能问题分析报告
📊 流程概览
1️⃣ Understanding (意图理解) 模块
📋 职责
解析用户自然语言查询,生成结构化的
IntentObject,包括:🔴 功能问题
information_facets在Adjudication和GapAnalysis中只是被简单传递,没有真正用于指导每个独立信息面的证据收集和研判reasoning_topology(因果链/时序/列表)、depth_requirement(深/浅)在整个流程中完全未被考虑retrieval_execution.hypothetical_document是HyDE策略的关键,但Retrieval模块没有使用unstructured_content_patterns(正则/短语/通配)定义了内容过滤规则,但Retrieval模块没有实现success_criteria.relevance_threshold定义了HIGH/MEDIUM,但后续模块没有据此调整判断标准📝 具体问题说明
问题1: 信息面未被充分利用
Understanding解析出多个信息面(如F1:定义、F2:原因、F3:解决方案),但:
judgement_rubric,没有针对每个facet独立判断问题2: 认知策略完全未使用
reasoning_topologydepth_requirementuser_goal2️⃣ Retrieval (检索) 模块
📋 职责
执行混合检索,召回候选文档:
🔴 功能问题
hypothetical_document未被用于向量检索,无法提升语义召回unstructured_content_patterns定义了正则/短语过滤,但检索模块没有实现📝 具体问题说明
问题1: 混合检索融合逻辑不明确
当前实现:
问题:
问题2: 未使用HyDE策略
Understanding生成:
{ "hypothetical_document": "假设有一篇论文回答了用户问题..." }Retrieval应该:将假设文档转为向量进行检索,但实际没有使用。
3️⃣ Adjudication (研判) 模块
📋 职责
对召回的候选文档进行深度研判:
🔴 功能问题
judgement_rubric,没有针对每个facet独立判断和收集证据facet_id没有映射到原始的information_facets,后续无法按facet组织证据depth_requirement调整研判深度,没有根据reasoning_topology组织证据judgement_rubric,忽略了success_criteria中的正负向标准relevance_score,但没有基于证据完整性、准确性等的多维度评分📝 具体问题说明
问题1: 未按信息面独立研判
当前流程:
问题:
问题2: facet_id无实际映射
Prompt要求LLM返回
facet_id,但:4️⃣ Strategy/Gap Analysis (缺口分析) 模块
📋 职责
分析已验证证据是否覆盖原始意图:
🔴 功能问题
suggested_queries被丢弃了,Retrieval无法利用它进行针对性检索suggested_queries是基于整体分析,不是针对未覆盖的特定facet📝 具体问题说明
问题1: suggested_queries未传递给Retrieval
Retrieval只能重复使用原始的
retrieval_execution,无法根据缺口调整。问题2: 整体覆盖度而非按facet覆盖
Prompt要求:
但返回结果:
{ "status": "insufficient", "missing_info": "缺少一些信息", "coverage_score": 0.6 }问题:
5️⃣ Report (报告生成) 模块
📋 职责
将验证后的证据整合为最终报告
🔴 功能问题
information_facets结构化组织reasoning_topology调整(因果/时序/列表)depth_requirement是什么,报告详略程度相同📝 具体问题说明
问题1: 报告结构未使用信息面
当前报告格式:
理想格式(基于information_facets):
🚨 核心问题总结
问题域: 信息断层
information_facetsreasoning_topologydepth_requirementhypothetical_documentunstructured_content_patternsrelevance_thresholdsuggested_queriescoverage_score根本原因
模块间协作设计不完整 - Understanding解析了丰富的意图信息,但后续模块没有设计相应的消费接口
闭环机制断裂 - GapAnalysis分析了缺口并生成建议,但无法传递给Retrieval形成真正的闭环
评估维度单一 - 整个流程只用"相关性"一个维度,没有利用认知策略的多维度评估
💡 改进建议
建议1: 按信息面进行独立研判
建议2: 传递建议查询到检索
建议3: 利用认知策略指导流程
建议4: 按信息面组织报告
📌 优先级