GitHub Repo
Dify Proposes Weaviate Score-Passing Fix for Keyword Matches Dropped by Retrieval Pipeline
On November 5, the Dify community proposed a patch to request and pass BM25 scores for Weaviate full-text search, addressing an issue where matched documents could still be filtered out. The proposal has not been merged, and full backend validation remains pending.

On November 5, the Dify community submitted PR #45642, proposing a fix for Weaviate full-text search: although the database found documents, the integration layer did not return their relevance scores, so the downstream retrieval pipeline could discard the matches. As of this check, the proposal is still open for review and should not be treated as a fix in an official release. Patch proposal
The issue has been reproduced. The original report used a self-hosted Dify 1.14.1 instance to query a knowledge base with alert text. A direct call to Weaviate returned a BM25 score of about 10.29, while the retrieval resources from the Dify Chat API were empty. The report says the missing score was treated as 0.0 in Dify and then filtered out. This points to a useful troubleshooting step: empty retrieval results may also stem from fields not being passed between the database and the application. Issue report
According to the proposal, the patch covers both the initial query and the retry after fetching additional properties. It adds MetadataQuery(score=True) to both paths, converts the returned score to a float, and writes it to the document’s metadata["score"]; missing or unparseable values are left as they are. Weaviate’s official documentation also specifies that the Python client can request the BM25F score with this parameter and read it from obj.metadata.score. Implementation details, Weaviate documentation
For engineers operating RAG systems, this suggests comparing raw database matches with the results retained by the application layer before changing embedding models or chunking strategies. A suggested validation method is to use fixed documents and exact keywords, then check match counts, score fields, and filter conditions at each stage. This approach follows from the failure mechanism described above; it is not a reported performance gain.
The author says 55 local tests passed and one was skipped, and that the two added regression tests fail against the unpatched implementation. However, the tests use application-layer import stubs, and full backend linting and type checks have not yet been run. Next, track maintainer review, integration tests against a real database, and inclusion in a release. The scope of the impact should not be generalized to other vector databases. Validation limitations