chore: Updating Redis Vector Store parameters format

This commit is contained in:
joaoguilhermeS 2024-06-22 17:06:45 -03:00 • committed by Gabriel Luiz Freitas Almeida
commit 9021974887
3 changed files with 35 additions and 52 deletions

View file

@ -20,7 +20,7 @@ from langflow.schema import Data
class PineconeVectorStoreComponent(LCVectorStoreComponent): class PineconeVectorStoreComponent(LCVectorStoreComponent):
display_name = "Pinecone" display_name = "Pinecone"
description = "Pinecone Vector Store with search capabilities" description = "Pinecone Vector Store with search capabilities"
documentation = "https://python.langchain.com/docs/modules/data_connection/vectorstores/integrations/pinecone" documentation = "https://python.langchain.com/v0.2/docs/integrations/vectorstores/pinecone/"
icon = "Pinecone" icon = "Pinecone"
inputs = [ inputs = [
@ -34,7 +34,6 @@ class PineconeVectorStoreComponent(LCVectorStoreComponent):
advanced=True, advanced=True,
), ),
SecretStrInput(name="pinecone_api_key", display_name="Pinecone API Key", required=True), SecretStrInput(name="pinecone_api_key", display_name="Pinecone API Key", required=True),
HandleInput(name="embedding", display_name="Embedding", input_types=["Embeddings"]),
StrInput( StrInput(
name="text_key", name="text_key",
display_name="Text Key", display_name="Text Key",
@ -42,18 +41,13 @@ class PineconeVectorStoreComponent(LCVectorStoreComponent):
value="text", value="text",
advanced=True, advanced=True,
), ),
MultilineInput(name="search_query", display_name="Search Query"),
DataInput( DataInput(
name="vector_store_inputs", name="ingest_data",
display_name="Vector Store Inputs", display_name="Ingest Data",
is_list=True, is_list=True,
), ),
BoolInput( HandleInput(name="embedding", display_name="Embedding", input_types=["Embeddings"]),
name="add_to_vector_store",
display_name="Add to Vector Store",
info="If true, the Vector Store Inputs will be added to the Vector Store.",
value=True,
),
MultilineInput(name="search_input", display_name="Search Input"),
IntInput( IntInput(
name="number_of_results", name="number_of_results",
display_name="Number of Results", display_name="Number of Results",
@ -82,25 +76,24 @@ class PineconeVectorStoreComponent(LCVectorStoreComponent):
pinecone_api_key=self.pinecone_api_key, pinecone_api_key=self.pinecone_api_key,
) )
if self.add_to_vector_store: documents = []
documents = [] for _input in self.ingest_data or []:
for _input in self.vector_store_inputs or []: if isinstance(_input, Data):
if isinstance(_input, Data): documents.append(_input.to_lc_document())
documents.append(_input.to_lc_document()) else:
else: documents.append(_input)
documents.append(_input)
if documents: if documents:
pinecone.add_documents(documents) pinecone.add_documents(documents)
return pinecone return pinecone
def search_documents(self) -> List[Data]: def search_documents(self) -> List[Data]:
vector_store = self._build_pinecone() vector_store = self._build_pinecone()
if self.search_input and isinstance(self.search_input, str) and self.search_input.strip(): if self.search_query and isinstance(self.search_query, str) and self.search_query.strip():
docs = vector_store.similarity_search( docs = vector_store.similarity_search(
query=self.search_input, query=self.search_query,
k=self.number_of_results, k=self.number_of_results,
) )

View file

