mirror of
https://github.com/ollama/ollama.git
synced 2026-05-07 00:22:43 -05:00
Closed
opened 2026-04-12 16:42:50 -05:00 by GiteaMirror
·
18 comments
No Branch/Tag Specified
main
hoyyeva/anthropic-local-image-path
dhiltgen/ci
dhiltgen/llama-runner
parth-remove-claude-desktop-launch
hoyyeva/anthropic-reference-images-path
parth-anthropic-reference-images-path
brucemacd/download-before-remove
hoyyeva/editor-config-repair
parth-mlx-decode-checkpoints
parth-launch-codex-app
hoyyeva/fix-codex-model-metadata-warning
hoyyeva/qwen
parth/hide-claude-desktop-till-release
hoyyeva/opencode-image-modality
parth-add-claude-code-autoinstall
release_v0.22.0
pdevine/manifest-list
codex/fix-codex-model-metadata-warning
pdevine/addressable-manifest
brucemacd/launch-fetch-reccomended
jmorganca/llama-compat
launch-copilot-cli
hoyyeva/opencode-thinking
release_v0.20.7
parth-auto-save-backup
parth-test
jmorganca/gemma4-audio-replacements
fix-manifest-digest-on-pull
hoyyeva/vscode-improve
brucemacd/install-server-wait
parth/update-claude-docs
brucemac/start-ap-install
pdevine/mlx-update
pdevine/qwen35_vision
drifkin/api-show-fallback
mintlify/image-generation-1773352582
hoyyeva/server-context-length-local-config
jmorganca/faster-reptition-penalties
jmorganca/convert-nemotron
parth-pi-thinking
pdevine/sampling-penalties
jmorganca/fix-create-quantization-memory
dongchen/resumable_transfer_fix
pdevine/sampling-cache-error
jessegross/mlx-usage
hoyyeva/openclaw-config
hoyyeva/app-html
pdevine/qwen3next
brucemacd/sign-sh-install
brucemacd/tui-update
brucemacd/usage-api
jmorganca/launch-empty
fix-app-dist-embed
mxyng/mlx-compile
mxyng/mlx-quant
mxyng/mlx-glm4.7
mxyng/mlx
brucemacd/simplify-model-picker
jmorganca/qwen3-concurrent
fix-glm-4.7-flash-mla-config
drifkin/qwen3-coder-opening-tag
brucemacd/usage-cli
fix-cuda12-fattn-shmem
ollama-imagegen-docs
parth/fix-multiline-inputs
brucemacd/config-docs
mxyng/model-files
mxyng/simple-execute
fix-imagegen-ollama-models
mxyng/async-upload
jmorganca/lazy-no-dtype-changes
imagegen-auto-detect-create
parth/decrease-concurrent-download-hf
fix-mlx-quantize-init
jmorganca/x-cleanup
usage
imagegen-readme
jmorganca/glm-image
mlx-gpu-cd
jmorganca/imagegen-modelfile
parth/agent-skills
parth/agent-allowlist
parth/signed-in-offline
parth/agents
parth/fix-context-chopping
improve-cloud-flow
parth/add-models-websearch
parth/prompt-renderer-mcp
jmorganca/native-settings
jmorganca/download-stream-hash
jmorganca/client2-rebased
brucemacd/oai-chat-req-multipart
jessegross/multi_chunk_reserve
grace/additional-omit-empty
grace/mistral-3-large
mxyng/tokenizer2
mxyng/tokenizer
jessegross/flash
hoyyeva/windows-nacked-app
mxyng/cleanup-attention
grace/deepseek-parser
hoyyeva/remember-unsent-prompt
parth/add-lfs-pointer-error-conversion
parth/olmo2-test2
hoyyeva/ollama-launchagent-plist
nicole/olmo-model
parth/olmo-test
mxyng/remove-embedded
parth/render-template
jmorganca/intellect-3
parth/remove-prealloc-linter
jmorganca/cmd-eval
nicole/nomic-embed-text-fix
mxyng/lint-2
hoyyeva/add-gemini-3-pro-preview
hoyyeva/load-model-list
mxyng/expand-path
mxyng/environ-2
hoyyeva/deeplink-json-encoding
parth/improve-tool-calling-tests
hoyyeva/conversation
hoyyeva/assistant-edit-response
hoyyeva/thinking
origin/brucemacd/invalid-char-i-err
parth/improve-tool-calling
jmorganca/required-omitempty
grace/qwen3-vl-tests
mxyng/iter-client
parth/docs-readme
nicole/embed-test
pdevine/integration-benchstat
parth/remove-generate-cmd
parth/add-toolcall-id
mxyng/server-tests
jmorganca/glm-4.6
jmorganca/gin-h-compat
drifkin/stable-tool-args
pdevine/qwen3-more-thinking
parth/add-websearch-client
nicole/websearch_local
jmorganca/qwen3-coder-updates
grace/deepseek-v3-migration-tests
mxyng/fix-create
jmorganca/cloud-errors
pdevine/parser-tidy
revert-12233-parth/simplify-entrypoints-runner
parth/enable-so-gpt-oss
brucemacd/qwen3vl
jmorganca/readme-simplify
parth/gpt-oss-structured-outputs
revert-12039-jmorganca/tools-braces
mxyng/embeddings
mxyng/gguf
mxyng/benchmark
mxyng/types-null
parth/move-parsing
mxyng/gemma2
jmorganca/docs
mxyng/16-bit
mxyng/create-stdin
pdevine/authorizedkeys
mxyng/quant
parth/opt-in-error-context-window
brucemacd/cache-models
brucemacd/runner-completion
jmorganca/llama-update-6
brucemacd/benchmark-list
brucemacd/partial-read-caps
parth/deepseek-r1-tools
mxyng/omit-array
parth/tool-prefix-temp
brucemacd/runner-test
jmorganca/qwen25vl
brucemacd/model-forward-test-ext
parth/python-function-parsing
jmorganca/cuda-compression-none
drifkin/num-parallel
drifkin/chat-truncation-fix
jmorganca/sync
parth/python-tools-calling
drifkin/array-head-count
brucemacd/create-no-loop
parth/server-enable-content-stream-with-tools
qwen25omni
mxyng/v3
brucemacd/ropeconfig
jmorganca/silence-tokenizer
parth/sample-so-test
parth/sampling-structured-outputs
brucemacd/doc-go-engine
parth/constrained-sampling-json
jmorganca/mistral-wip
brucemacd/mistral-small-convert
parth/sample-unmarshal-json-for-params
brucemacd/jomorganca/mistral
pdevine/bfloat16
jmorganca/mistral
brucemacd/mistral
pdevine/logging
parth/sample-correctness-fix
parth/sample-fix-sorting
jmorgan/sample-fix-sorting-extras
jmorganca/temp-0-images
brucemacd/parallel-embed-models
brucemacd/shim-grammar
jmorganca/fix-gguf-error
bmizerany/nameswork
jmorganca/faster-releases
bmizerany/validatenames
brucemacd/err-no-vocab
brucemacd/rope-config
brucemacd/err-hint
brucemacd/qwen2_5
brucemacd/logprobs
brucemacd/new_runner_graph_bench
progress-flicker
brucemacd/forward-test
brucemacd/go_qwen2
pdevine/gemma2
jmorganca/add-missing-symlink-eval
mxyng/next-debug
parth/set-context-size-openai
brucemacd/next-bpe-bench
brucemacd/next-bpe-test
brucemacd/new_runner_e2e
brucemacd/new_runner_qwen2
pdevine/convert-cohere2
brucemacd/convert-cli
parth/log-probs
mxyng/next-mlx
mxyng/cmd-history
parth/templating
parth/tokenize-detokenize
brucemacd/check-key-register
bmizerany/grammar
jmorganca/vendor-081b29bd
mxyng/func-checks
jmorganca/fix-null-format
parth/fix-default-to-warn-json
jmorganca/qwen2vl
jmorganca/no-concat
parth/cmd-cleanup-SO
brucemacd/check-key-register-structured-err
parth/openai-stream-usage
parth/fix-referencing-so
stream-tools-stop
jmorganca/degin-1
brucemacd/install-path-clean
brucemacd/push-name-validation
brucemacd/browser-key-register
jmorganca/openai-fix-first-message
jmorganca/fix-proxy
jessegross/sample
parth/disallow-streaming-tools
dhiltgen/remove_submodule
jmorganca/ga
jmorganca/mllama
pdevine/newlines
pdevine/geems-2b
jmorganca/llama-bump
mxyng/modelname-7
mxyng/gin-slog
mxyng/modelname-6
jyan/convert-prog
jyan/quant5
paligemma-support
pdevine/import-docs
jmorganca/openai-context
jyan/paligemma
jyan/p2
jyan/palitest
bmizerany/embedspeedup
jmorganca/llama-vit
brucemacd/allow-ollama
royh/ep-methods
royh/whisper
mxyng/api-models
mxyng/fix-memory
jyan/q4_4/8
jyan/ollama-v
royh/stream-tools
roy-embed-parallel
bmizerany/hrm
revert-5963-revert-5924-mxyng/llama3.1-rope
royh/embed-viz
jyan/local2
jyan/auth
jyan/local
jyan/parse-temp
jmorganca/template-mistral
jyan/reord-g
royh-openai-suffixdocs
royh-imgembed
royh-embed-parallel
jyan/quant4
royh-precision
jyan/progress
pdevine/fix-template
jyan/quant3
pdevine/ggla
mxyng/update-registry-domain
jmorganca/ggml-static
mxyng/create-context
jyan/v0.146
mxyng/layers-from-files
build_dist
bmizerany/noseek
royh-ls
royh-name
timeout
mxyng/server-timestamp
bmizerany/nosillyggufslurps
royh-params
jmorganca/llama-cpp-7c26775
royh-openai-delete
royh-show-rigid
jmorganca/enable-fa
jmorganca/no-error-template
jyan/format
royh-testdelete
bmizerany/fastverify
language_support
pdevine/ps-glitches
brucemacd/tokenize
bruce/iq-quants
bmizerany/filepathwithcoloninhost
mxyng/split-bin
bmizerany/client-registry
jmorganca/if-none-match
native
jmorganca/native
jmorganca/batch-embeddings
jmorganca/initcmake
jmorganca/mm
pdevine/showggmlinfo
modenameenforcealphanum
bmizerany/modenameenforcealphanum
jmorganca/done-reason
jmorganca/llama-cpp-8960fe8
ollama.com
bmizerany/filepathnobuild
bmizerany/types/model/defaultfix
rmdisplaylong
nogogen
bmizerany/x
modelfile-readme
bmizerany/replacecolon
jmorganca/limit
jmorganca/execstack
jmorganca/replace-assets
mxyng/tune-concurrency
jmorganca/testing
whitespace-detection
jmorganca/options
upgrade-all
scratch
cuda-search
mattw/airenamer
mattw/allmodelsonhuggingface
mattw/quantcontext
mattw/whatneedstorun
brucemacd/llama-mem-calc
mattw/faq-context
mattw/communitylinks
mattw/noprune
mattw/python-functioncalling
rename
mxyng/install
pulse
remove-first
editor
mattw/selfqueryingretrieval
cgo
mattw/howtoquant
api
matt/streamingapi
format-config
mxyng/extra-args
shell
update-nous-hermes
cp-model
upload-progress
fix-unknown-model
fix-model-names
delete-fix
insecure-registry
ls
deletemodels
progressbar
readme-updates
license-layers
skip-list
list-models
modelpath
matt/examplemodelfiles
distribution
go-opts
v0.30.0-rc3
v0.30.0-rc2
v0.30.0-rc1
v0.30.0-rc0
v0.23.1
v0.23.1-rc0
v0.23.0
v0.23.0-rc0
v0.22.1
v0.22.1-rc1
v0.22.1-rc0
v0.22.0
v0.22.0-rc1
v0.21.3-rc0
v0.21.2-rc1
v0.21.2
v0.21.2-rc0
v0.21.1
v0.21.1-rc1
v0.21.1-rc0
v0.21.0
v0.21.0-rc1
v0.21.0-rc0
v0.20.8-rc0
v0.20.7
v0.20.7-rc1
v0.20.7-rc0
v0.20.6
v0.20.6-rc1
v0.20.6-rc0
v0.20.5
v0.20.5-rc2
v0.20.5-rc1
v0.20.5-rc0
v0.20.4
v0.20.4-rc2
v0.20.4-rc1
v0.20.4-rc0
v0.20.3
v0.20.3-rc0
v0.20.2
v0.20.1
v0.20.1-rc2
v0.20.1-rc1
v0.20.1-rc0
v0.20.0
v0.20.0-rc1
v0.20.0-rc0
v0.19.0
v0.19.0-rc2
v0.19.0-rc1
v0.19.0-rc0
v0.18.4-rc1
v0.18.4-rc0
v0.18.3
v0.18.3-rc2
v0.18.3-rc1
v0.18.3-rc0
v0.18.2
v0.18.2-rc1
v0.18.2-rc0
v0.18.1
v0.18.1-rc1
v0.18.1-rc0
v0.18.0
v0.18.0-rc2
v0.18.0-rc1
v0.18.0-rc0
v0.17.8-rc4
v0.17.8-rc3
v0.17.8-rc2
v0.17.8-rc1
v0.17.8-rc0
v0.17.7
v0.17.7-rc2
v0.17.7-rc1
v0.17.7-rc0
v0.17.6
v0.17.5
v0.17.4
v0.17.3
v0.17.2
v0.17.1
v0.17.1-rc2
v0.17.1-rc1
v0.17.1-rc0
v0.17.0
v0.17.0-rc2
v0.17.0-rc1
v0.17.0-rc0
v0.16.3
v0.16.3-rc2
v0.16.3-rc1
v0.16.3-rc0
v0.16.2
v0.16.2-rc0
v0.16.1
v0.16.0
v0.16.0-rc2
v0.16.0-rc0
v0.16.0-rc1
v0.15.6
v0.15.5
v0.15.5-rc5
v0.15.5-rc4
v0.15.5-rc3
v0.15.5-rc2
v0.15.5-rc1
v0.15.5-rc0
v0.15.4
v0.15.3
v0.15.2
v0.15.1
v0.15.1-rc1
v0.15.1-rc0
v0.15.0-rc6
v0.15.0
v0.15.0-rc5
v0.15.0-rc4
v0.15.0-rc3
v0.15.0-rc2
v0.15.0-rc1
v0.15.0-rc0
v0.14.3
v0.14.3-rc3
v0.14.3-rc2
v0.14.3-rc1
v0.14.3-rc0
v0.14.2
v0.14.2-rc1
v0.14.2-rc0
v0.14.1
v0.14.0-rc11
v0.14.0
v0.14.0-rc10
v0.14.0-rc9
v0.14.0-rc8
v0.14.0-rc7
v0.14.0-rc6
v0.14.0-rc5
v0.14.0-rc4
v0.14.0-rc3
v0.14.0-rc2
v0.14.0-rc1
v0.14.0-rc0
v0.13.5
v0.13.5-rc1
v0.13.5-rc0
v0.13.4-rc2
v0.13.4
v0.13.4-rc1
v0.13.4-rc0
v0.13.3
v0.13.3-rc1
v0.13.3-rc0
v0.13.2
v0.13.2-rc2
v0.13.2-rc1
v0.13.2-rc0
v0.13.1
v0.13.1-rc2
v0.13.1-rc1
v0.13.1-rc0
v0.13.0
v0.13.0-rc0
v0.12.11
v0.12.11-rc1
v0.12.11-rc0
v0.12.10
v0.12.10-rc1
v0.12.10-rc0
v0.12.9-rc0
v0.12.9
v0.12.8
v0.12.8-rc0
v0.12.7
v0.12.7-rc1
v0.12.7-rc0
v0.12.7-citest0
v0.12.6
v0.12.6-rc1
v0.12.6-rc0
v0.12.5
v0.12.5-rc0
v0.12.4
v0.12.4-rc7
v0.12.4-rc6
v0.12.4-rc5
v0.12.4-rc4
v0.12.4-rc3
v0.12.4-rc2
v0.12.4-rc1
v0.12.4-rc0
v0.12.3
v0.12.2
v0.12.2-rc0
v0.12.1
v0.12.1-rc1
v0.12.1-rc2
v0.12.1-rc0
v0.12.0
v0.12.0-rc1
v0.12.0-rc0
v0.11.11
v0.11.11-rc3
v0.11.11-rc2
v0.11.11-rc1
v0.11.11-rc0
v0.11.10
v0.11.9
v0.11.9-rc0
v0.11.8
v0.11.8-rc0
v0.11.7-rc1
v0.11.7-rc0
v0.11.7
v0.11.6
v0.11.6-rc0
v0.11.5-rc4
v0.11.5-rc3
v0.11.5
v0.11.5-rc5
v0.11.5-rc2
v0.11.5-rc1
v0.11.5-rc0
v0.11.4
v0.11.4-rc0
v0.11.3
v0.11.3-rc0
v0.11.2
v0.11.1
v0.11.0-rc0
v0.11.0-rc1
v0.11.0-rc2
v0.11.0
v0.10.2-int1
v0.10.1
v0.10.0
v0.10.0-rc4
v0.10.0-rc3
v0.10.0-rc2
v0.10.0-rc1
v0.10.0-rc0
v0.9.7-rc1
v0.9.7-rc0
v0.9.6
v0.9.6-rc0
v0.9.6-ci0
v0.9.5
v0.9.4-rc5
v0.9.4-rc6
v0.9.4
v0.9.4-rc3
v0.9.4-rc4
v0.9.4-rc1
v0.9.4-rc2
v0.9.4-rc0
v0.9.3
v0.9.3-rc5
v0.9.4-citest0
v0.9.3-rc4
v0.9.3-rc3
v0.9.3-rc2
v0.9.3-rc1
v0.9.3-rc0
v0.9.2
v0.9.1
v0.9.1-rc1
v0.9.1-rc0
v0.9.1-ci1
v0.9.1-ci0
v0.9.0
v0.9.0-rc0
v0.8.0
v0.8.0-rc0
v0.7.1-rc2
v0.7.1
v0.7.1-rc1
v0.7.1-rc0
v0.7.0
v0.7.0-rc1
v0.7.0-rc0
v0.6.9-rc0
v0.6.8
v0.6.8-rc0
v0.6.7
v0.6.7-rc2
v0.6.7-rc1
v0.6.7-rc0
v0.6.6
v0.6.6-rc2
v0.6.6-rc1
v0.6.6-rc0
v0.6.5-rc1
v0.6.5
v0.6.5-rc0
v0.6.4-rc0
v0.6.4
v0.6.3-rc1
v0.6.3
v0.6.3-rc0
v0.6.2
v0.6.2-rc0
v0.6.1
v0.6.1-rc0
v0.6.0-rc0
v0.6.0
v0.5.14-rc0
v0.5.13
v0.5.13-rc6
v0.5.13-rc5
v0.5.13-rc4
v0.5.13-rc3
v0.5.13-rc2
v0.5.13-rc1
v0.5.13-rc0
v0.5.12
v0.5.12-rc1
v0.5.12-rc0
v0.5.11
v0.5.10
v0.5.9
v0.5.9-rc0
v0.5.8-rc13
v0.5.8
v0.5.8-rc12
v0.5.8-rc11
v0.5.8-rc10
v0.5.8-rc9
v0.5.8-rc8
v0.5.8-rc7
v0.5.8-rc6
v0.5.8-rc5
v0.5.8-rc4
v0.5.8-rc3
v0.5.8-rc2
v0.5.8-rc1
v0.5.8-rc0
v0.5.7
v0.5.6
v0.5.5
v0.5.5-rc0
v0.5.4
v0.5.3
v0.5.3-rc0
v0.5.2
v0.5.2-rc3
v0.5.2-rc2
v0.5.2-rc1
v0.5.2-rc0
v0.5.1
v0.5.0
v0.5.0-rc1
v0.4.8-rc0
v0.4.7
v0.4.6
v0.4.5
v0.4.4
v0.4.3
v0.4.3-rc0
v0.4.2
v0.4.2-rc1
v0.4.2-rc0
v0.4.1
v0.4.1-rc0
v0.4.0
v0.4.0-rc8
v0.4.0-rc7
v0.4.0-rc6
v0.4.0-rc5
v0.4.0-rc4
v0.4.0-rc3
v0.4.0-rc2
v0.4.0-rc1
v0.4.0-rc0
v0.4.0-ci3
v0.3.14
v0.3.14-rc0
v0.3.13
v0.3.12
v0.3.12-rc5
v0.3.12-rc4
v0.3.12-rc3
v0.3.12-rc2
v0.3.12-rc1
v0.3.11
v0.3.11-rc4
v0.3.11-rc3
v0.3.11-rc2
v0.3.11-rc1
v0.3.10
v0.3.10-rc1
v0.3.9
v0.3.8
v0.3.7
v0.3.7-rc6
v0.3.7-rc5
v0.3.7-rc4
v0.3.7-rc3
v0.3.7-rc2
v0.3.7-rc1
v0.3.6
v0.3.5
v0.3.4
v0.3.3
v0.3.2
v0.3.1
v0.3.0
v0.2.8
v0.2.8-rc2
v0.2.8-rc1
v0.2.7
v0.2.6
v0.2.5
v0.2.4
v0.2.3
v0.2.2
v0.2.2-rc2
v0.2.2-rc1
v0.2.1
v0.2.0
v0.1.49-rc14
v0.1.49-rc13
v0.1.49-rc12
v0.1.49-rc11
v0.1.49-rc10
v0.1.49-rc9
v0.1.49-rc8
v0.1.49-rc7
v0.1.49-rc6
v0.1.49-rc4
v0.1.49-rc5
v0.1.49-rc3
v0.1.49-rc2
v0.1.49-rc1
v0.1.48
v0.1.47
v0.1.46
v0.1.45-rc5
v0.1.45
v0.1.45-rc4
v0.1.45-rc3
v0.1.45-rc2
v0.1.45-rc1
v0.1.44
v0.1.43
v0.1.42
v0.1.41
v0.1.40
v0.1.40-rc1
v0.1.39
v0.1.39-rc2
v0.1.39-rc1
v0.1.38
v0.1.37
v0.1.36
v0.1.35
v0.1.35-rc1
v0.1.34
v0.1.34-rc1
v0.1.33
v0.1.33-rc7
v0.1.33-rc6
v0.1.33-rc5
v0.1.33-rc4
v0.1.33-rc3
v0.1.33-rc2
v0.1.33-rc1
v0.1.32
v0.1.32-rc2
v0.1.32-rc1
v0.1.31
v0.1.30
v0.1.29
v0.1.28
v0.1.27
v0.1.26
v0.1.25
v0.1.24
v0.1.23
v0.1.22
v0.1.21
v0.1.20
v0.1.19
v0.1.18
v0.1.17
v0.1.16
v0.1.15
v0.1.14
v0.1.13
v0.1.12
v0.1.11
v0.1.10
v0.1.9
v0.1.8
v0.1.7
v0.1.6
v0.1.5
v0.1.4
v0.1.3
v0.1.2
v0.1.1
v0.1.0
v0.0.21
v0.0.20
v0.0.19
v0.0.18
v0.0.17
v0.0.16
v0.0.15
v0.0.14
v0.0.13
v0.0.12
v0.0.11
v0.0.10
v0.0.9
v0.0.8
v0.0.7
v0.0.6
v0.0.5
v0.0.4
v0.0.3
v0.0.2
v0.0.1
Labels
Clear labels
amd
api
app
bug
build
cli
cloud
compatibility
context-length
create
docker
documentation
embeddings
feature request
feedback wanted
good first issue
gpt-oss
gpu
harmony
help wanted
image
install
intel
js
launch
linux
macos
memory
mlx
model
needs more info
networking
nvidia
ollama.com
performance
pull-request
python
question
registry
rendering
thinking
tools
top
vulkan
windows
wsl
Mirrored from GitHub Pull Request
No Label
feature request
Milestone
No items
No Milestone
Projects
Clear projects
No project
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: github-starred/ollama#5487
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @pmedina-42 on GitHub (Jan 21, 2025).
Original GitHub issue: https://github.com/ollama/ollama/issues/8513
Currently, the /chat endpoint includes the images field, but it only supports a single image. While this is functional, it introduces an additional layer of complexity when performing RAG with images embedded in base64.
For instance, if the content retriever returns multiple embeddings with the highest scores referencing different images, we need to manually reconstruct the full images (potentially missing lower-score records in case the embedding size isn't big enough to store the whole image in one record) and then make a separate /chat call for each retrieved image. Finally, all the responses must be summarized into one.
This manual process could be significantly simplified if the images field allowed for passing multiple images in a single request.
Is there any plan in the near future to support multiple images in the images field? This enhancement would greatly streamline workflows and reduce the overhead in scenarios like the one described above.
Additionally, I’m just getting started and don’t have much experience yet, so it’s possible that I’m overlooking something that could make this process easier. If there’s a better approach or workaround I might have missed, I’d be grateful for any guidance.
Thank you beforehand!
@rick-github commented on GitHub (Jan 21, 2025):
ollama supports multiple images, but most models do not. Note how llava merges the two images and describes a kitten with the collar from the puppy image.
@joshuabolick commented on GitHub (Dec 8, 2025):
Greetings all, we have been struggling with this too. We are using the Gemma3:12b model, sending two images in the request to the generate endpoint via python api, and it appears very much like it is merging the two images when we are trying to compare them.
Is this definitely true that this cannot be done with current ollama using the Gemma3:12b model?
We have also been doing this calling directly out to Google API using this same model and same request and it works no problem so it has been very puzzling.
Please let me know and thank you!
@rick-github commented on GitHub (Dec 8, 2025):
@joshuabolick commented on GitHub (Dec 8, 2025):
Okay thanks so it should work with this model then it sounds like?
We are using the generate endpoint, should that work the same way or?
@rick-github commented on GitHub (Dec 8, 2025):
@joshuabolick commented on GitHub (Dec 9, 2025):
Thank you so much for your help!
So for our usage we are using the Python ollama library (just installed the latest v0.6.1) and also updated to the very latest version of ollama (0.13.2) running on our Unbuntu server which has 2 NVIDIA GPUs that look to be balancing the request load correctly.
Anyway I am manually testing this on our server just with 2 images and you can see our prompt below (I know its long, we are still adjusting it) but it feels like the base64 encoded images or the requests may be being cached or something? I have been searching and found some various ways to try to disable any caching that you can see in the request options, but so far I am still getting the same summary for both frame a and frame b (I have attached these images frame a is a dog and frame b is a bird). I also have confirmed at least a couple times the images we are sending are correct, and even then decoded and saved them again after just to confirm we are sending the right images which from everything I can tell we are sending the right images.
Also for our use case we are analyzing a video at certain frame intervals so are iterating through the frames to compare them so we are making these requests anywhere from 50 to 200+ times per run we do.
When testing locally on my MacBook (it runs slow but still works) if I tried enough times it would one of the times finally give me the frame b summary of the bird, but mostly every time I tried I was still getting frame a and frame b summary both describing the dog as shown in the logs below.
Please let me know, I am not sure if I am doing something wrong or if I have found some other issue or maybe how I can disable cache so this always works with the correct summaries for both images? Thank you so much for your help!
Below is the python code for how we are sending the request and also the logged response as well:
Python code:

Logged response:
2025-12-09 11:42:19,989 - root - INFO - frame_pair: ['frame_000001.jpg', 'frame_000002.jpg']
2025-12-09 11:42:19,989 - root - INFO - model: gemma3:12b
2025-12-09 11:42:19,989 - root - INFO - frame1_path: ../scene_analysis_output/frames/frame_000001.jpg
2025-12-09 11:42:19,989 - root - INFO - frame2_path: ../scene_analysis_output/frames/frame_000002.jpg
2025-12-09 11:42:19,990 - root - INFO - prompt_text=
SYSTEM INSTRUCTION: SCENE GROUPING & OCR VALIDATOR
ROLE: You are a specialized video analysis system. Your task is to compare the two video frame images in this request (Frame A and Frame B) and decide if they belong to the same scene group.
CRITICAL DIRECTIVE: You must act as a strict OCR (Optical Character Recognition) Validator. The text overlay (specifically the DATE) is the absolute source of truth. Visual similarity of the room or characters is IRRELEVANT if the date text changes.
OUTPUT FORMAT: You MUST output ONLY a single, valid JSON object. No markdown formatting outside the code block.
TASK: FRAME COMPARISON LOGIC
STEP 1: TEXT EXTRACTION (CRITICAL)
First, transcribe any date/time overlay text found on Frame A and Frame B into the JSON fields provided.
STEP 2: VISUAL SUMMARIZATION
Briefly summarize the visual content (objects, setting, action) in the summary fields.
STEP 3: LOGIC GATES (Execute in Order)
GATE 1: THE "DIFFERENT DATE" TRAP (Highest Priority - BREAK)
GATE 2: THE "MISSING OVERLAY" TRAP (High Priority - BREAK)
GATE 3: THE "SAME DATE" OVERRIDE (High Priority - KEEP)
GATE 4: VISUAL ANALYSIS (Only if No Dates are Present)
REQUIRED JSON OUTPUT SCHEMA
Respond ONLY with a single valid JSON object.
{
"frame_a_date_text": "[Exact transcription of date text on Frame A. Write 'NONE' if no text.]",
"frame_b_date_text": "[Exact transcription of date text on Frame B. Write 'NONE' if no text.]",
"frame_a_summary": "[Summary of visual content in Frame A]",
"frame_b_summary": "[Summary of visual content in Frame B]",
"reasoning": "[Brief explanation. If dates differ, explicitly state: 'Date changed from X to Y'.]",
"same_scene": [boolean: true or false]
}
2025-12-09 11:42:19,995 - httpcore.connection - DEBUG - connect_tcp.started host='127.0.0.1' port=11434 local_address=None timeout=None socket_options=None
2025-12-09 11:42:19,995 - httpcore.connection - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7effd3170730>
2025-12-09 11:42:19,995 - httpcore.http11 - DEBUG - send_request_headers.started request=<Request [b'POST']>
2025-12-09 11:42:19,995 - httpcore.http11 - DEBUG - send_request_headers.complete
2025-12-09 11:42:19,995 - httpcore.http11 - DEBUG - send_request_body.started request=<Request [b'POST']>
2025-12-09 11:42:19,995 - httpcore.http11 - DEBUG - send_request_body.complete
2025-12-09 11:42:19,995 - httpcore.http11 - DEBUG - receive_response_headers.started request=<Request [b'POST']>
2025-12-09 11:42:27,207 - httpcore.http11 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Content-Type', b'application/json; charset=utf-8'), (b'Date', b'Tue, 09 Dec 2025 18:42:27 GMT'), (b'Transfer-Encoding', b'chunked')])
2025-12-09 11:42:27,208 - httpx - INFO - HTTP Request: POST http://127.0.0.1:11434/api/generate "HTTP/1.1 200 OK"
2025-12-09 11:42:27,208 - httpcore.http11 - DEBUG - receive_response_body.started request=<Request [b'POST']>
2025-12-09 11:42:27,208 - httpcore.http11 - DEBUG - receive_response_body.complete
2025-12-09 11:42:27,208 - httpcore.http11 - DEBUG - response_closed.started
2025-12-09 11:42:27,208 - httpcore.http11 - DEBUG - response_closed.complete
2025-12-09 11:42:27,208 - root - INFO - response=```json
{
"frame_a_date_text": "NONE",
"frame_b_date_text": "NONE",
"frame_a_summary": "Close-up of a small, tan and white dog with floppy ears and a blue and white patterned collar, standing on a wooden deck.",
"frame_b_summary": "Close-up of a small, tan and white dog with floppy ears and a blue and white patterned collar, standing on a wooden deck.",
"reasoning": "No date text found on either frame.",
"same_scene": true
}
@joshuabolick commented on GitHub (Dec 9, 2025):
Oh yes the one other thing to add, is our system can also just use an API key to call out directly to Google API using the same Gemma3:12b model, and when we do it this way the image summaries always appear to be correct. The code leading up to that call is pretty much all the same except for calling out to google you upload the images vs encode them for the Ollama request...
Please let me know and thanks again so much for your help!
@rick-github commented on GitHub (Dec 9, 2025):
It's much easier to test things if you supply the raw text. For example, I assume that the text starting with "SYSTEM INSTRUCTION" is the value of
PROMPT_TEXT, but because you've pasted the text in without a markdown block, it's being rendered by the browser and I don't know if detail is being lost. Also, screenshotting the python code means I can't cut and paste to test it.@joshuabolick commented on GitHub (Dec 9, 2025):
Thanks sorry about that, here it is:
Also here is that python code:
Thank you again so much for your help!
@rick-github commented on GitHub (Dec 9, 2025):
Internally, the ollama server just tokenizes the images and prepends them to the start of the prompt. They don't have any identifiers so the model can be confused about which image is being asked about when the prompt targets a specific image. Adding
imgtags can help the model disambiguate image references:This assertion is incorrect. All this does is reduce the size of the context to the minimum supported by the model, 2048 tokens in the case of image models. Ollama does cache prompting but does not maintain a memory of previous interactions. The cache will be invalidated at the point the prompt deviates from the previous prompt. Unloading the model will also do this, but:
keep_aliveis not a generation option, it is a runner option:@joshuabolick commented on GitHub (Dec 9, 2025):
Okay thank you very much!
So where you put the keep_alive there inside of the generate call is correct then?
Also do you think it was the image tags in the prompt or moving the keep_alive to the proper place or both that got us the accurate result?
Thank you again for your help I very much appreciate it!!
@joshuabolick commented on GitHub (Dec 9, 2025):
Also just to confirm, when you say "The cache will be invalidated at the point the prompt deviates from the previous prompt." I am assuming this means the prompt text alone and having new images in the request will not invalidate the cache right?
If we are using the same prompt for each of these image pair comparisons will this cause us issues or?
@rick-github commented on GitHub (Dec 9, 2025):
Yes.
Adding the image tags.
Images are prepended to the prompt, so a new image will invalidate the entire prompt cache.
No issues.
@rick-github commented on GitHub (Dec 9, 2025):
Let me correct myself on the image/prompt interaction. If the client is always sending the same amount of images with the same prompt, then the prompt cache will be used. The images themselves are a set of tokens that are processed in a separate batch are not subject to prompt caching. So while the text prompt will be re-used, there should be no issues with image bleedover. If there is, that would be a bug, and you should open a new issue to have it dealt with.
@joshuabolick commented on GitHub (Dec 9, 2025):
Thank you again @rick-github this has been extremely helpful!
If you have a buy me a coffee thing or something I will buy you at least a couple! haha thanks again cheers! :)
@joshuabolick commented on GitHub (Dec 10, 2025):
Hey @rick-github, I just wanted to follow up. So making that change to add the tags for the images did definitely improve the results but I am still seeing it happen sometimes, especially since we are just iterating around through frame images from a video.
Also one thing I forgot to mention is for our comparisons, we are for example comparing frame 100 to frame 200 as that pair, then next iteration we are then comparing image 200 to image 300 and so on etc so on the next iteration we are sending that frame 200 again now as img-0 where it was img-1 on the previous iteration so I am not sure if that could somehow be potentially causing this issue?
But here attached are a couple image comparisons where you can see if seems to be using the same image for both and also sometimes it will miss the date text overlay which is definitely important for our process.
Anyway I guess just wanted to mention that detail about how we are making these requests and also just wondering if there is anything else I can try to prevent this from happening where sometimes it appears to be using the wrong images in the comparisons? On other iterations it works correctly so it is not always using the wrong images but from what I can tell sometimes it is.
Please let me know what you think and thanks again for all your help!
@joshuabolick commented on GitHub (Dec 10, 2025):
Also here attached are those images if you want to use them for testing, also let me know any other info or anything else I can do to help! Mainly it is just very curious because when we run switching over to call directly out to Google API with same model, this does not happen...
Sorry I had to remove those images but I can provide other examples if needed just let me know thank you!
@joshuabolick commented on GitHub (Dec 29, 2025):
Hey @rick-github hope you are doing well and I just wanted to follow up.
We are still seeing this happen sometimes even with the image tags in the prompt, where it looks like when sending two images to describe and then compare in the Ollama request, sometimes it still gives the exact same description for both images and then says they are the same.
So from our testing so far this does seem like some sort of image bleedover, any other ideas or things I can try and test here? Or do you think I should go ahead and open a new issue to have it dealt with?
Please let me know when you get a chance and thanks again!