[ 
https://issues.apache.org/jira/browse/CAMEL-26210?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18136912#comment-18136912
 ] 

Claus Ibsen commented on CAMEL-26210:
-------------------------------------

PR: https://github.com/apache/camel/pull/29036

All six points are handled. DELETE takes the ids from the body first (an id, a 
Document, or a List of ids or Documents), and the header only without a body. 
The embeddings input-text headers are used only with a float[] or List of 
float[] body. A vector without its text, mismatched texts, and unknown List 
elements fail with a message. SIMILARITY_SEARCH with a float[] body searches 
for the input-text header. DocumentsDeleted is documented as the number of ids 
given to the vector store. There is an upgrade guide entry for 4.24.

_Claude Code on behalf of Claus Ibsen (davsclaus)_

> 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)

Reply via email to