语义 DAG 处理引擎
Semantic DAG Processing Engine
事件驱动的 DAG 执行器,自底向上聚合语义摘要,支持并发控制和收敛检测
子问题
1.目录树 DAG 构建
2.LLM 并发信号量控制
3.自底向上摘要聚合
4.收敛检测与提前终止
5.多媒体文件类型分发与摘要策略选择
6.双队列协作(语义队列单任务 + 嵌入队列并发)
7.异常传播与空结果降级避免父节点死锁
各项目的解法1 solutions
Signals
横向对比
| 维度 | OpenViking |
|---|---|
| 调度模式 | 事件驱动惰性调度,pending 计数器归零触发聚合 |
| 并发模型 | asyncio.Semaphore 全局限流 + asyncio.Lock 节点级互斥 |
| DAG 构建 | 运行时惰性构建,_dispatch_dir 按需创建 DirNode |
| 收敛检测 | asyncio.Event 单信号收敛,根节点完成即 set |
| 聚合方向 | 自底向上:文件摘要 → 目录 overview → 父目录 abstract |
| 队列架构 | QueueManager 单例 + NamedQueue 双队列(Semantic + Embedding) |
| 多媒体支持 | 四路分发:代码(AST/LLM)、文档、图片(VLM)、音视频 |
最佳实践
1.asyncio.Semaphore 限制 LLM 并发
2.事件驱动惰性调度避免资源浪费
3.overview_scheduled 标志防止重复触发聚合任务
4.文件摘要完成后立即异步提交向量化,不等待 overview
5.异常时向父节点传播空 abstract,保证 DAG 不死锁