Skip to content

[Internal Only] Video understanding (multimodal) not yet wired into the Go ingestion pipeline #17433

Description

@xugangqiang

Internal only. External contributors: please do not open PRs for this issue — it is being handled internally.

Summary

The Go ingestion pipeline does not yet support video understanding (multimodal). maybeDispatchVideo in internal/ingestion/component/media_dispatch.go currently returns an explicit error: "video parsing is not yet supported; underlying video analysis capability is pending" (intentional stub since 2026-07-27). This is not a parity gap and not a "Keep Go" difference.

Why it was stubbed

The previous implementation sent the video as a video_url base64 data URI to the vision model. This does not work for any supported driver:

  • OpenAI-compatible drivers only accept image_url and silently ignore video_url.
  • Gemini's googleMessageParts only handles text/image_url and drops video_url.

The model therefore received only the text prompt and produced no real video understanding. Rather than ship broken behavior, we now fail loudly and defer the real implementation.

How Python does it (provider-specific, for reference)

  • OpenAI-compatible (dominant): samples 3 frames at 10% / 50% / 90% of duration via OpenCV, encodes them as JPEG data:image/jpeg;base64 URLs, and sends them as image_url blocks (rag/llm/cv_model.py::_describe_video_frame).
  • Gemini: <=20 MB -> raw bytes as inline_data Blob; >20 MB -> upload via Files API (client.files.upload, resumable 8 MB chunks) and use the returned uri.
  • Qwen: writes a temp file and sends a file:// URI.

Plan

Real video parsing is deferred until the underlying video-analysis capability is built. When implemented it must be provider-specific (OpenAI frame extraction -> image_url; Gemini inline_data/Files API; Qwen file://). Tracked as migration diff Parser 2.7 in docs/migration_python_go_diff.md.

Note

Internal only — handled by the team; external PRs are not expected.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions