Skip to content

feat: Add support for Qdrant Vector Search#124

Open
Anush008 wants to merge 2 commits intoagentset-ai:mainfrom
Anush008:qdrant
Open

feat: Add support for Qdrant Vector Search#124
Anush008 wants to merge 2 commits intoagentset-ai:mainfrom
Anush008:qdrant

Conversation

@Anush008
Copy link
Copy Markdown

@Anush008 Anush008 commented Apr 2, 2026

Description

This PR adds support for using Qdrant as a vector search provider in AgentSet

Testing

I've unit tested this integration against a local Qdrant instance.

Setup

You can run Qdrant with

docker run -p 6333:6333 qdrant/qdrant

The dashboard is accessible at http://localhost:6333/dashboard

Documentation

I've drafted documentation for the integration to be added to https://qdrant.tech/documentation/platforms/.

Greptile Summary

This PR adds Qdrant as a self-hosted vector store provider, including a full VectorStore implementation, a filter translator that maps the existing query DSL to Qdrant's condition model, schema validation, and UI wiring. The integration covers semantic, keyword, and hybrid search modes and correctly gates keyword search availability.

  • P1 — crash in upsert: nodes[0]!.vector.length at packages/engine/src/vector-store/qdrant/index.ts:176 will throw a TypeError if chunks is empty; an early-exit guard is needed before this line.

Confidence Score: 4/5

Safe to merge after addressing the empty-chunks crash in upsert.

One P1 defect: upsert will throw a TypeError when called with an empty array due to the unguarded non-null assertion on nodes[0]!. The rest of the implementation is well-structured, the filter translator handles all mapped operators correctly, and the schema/routing integration is clean.

packages/engine/src/vector-store/qdrant/index.ts — empty-chunks crash and redundant payload-index call.

Important Files Changed

Filename Overview
packages/engine/src/vector-store/qdrant/index.ts New Qdrant VectorStore implementation; crashes on empty chunks array in upsert, and creates payload index unconditionally on every first upsert to an existing collection.
packages/engine/src/vector-store/qdrant/filter.ts New Qdrant filter translator; handles all supported operators correctly including range, datetime, $all, and $nin via match.except.
packages/validation/src/vector-store/qdrant.ts Zod schema for Qdrant config; correctly defines provider, url, and optional apiKey fields.
packages/engine/src/vector-store/index.ts Adds QDRANT case to the provider switch; correctly wires url and apiKey from config.
apps/web/src/app/api/(public-api)/v1/namespace/[namespaceId]/search/route.ts Renamed isPinecone to isKeywordUnsupported; Qdrant is correctly excluded from the unsupported list since it supports keyword search.
apps/web/src/components/create-namespace/models.ts Removes comingSoon flag for Qdrant and derives the provider value directly from the schema.
packages/validation/src/vector-store/index.ts Adds QdrantVectorStoreConfigSchema to both the createVectorStoreSchema discriminated union and re-exports it.

Reviews (1): Last reviewed commit: "feat: Add support for Qdrant Vector Sear..." | Re-trigger Greptile

Greptile also left 3 inline comments on this PR.

(3/5) Reply to the agent's comments like "Can you suggest a fix for this @greptileai?" or ask follow-up questions!

@vercel
Copy link
Copy Markdown

vercel bot commented Apr 2, 2026

@Anush008 is attempting to deploy a commit to the Agentset Team on Vercel.

A member of the Team first needs to authorize it.

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant