langgenius / langgenius/dify-plugins

[yaxuanm/qdrant] Hybrid Search fails on named-vector collections (dense/sparse)

Open
#2,575 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug project#dify-plugins
Dominant language
Python
Stars
553
Forks
878
Avg merge
1d 2h
Merged PRs (30d)
125

Description

Plugin

yaxuanm/qdrant v0.0.1

Problem

Hybrid Search fails on collections with named vectors (dense, sparse) created outside the plugin (e.g. custom embed scripts).
Error: Qdrant responded with HTTP 400: Wrong input: Not existing vector name error:

Root cause

  1. Operation inference checks text before hybrid indicators → runs operation: "query" instead of hybrid_search
  2. Plain query sends unnamed vector to /points/search — invalid when collection has only named vectors
  3. Sparse vector is not generated from text in hybrid path (only dense embedding is created)

Reproduction

  • Collection: named vectors dense (3072) + sparse
  • Tool: Qdrant · Hybrid Search
  • Inputs: text, using_dense: dense, using_sparse: sparse, fusion_method: rrf
  • Embedding: text-embedding-3-large

Expected

hybrid_search/points/query with prefetch using dense and sparse

Actual

query/points/search with flat vector array (no vector name)

Fix verified locally (v0.0.2)

  • Route hybrid before text→query
  • Set operation: hybrid_search on hybrid tool YAML
  • Generate sparse via fastembed (Qdrant/bm25)
  • Add fastembed dependency

Environment

  • Dify 1.14.2 (self-hosted)
  • Qdrant Cloud
  • Plugin: yaxuanm/qdrant 0.0.1 from Marketplace

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing the named-vector case with the Qdrant Hybrid Search tool and trace operation inference from the text input. Inspect the hybrid tool YAML and the dense/sparse embedding path, including the fastembed dependency, then verify that hybrid_search uses /points/query with named dense and sparse vectors rather than /points/search with an unnamed vector.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
backend, databases, search
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
58/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.