Nodes/ComfyUI Griptape Nodes/Griptape Vector Store Driver: Qdrant
ComfyUI Node

Griptape Vector Store Driver: Qdrant

The vector store that runs anywhere, from Docker to the cloud

By griptape-ai·Created 2 years ago·Updated about a year ago· 238
Griptape Vector Store Driver: Qdrant
  • embedding_driver
  • DRIVER
collection_namegriptape
content_payload_keycontent
api_key_envQDRANT_CLUSTER_API_KEY
url_envQDRANT_CLUSTER_ENDPOINT

Qdrant is the vector database that keeps showing up in AI projects, and this driver is the one that lets your Griptape agent use it. The selling point is flexibility: the same driver handles a fully managed Qdrant Cloud cluster or a local Qdrant instance you spun up in Docker. If you already run Qdrant, this is your node. If you don't, it's still a legitimately good first "real" vector store when the Local driver outgrows its usefulness - it's open source, self-hostable, and doesn't lock you into a vendor's pricing page.

How it works

Like every driver in the family, it's a config object, not a worker. It builds a QdrantVectorStoreDriver that knows where the Qdrant server lives, how to authenticate, and which collection to use. From then on, Add Text nodes write chunks into the collection and Query nodes search it. The inputs:

  • url_env (default QDRANT_CLUSTER_ENDPOINT) and api_key_env (default QDRANT_CLUSTER_API_KEY) - environment variable names. For Qdrant Cloud these come from your cluster dashboard. For a local Docker instance, you can skip both: the driver falls back to the default localhost endpoint, which is why this node works with zero cloud config.
  • collection_name (default griptape) - typed directly, not via env var. Create or reuse a collection with this name in Qdrant.
  • content_payload_key (default content) - the payload field Qdrant stores the original text in. Leave it unless you set up your collection with a different field.
  • embedding_driver - the model that turns text into vectors. Empty means OpenAI if OPENAI_API_KEY is set, otherwise a dummy that returns zeros.

Output is DRIVER (VECTOR_STORE_DRIVER), which wires into the Griptape Structure Config node's vector_store_driver input, then into Create Agent. Your Griptape Vector Store: Query node reads it from the agent.

Where people get burned

The classic one is the collection dimension mismatch. Qdrant creates a collection with a fixed vector size when it first receives data. If you index text with one embedding model and then query with a different one (or a different size), Qdrant will reject it or return garbage. Pick your embedding driver, keep it consistent, and ideally pre-create the collection with the right vector size. The second gotcha is forgetting that local Qdrant defaults to localhost:6333 - if you set url_env to a cloud endpoint name that doesn't exist, the driver fails rather than falling back.

Install

Standard pack install: ComfyUI Manager → search "Griptape" → INSTALL, or git clone https://github.com/griptape-ai/ComfyUI-Griptape into custom_nodes, then restart. Dependencies (griptape[all], python-dotenv) install with it. Watch the pack's known torch conflict - griptape[all] installs its own torch, and if ComfyUI starts erroring on load, the README's torch uninstall/reinstall fix is your friend. If you want the local route, docker run -p 6333:6333 qdrant/qdrant is the whole server setup.

CategoryGriptape/Agent Drivers/Vector Store

Inputs (5)

NameTypeDefaultDescription
embedding_driveroptEMBEDDING_DRIVERSelect an embedding driver or leave as default.
collection_nameoptSTRINGgriptapeName of the Qdrant collection
content_payload_keyoptSTRINGcontentKey for the content payload
api_key_envoptSTRINGQDRANT_CLUSTER_API_KEYEnvironment variable name for the API key (do not include the actual API key)
url_envoptSTRINGQDRANT_CLUSTER_ENDPOINTEnvironment variable name for the Qdrant cluster endpoint URL

Outputs (1)

NameTypeDescription
DRIVERVECTOR_STORE_DRIVER