I’m using Milvus 2.5 with the Go SDK (v2.5.1) and ran into an issue when inserting data into a collection that uses a Function-defined field together with RowBasedInsertOption.
In my collection schema, I defined a Function that generates a SparseVector field (for example, a BM25 embedding) from a VARCHAR input field like search. The sparse field is an output of the Function and, according to the documentation, should not need to be provided explicitly during insertion.
However, when I insert data using RowBasedInsertOption and only include the search field in the row data, the Go client fails validation and reports that the sparse field is missing.
If I try to work around this by manually adding the sparse field to the row data, the insert request then fails on the server side. Milvus reports that too many fields were provided, because the sparse field is effectively sent twice: once from the row data and once generated by the Function.
As a result, there seems to be no valid way to insert data using RowBasedInsertOption when the schema includes a Function-generated field.
My question is:
Why does
RowBasedInsertOptionin the Milvus Go SDK still require Function output fields (such as a sparse vector) to be present in row data? Is this expected behavior, or a known bug in the Go client?