[
https://issues.apache.org/jira/browse/CAMEL-26210?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Work on CAMEL-26210 started by Claus Ibsen.
-------------------------------------------
> camel-spring-ai-vector-store - DELETE deletes the ids a previous ADD or
> SIMILARITY_SEARCH put in the header, and ADD stores a float[] body as text
> --------------------------------------------------------------------------------------------------------------------------------------------------
>
> Key: CAMEL-26210
> URL: https://issues.apache.org/jira/browse/CAMEL-26210
> Project: Camel
> Issue Type: Bug
> Components: camel-spring-ai
> Reporter: Claus Ibsen
> Assignee: Claus Ibsen
> Priority: Major
> Fix For: 4.24.0
>
>
> Found while adding the catalog body types of spring-ai-vector-store
> (CAMEL-24961, PR #28401).
> h4. 1. DELETE reads the DocumentIds header that ADD and SIMILARITY_SEARCH set
> {{SpringAiVectorStoreProducer.processDelete}} (main 2a465aa4814c, line 164)
> reads {{CamelSpringAiVectorStoreDocumentIds}} before the body; ADD (line 143)
> and SIMILARITY_SEARCH (line 247) set that header. A later DELETE in the same
> route deletes those ids instead of the ids in the body, for example
> everything a search just found. Checked on 4.24.0-SNAPSHOT with a
> {{SimpleVectorStore}}.
> Proposed: read the ids from the body first, or use a separate input header
> from the output one.
> h4. 2. ADD with a float[] body and no input-text header stores "[F@..."
> Without {{CamelSpringAiEmbeddingInputText}}, a {{float[]}} body reaches the
> last branch (line 123) and is stored as a Document with the text of
> {{float[].toString()}}. Checked on 4.24.0-SNAPSHOT with a
> {{SimpleVectorStore}}.
> Proposed: fail when the body is a vector without the input text.
> h4. 3. SIMILARITY_SEARCH after spring-ai-embeddings searches with
> float[].toString()
> {{processSimilaritySearch}} (line 205) uses {{getBody(String.class)}} as the
> query, so after spring-ai-embeddings (body {{float[]}}) it searches for the
> text of {{float[].toString()}}; the {{CamelSpringAiEmbeddingInputText}}
> header with the original text is ignored. Checked on 4.24.0-SNAPSHOT with a
> {{SimpleVectorStore}}.
> Proposed: use the input-text header (or fail) when the body is a vector.
> h4. 4. A leftover CamelSpringAiEmbeddingInputText header makes ADD ignore the
> body
> In {{processAdd}} (lines 79-82) the input-text header wins over any body, so
> after one spring-ai-embeddings call an ADD of a {{Document}} or text body
> later in the route stores the old header text instead. Checked on
> 4.24.0-SNAPSHOT with a {{SimpleVectorStore}}.
> Proposed: use the header only together with a vector body (the case of line
> 75).
> h4. 5. ADD with a List of Map drops every element, then fails
> Lines 113-121 keep only {{Document}} and {{String}} elements and skip the
> rest without a message; a List of Maps leaves an empty list and
> {{vectorStore.add}} fails with "Documents list cannot be empty". Checked on
> 4.24.0-SNAPSHOT with a {{SimpleVectorStore}}.
> Proposed: fail with a message that names the unsupported element type (or
> convert a Map with text/metadata keys).
> h4. 6. DELETE DocumentsDeleted counts the ids asked, not deleted
> Line 180 sets {{CamelSpringAiVectorStoreDocumentsDeleted}} to
> {{documentIds.size()}}, also for ids that do not exist. Checked on
> 4.24.0-SNAPSHOT with a {{SimpleVectorStore}}.
> Proposed: document it as the number of ids requested (the VectorStore API
> does not return a count).
> _Claude Code on behalf of davsclaus_
--
This message was sent by Atlassian Jira
(v10.3.26#10030026)