[Refactor/Chore] Milvus add_texts() returns dictionary keys instead of inserted primary keys
- Dominant language
- TypeScript
- Stars
- 156k
- Forks
- 24.6k
- Avg merge
- 22h 9m
- Merged PRs (30d)
- 610
Description
### Self Checks
- [x] I have read the [Contributing Guide](https://github.com/langgenius/dify/blob/main/CONTRIBUTING.md) and [Language Policy](https://github.com/langgenius/dify/issues/1542).
- [x] This is only for refactors or chores; if you would like to ask a question, please head to [Discussions](https://github.com/langgenius/dify/discussions/categories/general).
- [x] I have searched for existing issues [search for existing issues](https://github.com/langgenius/dify/issues), including closed ones.
- [x] I confirm that I am using English to submit this report, otherwise it will be closed.
- [x] 【中文用户 & Non English User】请使用英语提交,否则会被关闭 :)
- [x] Please do not modify this template :) and fill in all the required fields.
### Description
### Title
Milvus add_texts() returns dictionary keys instead of inserted primary keys
### Description
MilvusClient.insert() returns a dictionary in PyMilvus 2.6.12 and 3.0.1:
{
"insert_count": 2,
"ids": ["id-1", "id-2"],
"cost": 0,
}
The current implementation passes the entire result to list.extend():
ids = self._client.insert(...)
pks.extend(ids)
Iterating over a dictionary yields its keys, so add_texts() returns:
["insert_count", "ids", "cost"]
instead of the inserted primary keys.
The existing unit test mocks insert() as returning a list, which hides the issue.
The result should be handled as follows:
result = self._client.insert(...)
pks.extend(result.get("ids", []))
The unit test should also use the actual dictionary response structure and verify
that add_texts() returns the values from the ids field.
### Motivation
_No response_
### Additional Context
_No response_
Contributor guide
Assessment
This issue has not been assessed yet.