VDB Migration #16665

Closed
opened 2026-02-21 19:27:07 -05:00 by yindo · 3 comments
Owner

Originally created by @DavideDelbianco on GitHub (Sep 2, 2025).

Originally assigned to: @JohnJyong on GitHub.

Self Checks

  • I have read the Contributing Guide and Language Policy.
  • This is only for bug report, if you would like to ask a question, please head to Discussions.
  • I have searched for existing issues search for existing issues, including closed ones.
  • I confirm that I am using English to submit this report, otherwise it will be closed.
  • 【中文用户 & Non English User】请使用英语提交,否则会被关闭 :)
  • Please do not modify this template :) and fill in all the required fields.

Dify version

1.7.2

Cloud or Self Hosted

Self Hosted (Docker)

Steps to reproduce

I've tested the Vector DB Migration going from Weaviate to Qdrant.
I've kept both services running and set dify to use qdrant
I've launched the command vdb-migrate and it reported a success.

✔️ Expected Behavior

Metadata should be migrated too

Actual Behavior

Metadata were not migrated

I've also noticed that when setting weaviate with top k 10, it returns 10 docs with decreasing score, in the KB node setting semantic to 3, keeps 3 nodes out of the 10 received.
QDrant return 4 docs instead of 10, and keeps 1 instead of 3.

I supposed it depends on how the VDB works. and this one is not a bug

Originally created by @DavideDelbianco on GitHub (Sep 2, 2025). Originally assigned to: @JohnJyong on GitHub. ### 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 bug report, 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. ### Dify version 1.7.2 ### Cloud or Self Hosted Self Hosted (Docker) ### Steps to reproduce I've tested the Vector DB Migration going from Weaviate to Qdrant. I've kept both services running and set dify to use qdrant I've launched the command vdb-migrate and it reported a success. ### ✔️ Expected Behavior Metadata should be migrated too ### ❌ Actual Behavior Metadata were not migrated I've also noticed that when setting weaviate with top k 10, it returns 10 docs with decreasing score, in the KB node setting semantic to 3, keeps 3 nodes out of the 10 received. QDrant return 4 docs instead of 10, and keeps 1 instead of 3. I supposed it depends on how the VDB works. and this one is not a bug
yindo added the 👻 feat:rag label 2026-02-21 19:27:07 -05:00
yindo closed this issue 2026-02-21 19:27:07 -05:00
Author
Owner

@dosubot[bot] commented on GitHub (Sep 2, 2025):

The vdb-migrate command in Dify only transfers a limited set of technical metadata fields (doc_id, doc_hash, document_id, dataset_id) when migrating from Weaviate to Qdrant. Custom or user-defined metadata is not included in the migration, which is why you’re seeing metadata loss after switching vector DBs. Both Qdrant and Weaviate can store arbitrary metadata, but the migration logic itself is the bottleneck—preserving only those technical fields in the new Document objects. To migrate all metadata, you’d need to revise the migration script to pull and include all original metadata fields from the source DB source.

For legacy metadata stored in doc_metadata, there’s a separate command, old-metadata-migration, which migrates those fields to the DatasetMetadata tables, but this is distinct from vector DB migration.

Regarding the difference in returned document counts: the top_k parameter isn’t hardcoded and can be set higher, but the actual number of results depends on the backend’s retrieval logic, score thresholds, and defaults. Recent changes have adjusted these behaviors, so you may see different results between Weaviate and Qdrant even with the same top_k setting source.

If you need full metadata migration, you’ll need to customize the migration logic to preserve all metadata fields. For more consistent retrieval, check your top_k and score_threshold settings in both Dify and your vector DB configs.

To reply, just mention @dosu.


How did I do? Good | Irrelevant | Incorrect | Verbose | Hallucination | Report 🐛 | Other  Chat with Dosu Join Discord Share on X

