Qdrant Integration for LangChain

1.1.0 · active · verified Mon Apr 13

langchain-qdrant is an integration package connecting the LangChain framework with Qdrant, a high-performance vector similarity search engine. It enables developers to easily utilize Qdrant as a vector store for various LLM-based applications, including Retrieval-Augmented Generation (RAG). The current version is 1.1.0, and as a LangChain partner package, it follows semantic versioning, with minor releases adding new features without breaking changes and frequent patch versions for bug fixes.

Warnings

Install

Imports

Quickstart

This quickstart demonstrates how to set up an in-memory Qdrant client, initialize a `QdrantVectorStore` with `OpenAIEmbeddings`, add documents, and perform a similarity search. Ensure you have `langchain-openai` installed for the embeddings. For persistent storage or remote Qdrant instances, adjust the `QdrantClient` initialization.

import os
from qdrant_client import QdrantClient
from qdrant_client.http.models import Distance, VectorParams
from langchain_qdrant import QdrantVectorStore
from langchain_openai import OpenAIEmbeddings # Requires `pip install langchain-openai`
from langchain_core.documents import Document

# Set your OpenAI API key for embeddings (replace with your preferred embedding model)
os.environ["OPENAI_API_KEY"] = os.environ.get("OPENAI_API_KEY", "sk-...")

# 1. Initialize an in-memory Qdrant client
client = QdrantClient(":memory:")

# 2. Define collection parameters (e.g., for OpenAI embeddings)
collection_name = "my_langchain_collection"
embedding_dimension = 1536 # For text-embedding-ada-002 or text-embedding-3-small

client.create_collection(
    collection_name=collection_name,
    vectors_config=VectorParams(size=embedding_dimension, distance=Distance.COSINE),
)

# 3. Initialize the embedding model
embeddings = OpenAIEmbeddings()

# 4. Create a QdrantVectorStore instance
vector_store = QdrantVectorStore(
    client=client,
    collection_name=collection_name,
    embedding=embeddings,
)

# 5. Add documents to the vector store
documents = [
    Document(page_content="The quick brown fox jumps over the lazy dog.", metadata={"source": "sentence 1"}),
    Document(page_content="LangChain provides many integrations with vector stores.", metadata={"source": "sentence 2"}),
    Document(page_content="Qdrant is an open-source vector database.", metadata={"source": "sentence 3"}),
]

vector_store.add_documents(documents)

# 6. Perform a similarity search
query = "What is Qdrant?"
found_docs = vector_store.similarity_search(query, k=1)

print(f"Query: {query}")
for doc in found_docs:
    print(f"- Content: {doc.page_content}, Metadata: {doc.metadata}")

view raw JSON →