From 141c55643dfceed6066f228a3ccd05e9b3db3995 Mon Sep 17 00:00:00 2001 From: Gabriel Luiz Freitas Almeida Date: Thu, 22 Jun 2023 14:56:25 -0300 Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=80=20feat(vectorstores.py):=20add=20s?= =?UTF-8?q?upport=20for=20Pinecone=20vector=20store=20type=20The=20VectorS?= =?UTF-8?q?toreFrontendNode=20class=20now=20supports=20the=20Pinecone=20ve?= =?UTF-8?q?ctor=20store=20type.=20Two=20new=20fields,=20pinecone=5Fapi=5Fk?= =?UTF-8?q?ey=20and=20pinecone=5Fenv,=20have=20been=20added=20to=20the=20e?= =?UTF-8?q?xtra=5Ffields=20list.=20The=20add=5Fextra=5Ffields=20method=20h?= =?UTF-8?q?as=20been=20updated=20to=20add=20these=20fields=20to=20the=20te?= =?UTF-8?q?mplate=20if=20the=20type=5Fname=20is=20Pinecone.=20The=20add=5F?= =?UTF-8?q?field=20method=20has=20been=20updated=20to=20add=20all=20fields?= =?UTF-8?q?=20in=20the=20extra=5Ffields=20list=20to=20the=20template.=20Th?= =?UTF-8?q?e=20add=5Ffield=20method=20has=20also=20been=20updated=20to=20r?= =?UTF-8?q?emove=20the=20text=5Fkey=20field=20if=20the=20field=20name=20is?= =?UTF-8?q?=20"text=5Fkey".=20Finally,=20the=20fields=20list=20has=20been?= =?UTF-8?q?=20updated=20to=20include=20the=20new=20fields.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../template/frontend_node/vectorstores.py | 45 ++++++++++++++++--- 1 file changed, 39 insertions(+), 6 deletions(-) diff --git a/src/backend/langflow/template/frontend_node/vectorstores.py b/src/backend/langflow/template/frontend_node/vectorstores.py index 0d6fb2467..5e25d3403 100644 --- a/src/backend/langflow/template/frontend_node/vectorstores.py +++ b/src/backend/langflow/template/frontend_node/vectorstores.py @@ -6,7 +6,7 @@ from langflow.template.frontend_node.base import FrontendNode class VectorStoreFrontendNode(FrontendNode): def add_extra_fields(self) -> None: - extra_field = None + extra_fields = [] if self.template.type_name == "Weaviate": extra_field = TemplateField( name="weaviate_url", @@ -18,6 +18,7 @@ class VectorStoreFrontendNode(FrontendNode): multiline=False, value="http://localhost:8080", ) + extra_fields.append(extra_field) elif self.template.type_name == "Chroma": # New bool field for persist parameter @@ -30,8 +31,33 @@ class VectorStoreFrontendNode(FrontendNode): value=True, display_name="Persist", ) - if extra_field is not None: - self.template.add_field(extra_field) + extra_fields.append(extra_field) + elif self.template.type_name == "Pinecone": + # add pinecone_api_key and pinecone_env + extra_field = TemplateField( + name="pinecone_api_key", + field_type="str", + required=False, + placeholder="", + show=True, + advanced=True, + multiline=False, + value="", + ) + extra_field2 = TemplateField( + name="pinecone_env", + field_type="str", + required=False, + placeholder="", + show=True, + advanced=True, + multiline=False, + value="", + ) + extra_fields.extend((extra_field, extra_field2)) + if extra_fields: + for field in extra_fields: + self.template.add_field(field) def add_extra_base_classes(self) -> None: self.base_classes.append("BaseRetriever") @@ -47,6 +73,9 @@ class VectorStoreFrontendNode(FrontendNode): "location", "persist_directory", "persist", + "weaviate_url", + "index_name", + "namespace", ] advanced_fields = [ "n_dim", @@ -63,14 +92,15 @@ class VectorStoreFrontendNode(FrontendNode): "https", "prefer_grpc", "grpc_port", + "pinecone_api_key", + "pinecone_env", ] # Check and set field attributes if field.name == "texts": - field.name = "documents" field.field_type = "TextSplitter" - field.display_name = "Text Splitter" - field.required = True + field.display_name = "Documents" + field.required = False field.show = True field.advanced = False @@ -98,3 +128,6 @@ class VectorStoreFrontendNode(FrontendNode): field.advanced = True if "key" in field.name: field.password = False + + elif field.name == "text_key": + field.show = False