[
https://issues.apache.org/jira/browse/CAMEL-26205?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Work on CAMEL-26205 started by Claus Ibsen.
-------------------------------------------
> camel-langchain4j-embeddings - bytes, stream and file bodies cannot be
> embedded, and a stale EMBEDDINGS header sends a later ADD to the batch path
> --------------------------------------------------------------------------------------------------------------------------------------------------
>
> Key: CAMEL-26205
> URL: https://issues.apache.org/jira/browse/CAMEL-26205
> Project: Camel
> Issue Type: Bug
> Components: camel-langchain4j-embeddings
> Reporter: Claus Ibsen
> Assignee: Claus Ibsen
> Priority: Minor
> Fix For: 4.24.0
>
>
> Found while adding the catalog body types of langchain4j-embeddings
> (CAMEL-24961, PR #28401).
> h4. 1. Only a String converts to a TextSegment: bytes, streams and files fail
> {{LangChain4jEmbeddingsProducer.processSingle}} (main 2a465aa4814c, line 67)
> reads the body with {{getMandatoryBody(TextSegment.class)}}, and
> {{LangChain4jEmbeddingsConverter}} (line 32) converts only a {{String}}. A
> {{byte[]}}, {{InputStream}} or file consumer body ({{GenericFile}}) fails
> with a no type conversion error, so a
> {{from("file:...").to("langchain4j-embeddings:...")}} route needs a
> {{convertBodyTo(String.class)}}. Checked on 4.24.0-SNAPSHOT with
> AllMiniLmL6V2.
> Proposed: read the body as a String (the type converter handles bytes,
> streams and files) before building the {{TextSegment}}.
> h4. 2. The single-text path does not clear a stale EMBEDDINGS header
> {{processSingle}} sets {{EMBEDDING}}, {{VECTOR}} and {{TEXT_SEGMENT}} (lines
> 142-144) but leaves an {{EMBEDDINGS}} header from an earlier batch call in
> the same exchange (set at line 164). A later langchain4j-embeddingstore ADD
> checks {{EMBEDDINGS}} first and takes the batch path, storing the old batch
> instead of the new embedding. Read in the code, not run.
> Proposed: remove {{EMBEDDINGS}} and {{TEXT_SEGMENTS}} in the single path (and
> {{EMBEDDING}}/{{TEXT_SEGMENT}} in the batch path).
> h4. 3. The RESPONSE_MODEL header is declared but never set
> {{LangChain4jEmbeddingsHeaders.RESPONSE_MODEL}} (line 39,
> {{CamelLangChain4jEmbeddingsResponseModel}}) is documented as a header of the
> component, but the producer never sets it (it sets only {{REQUEST_MODEL}},
> lines 129 and 150). Read in the code, not run.
> Proposed: set it when the response exposes a model name, or remove it from
> the documented headers.
> h4. 4. The TEXT_SEGMENT header javaType has a leading space
> {{LangChain4jEmbeddingsHeaders}} (line 52) and {{LangChain4jEmbeddings}}
> (line 53) declare {{javaType = " dev.langchain4j.data.segment.TextSegment"}}
> with a leading space, which ends up in the catalog metadata. Read in the
> code, not run.
> Proposed: remove the leading space and regenerate.
> _Claude Code on behalf of davsclaus_
--
This message was sent by Atlassian Jira
(v10.3.26#10030026)