ForgedEmir/SourceLoom
GitHub: ForgedEmir/SourceLoom
一个证据优先的自适应深度研究引擎,通过多提供商检索、证据图谱和矛盾检测生成可追溯的研究报告,解决传统搜索工具缺乏证据支撑与可解释性的问题。
Stars: 0 | Forks: 0
SourceLoom
自适应、证据优先的跨多个搜索提供商深度研究。
广泛搜索。识别缺失。追踪证据。因明确理由而停止。
 ## 问题所在 大多数“多提供商研究”工具只是拼接搜索结果,并要求 LLM 对其进行总结: ``` Tavily results + Exa results → LLM summary ``` 这可能会产生流畅的答案,却无法说明重要论断是否有据可查、信息来源是否独立,也无法解释搜索为何停止。 SourceLoom 正是基于一个更严谨的问题而构建的: ## 提议的研究循环 ``` Question ↓ Decompose → Route queries → Search providers ↑ ↓ └── Target unresolved gaps ← Evidence graph ↓ ┌────────────┴────────────┐ ↓ ↓ Traceable report Unresolved-gap report (coverage reached) (hard limit reached) ``` 搜索提供商只是输入,而非最终产品。核心产品是那个负责规划、路由、评估证据,并决定是否启动下一波搜索的循环。 ## 证据缺口搜索 初始算法是一个有待验证的假设,而非声称具有独创性。 1. 将问题分解为可解答的论断。 2. 针对每个缺乏支撑的论断生成定向查询。 3. 将查询路由至如 Tavily 和 Exa 等提供商适配器。 4. 规范化文档并移除重复或近似重复的证据。 5. 将论断与支持及反驳来源相关联。 6. 根据期望价值对未解决的证据缺口进行排序。 7. 仅当某个缺口值得投入剩余预算时,才再次搜索。 8. 最终得出有据可依的结论,或明确指出未知部分。 每次研究过程都应保留足够的信息来回答: - 哪个查询生成了该来源? - 哪个来源支持该论断? - 是否有独立来源对此进行了佐证? - 是否发现了反驳证据? - 系统为何继续或停止搜索? ## 预期架构 ``` Question └─ Research planner ├─ Provider router │ ├─ Tavily adapter │ └─ Exa adapter ├─ Document normalizer ├─ Evidence graph ├─ Contradiction detector ├─ Gap prioritizer └─ Stopping policy ├─ Coverage reached ├─ Budget exhausted └─ Timeout reached ``` 引擎将保持独立于提供商的特性。特定于提供商的响应在评分或综合之前,将被转换为通用的结果契约。 ## 评估计划 SourceLoom 不会仅因其报告看起来有说服力就被贴上“更好”的标签。自适应策略将与明确的基线进行对比。 | 维度 | 衡量内容 | |---|---| | 论断支持 | 关键论断与相关证据关联的比例 | | 引用正确性 | 引用的段落是否确实支持该论断 | | 来源质量 | 一手来源的使用情况、权威性与独立性 | | 矛盾处理 | 是否揭示而非隐藏相互冲突的证据 | | 覆盖范围 | 是否涵盖了问题所需关注的各个方面 | | 效率 | 查询、文档、延迟及模型/搜索成本 | | 停止行为 | 运行是否因记录在案的合理条件而停止 | 初始对比: ``` Tavily only Exa only Naive Tavily + Exa merge SourceLoom adaptive Evidence-Gap Search ``` 在进行更大规模的基准测试前,将先使用一个小型验证集。初步设定的阈值和预算将作为可调假设处理。 ## Roadmap - [x] 定义问题、词汇表及证据优先的架构 - [x] 创建公开的项目标识和代码库基础 - [ ] 定义与提供商无关的搜索契约 - [ ] 使用记录的 fixtures 实现 Tavily 和 Exa 适配器 - [ ] 实现 URL 和内容去重 - [ ] 构建首个从论断到来源的证据图 - [ ] 添加有界的迭代缺口搜索 - [ ] 生成带有引用的 JSON 和 Markdown 报告 - [ ] 与单一提供商和简单合并的基线进行基准对比 - [ ] 将引擎作为 MCP 工具暴露给诸如 Hermes 等 agent 使用 ## 计划界面 以下命令展示了目标的开发者体验;该命令**目前尚未实现**。 ``` sourceloom research \ "Can a ChatGPT subscription fund third-party API usage?" \ --providers tavily,exa \ --max-search-waves 3 \ --report markdown ``` 预期的输出特征: - 包含引用的结论; - 尚未解决的问题; - 矛盾的证据; - 搜索决策及停止原因; - 机器可读的运行轨迹。 ## 仓库模型 - `main`:稳定的公开状态及已接受的里程碑 - `develop`:用于已审查工作的集成分支 - `feat/*`、`fix/*`、`docs/*`:通过 pull request 合并的短期分支 分支的存在是为了让变更具备可审查性,而不是为了制造活跃假象。 ## 核心原则 - **证据先于辞藻。** 经过润色的句子并不等于经过验证的论断。 - **一手来源优先。** 重要的事实常量应取自权威来源。 - **未知也是有效结果。** 缺失的证据必须保持可见。 - **每个循环皆受边界约束。** 查询、成本、时间及迭代限制必须明确。 - **提供商独立性。** Tavily 和 Exa 只是适配器,而非架构上的硬性依赖。 - **可复现的评估。** 改进效果必须超越已记录的基线。 ## License 采用 [Apache License 2.0](LICENSE) 授权。标签:AI, C2, RAG, 信息检索, 搜索引擎, 深度研究, 自动化代码审查, 证据图谱, 逆向工具