@ -14,6 +14,7 @@ from langflow.io import (
DataInput, DataInput,
MultilineInput, MultilineInput,
) )
from langflow.schema import Data from langflow.schema import Data
@ -42,18 +43,13 @@ class QdrantVectorStoreComponent(LCVectorStoreComponent):
), ),
StrInput(name="content_payload_key", display_name="Content Payload Key", value="page_content", advanced=True), StrInput(name="content_payload_key", display_name="Content Payload Key", value="page_content", advanced=True),
StrInput(name="metadata_payload_key", display_name="Metadata Payload Key", value="metadata", advanced=True), StrInput(name="metadata_payload_key", display_name="Metadata Payload Key", value="metadata", advanced=True),
HandleInput(name="embedding", display_name="Embedding", input_types=["Embeddings"]), MultilineInput(name="search_query", display_name="Search Query"),
DataInput( DataInput(
name="vector_store_inputs", name="ingest_data",
display_name="Vector Store Inputs", display_name="Ingest Data",
is_list=True, is_list=True,
), ),
BoolInput( HandleInput(name="embedding", display_name="Embedding", input_types=["Embeddings"]),
name="add_to_vector_store",
display_name="Add to Vector Store",
info="If true, the Vector Store Inputs will be added to the Vector Store.",
),
MultilineInput(name="search_input", display_name="Search Input"),
IntInput( IntInput(
name="number_of_results", name="number_of_results",
display_name="Number of Results", display_name="Number of Results",
@ -85,23 +81,17 @@ class QdrantVectorStoreComponent(LCVectorStoreComponent):
"url": self.url, "url": self.url,
} }
# Remove None values from server_kwargs
server_kwargs = {k: v for k, v in server_kwargs.items() if v is not None} server_kwargs = {k: v for k, v in server_kwargs.items() if v is not None}
if self.add_to_vector_store: documents = []
documents = []
for _input in self.vector_store_inputs or []:
if isinstance(_input, Data):
documents.append(_input.to_lc_document())
else:
documents.append(_input)
if documents: for _input in self.ingest_data or []:
qdrant = Qdrant.from_documents(documents, embedding=self.embedding, **qdrant_kwargs) if isinstance(_input, Data):
documents.append(_input.to_lc_document())
else: else:
from qdrant_client import QdrantClient documents.append(_input)
client = QdrantClient(**server_kwargs) if documents:
qdrant = Qdrant(embedding_function=self.embedding.embed_query, client=client, **qdrant_kwargs) qdrant = Qdrant.from_documents(documents, embedding=self.embedding, **qdrant_kwargs)
else: else:
from qdrant_client import QdrantClient from qdrant_client import QdrantClient
@ -113,9 +103,9 @@ class QdrantVectorStoreComponent(LCVectorStoreComponent):
def search_documents(self) -> List[Data]: def search_documents(self) -> List[Data]:
vector_store = self._build_qdrant() vector_store = self._build_qdrant()
if self.search_input and isinstance(self.search_input, str) and self.search_input.strip(): if self.search_query and isinstance(self.search_query, str) and self.search_query.strip():
docs = vector_store.similarity_search( docs = vector_store.similarity_search(
query=self.search_input, query=self.search_query,
k=self.number_of_results, k=self.number_of_results,
) )

View file

@ -29,12 +29,12 @@ class RedisVectorStoreComponent(LCVectorStoreComponent):
name="schema", name="schema",
display_name="Schema", display_name="Schema",
), ),
MultilineInput(name="search_query", display_name="Search Query"),
DataInput( DataInput(
name="vector_store_inputs", name="ingest_data",
display_name="Vector Store Inputs", display_name="Ingest Data",
is_list=True, is_list=True,
), ),
MultilineInput(name="search_input", display_name="Search Input"),
IntInput( IntInput(
name="number_of_results", name="number_of_results",
display_name="Number of Results", display_name="Number of Results",
@ -48,7 +48,7 @@ class RedisVectorStoreComponent(LCVectorStoreComponent):
def build_vector_store(self) -> Redis: def build_vector_store(self) -> Redis:
documents = [] documents = []
for _input in self.vector_store_inputs or []: for _input in self.ingest_data or []:
if isinstance(_input, Data): if isinstance(_input, Data):
documents.append(_input.to_lc_document()) documents.append(_input.to_lc_document())
else: else:
@ -80,9 +80,9 @@ class RedisVectorStoreComponent(LCVectorStoreComponent):
def search_documents(self) -> List[Data]: def search_documents(self) -> List[Data]:
vector_store = self.build_vector_store() vector_store = self.build_vector_store()
if self.search_input and isinstance(self.search_input, str) and self.search_input.strip(): if self.search_query and isinstance(self.search_query, str) and self.search_query.strip():
docs = vector_store.similarity_search( docs = vector_store.similarity_search(
query=self.search_input, query=self.search_query,
k=self.number_of_results, k=self.number_of_results,
) )