@dosubot[bot] commented on GitHub (Sep 2, 2025): <!-- Answer --> The vdb-migrate command in Dify only transfers a limited set of technical metadata fields (doc_id, doc_hash, document_id, dataset_id) when migrating from Weaviate to Qdrant. Custom or user-defined metadata is not included in the migration, which is why you’re seeing metadata loss after switching vector DBs. Both Qdrant and Weaviate can store arbitrary metadata, but the migration logic itself is the bottleneck—preserving only those technical fields in the new Document objects. To migrate all metadata, you’d need to revise the migration script to pull and include all original metadata fields from the source DB [source](https://github.com/langgenius/dify/blob/d33dfee8a3b1fa7399428a3c4c9bf9a220a98ab8/api/commands.py). For legacy metadata stored in doc_metadata, there’s a separate command, old-metadata-migration, which migrates those fields to the DatasetMetadata tables, but this is distinct from vector DB migration. Regarding the difference in returned document counts: the top_k parameter isn’t hardcoded and can be set higher, but the actual number of results depends on the backend’s retrieval logic, score thresholds, and defaults. Recent changes have adjusted these behaviors, so you may see different results between Weaviate and Qdrant even with the same top_k setting [source](https://github.com/langgenius/dify/pull/24897). If you need full metadata migration, you’ll need to customize the migration logic to preserve all metadata fields. For more consistent retrieval, check your top_k and score_threshold settings in both Dify and your vector DB configs. <!-- Dosu Comment Footer --> *To reply, just mention [@dosu](https://go.dosu.dev/dosubot).* --- <sup>How did I do? [Good](https://app.dosu.dev/response-feedback/c9bd6063-c940-41a5-880c-43a124fcb677?feedback_type=great_response) | [Irrelevant](https://app.dosu.dev/response-feedback/c9bd6063-c940-41a5-880c-43a124fcb677?feedback_type=irrelevant_answer) | [Incorrect](https://app.dosu.dev/response-feedback/c9bd6063-c940-41a5-880c-43a124fcb677?feedback_type=incorrect_sources) | [Verbose](https://app.dosu.dev/response-feedback/c9bd6063-c940-41a5-880c-43a124fcb677?feedback_type=too_verbose) | [Hallucination](https://app.dosu.dev/response-feedback/c9bd6063-c940-41a5-880c-43a124fcb677?feedback_type=hallucination) | [Report 🐛](https://app.dosu.dev/response-feedback/c9bd6063-c940-41a5-880c-43a124fcb677?feedback_type=bug_report) | [Other](https://app.dosu.dev/response-feedback/c9bd6063-c940-41a5-880c-43a124fcb677?feedback_type=other)</sup>&nbsp;&nbsp;[![Chat with Dosu](https://dosu.dev/dosu-chat-badge.svg)](https://app.dosu.dev/6088a4f4-073a-43f3-b3d4-4f06fb0c05a0/ask?utm_source=github)&nbsp;[![Join Discord](https://img.shields.io/badge/join-5865F2?logo=discord&logoColor=white&label=)](https://go.dosu.dev/discord-bot)&nbsp;[![Share on X](https://img.shields.io/badge/X-share-black)](https://twitter.com/intent/tweet?text=%40dosu_ai%20helped%20me%20solve%20this%20issue!&url=https%3A//github.com/langgenius/dify/issues/25014)
Author
Owner

@DavideDelbianco commented on GitHub (Oct 6, 2025):

metadata is an important part of VDB, they need to be copied
@dosu don't stale this issue, it was assigned...

@DavideDelbianco commented on GitHub (Oct 6, 2025): metadata is an important part of VDB, they need to be copied @dosu don't stale this issue, it was assigned...
Author
Owner

@dosubot[bot] commented on GitHub (Oct 6, 2025):

@crazywoola The user has confirmed that metadata migration is crucial and the issue remains relevant, as they emphasized the need to copy metadata fully during VDB migration. Could you please assist with this?

@dosubot[bot] commented on GitHub (Oct 6, 2025): @crazywoola The user has confirmed that metadata migration is crucial and the issue remains relevant, as they emphasized the need to copy metadata fully during VDB migration. Could you please assist with this?
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: langgenius/dify#16665