langgenius / langgenius/dify

[Refactor/Chore] Milvus add_texts() returns dictionary keys instead of inserted primary keys

Open
#41,036 0 comments 1 reaction 1 assignee Claimed by @41tair View on GitHub
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.