feat: Phase 2.6 edges migration to Qdrant (TKG-only architecture)

Phase 2.6.1: co_occurrence_edges migration
- build_co_occurrence_edges_from_qdrant()
- Qdrant embeddings → frame grouping → YOLO objects
- Result: 6679 edges (vs 6701 PostgreSQL)

Phase 2.6.2: face_face_edges migration
- build_face_face_edges_from_qdrant()
- Qdrant embeddings → frame grouping → face pairs
- mutual_gaze detection preserved
- Result: 6 edges (exact match)

Phase 2.6.3: speaker_face_edges migration
- build_speaker_face_edges_from_qdrant()
- Qdrant embeddings → trace_id frame ranges
- SPEAKS_AS edge creation

Architecture:
- All edges use Qdrant payload (no face_detections queries)
- PostgreSQL fallback for empty Qdrant
- Estimated 3.6x performance improvement

Testing:
- Playground (3003): ✓ All Phase 2.6 logs verified
- Edge counts: ✓ Close match with PostgreSQL
- Fallback: ✓ Working

Docs:
- docs_v1.0/DESIGN/TKG_PHASE2_6_EDGES_MIGRATION.md
- docs_v1.0/M4_workspace/2026-06-21_phase2_6_test.md
This commit is contained in:
Accusys
2026-06-21 04:47:49 +08:00
parent 0afc70fc5b
commit 2cfcfdd1af
2926 changed files with 8311054 additions and 1390 deletions
+4
View File
@@ -12,6 +12,7 @@ use std::io;
#[derive(Debug, Clone, Copy, PartialEq)]
pub enum ProcessorType {
Appearance,
Asr,
Cut,
Asrx,
@@ -26,6 +27,7 @@ pub enum ProcessorType {
impl ProcessorType {
pub fn as_str(&self) -> &'static str {
match self {
ProcessorType::Appearance => "Appearance",
ProcessorType::Asr => "ASR",
ProcessorType::Cut => "CUT",
ProcessorType::Asrx => "ASRX",
@@ -132,6 +134,7 @@ impl ProgressState {
pub fn new(video_name: &str) -> Self {
Self {
processors: vec![
ProcessorProgress::new(ProcessorType::Appearance),
ProcessorProgress::new(ProcessorType::Asr),
ProcessorProgress::new(ProcessorType::Cut),
ProcessorProgress::new(ProcessorType::Asrx),
@@ -187,6 +190,7 @@ impl ProgressState {
message: Option<&str>,
) {
let proc_type = match processor.to_uppercase().as_str() {
"APPEARANCE" => ProcessorType::Appearance,
"ASR" => ProcessorType::Asr,
"CUT" => ProcessorType::Cut,
"ASRX" => ProcessorType::Asrx,