Skip to content

fix(QDrant): Resolve bug in document search functionality #2518

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 12 commits into from
Jul 6, 2024
24 changes: 14 additions & 10 deletions src/backend/base/langflow/components/vectorstores/Qdrant.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ class QdrantVectorStoreComponent(LCVectorStoreComponent):
display_name = "Qdrant"
description = "Qdrant Vector Store with search capabilities"
documentation = "https://python.langchain.com/docs/modules/data_connection/vectorstores/integrations/qdrant"
name = "Qdrant"
icon = "Qdrant"

inputs = [
Expand Down Expand Up @@ -66,19 +65,18 @@ def _build_qdrant(self) -> Qdrant:
qdrant_kwargs = {
"collection_name": self.collection_name,
"content_payload_key": self.content_payload_key,
"distance_func": self.distance_func,
"metadata_payload_key": self.metadata_payload_key,
}

server_kwargs = {
"host": self.host,
"port": self.port,
"grpc_port": self.grpc_port,
"host": self.host if self.host else None,
"port": int(self.port), # Ensure port is an integer
"grpc_port": int(self.grpc_port), # Ensure grpc_port is an integer
"api_key": self.api_key,
"prefix": self.prefix,
"timeout": self.timeout,
"path": self.path,
"url": self.url,
"timeout": int(self.timeout) if self.timeout else None, # Ensure timeout is an integer
"path": self.path if self.path else None,
"url": self.url if self.url else None,
}

server_kwargs = {k: v for k, v in server_kwargs.items() if v is not None}
Expand All @@ -90,13 +88,19 @@ def _build_qdrant(self) -> Qdrant:
else:
documents.append(_input)

from langchain.embeddings.base import Embeddings # Ensure this import is correct

embedding = self.embedding
if not isinstance(embedding, Embeddings):
raise ValueError("Invalid embedding object")

if documents:
qdrant = Qdrant.from_documents(documents, embedding=self.embedding, **qdrant_kwargs)
qdrant = Qdrant.from_documents(documents, embedding=embedding, **qdrant_kwargs)
else:
from qdrant_client import QdrantClient

client = QdrantClient(**server_kwargs)
qdrant = Qdrant(embedding_function=self.embedding.embed_query, client=client, **qdrant_kwargs)
qdrant = Qdrant(embeddings=embedding.embed_query, client=client, **qdrant_kwargs)

return qdrant

Expand Down
Loading