From 5fe7ba1b9b1c7f4d67e1ff52adc7bd4285d0e01b Mon Sep 17 00:00:00 2001 From: Jeffrey Morgan Date: Mon, 20 Oct 2025 16:47:05 -0700 Subject: [PATCH] runner: always truncate embeddings requests (#12714) --- integration/embed_test.go | 13 +++++++++++++ runner/llamarunner/runner.go | 9 ++++++++- runner/ollamarunner/runner.go | 9 ++++++++- 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/integration/embed_test.go b/integration/embed_test.go index a6852448..3a8bcd24 100644 --- a/integration/embed_test.go +++ b/integration/embed_test.go @@ -258,6 +258,19 @@ func TestAllMiniLMEmbedTruncate(t *testing.T) { } }, }, + { + name: "boundary truncation", + request: api.EmbedRequest{ + Model: "all-minilm", + Input: "why is the sky blue? Why is the sky blue? hi there my", + Options: map[string]any{"num_ctx": 16}, + }, + check: func(res *api.EmbedResponse, err error) { + if err != nil { + t.Fatal(err) + } + }, + }, } for _, req := range cases { diff --git a/runner/llamarunner/runner.go b/runner/llamarunner/runner.go index 163aaa62..a5e7eb33 100644 --- a/runner/llamarunner/runner.go +++ b/runner/llamarunner/runner.go @@ -697,7 +697,14 @@ func (s *Server) embeddings(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json") - seq, err := s.NewSequence(req.Content, nil, NewSequenceParams{embedding: true}) + seq, err := s.NewSequence(req.Content, nil, NewSequenceParams{ + embedding: true, + + // TODO (jmorganca): this should be provided by the server via the + // request options and truncated here in the runner, instead of relying on + // the server's truncate logic + truncate: true, + }) if err != nil { http.Error(w, fmt.Sprintf("Failed to create new sequence: %v", err), http.StatusInternalServerError) return diff --git a/runner/ollamarunner/runner.go b/runner/ollamarunner/runner.go index af212ece..7b72bf92 100644 --- a/runner/ollamarunner/runner.go +++ b/runner/ollamarunner/runner.go @@ -946,7 +946,14 @@ func (s *Server) embeddings(w http.ResponseWriter, r *http.Request) { } w.Header().Set("Content-Type", "application/json") - seq, err := s.NewSequence(req.Content, nil, NewSequenceParams{embedding: true}) + seq, err := s.NewSequence(req.Content, nil, NewSequenceParams{ + embedding: true, + + // TODO (jmorganca): this should be provided by the server via the + // request options and truncated here in the runner, instead of relying on + // the server's truncate logic + truncate: true, + }) if err != nil { http.Error(w, fmt.Sprintf("failed to create new sequence: %v", err), http.StatusInternalServerError) return