From 5fd3da010e244bad1ccf59b647ce8e8efc833a03 Mon Sep 17 00:00:00 2001 From: DiogenesBR Date: Fri, 18 Aug 2023 21:10:03 +0000 Subject: [PATCH] =?UTF-8?q?Atualiza=C3=A7=C3=A3o=20do=20ChromaComponent=20?= =?UTF-8?q?adicionando=20campos=20que=20havia=20na=20vers=C3=A3o=20antiga?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Makefile | 6 +++ .../components/vectorstores/Chroma.py | 40 +++++++++++++++++++ 2 files changed, 46 insertions(+) diff --git a/Makefile b/Makefile index b1d42ff4e..c0c6a7abc 100644 --- a/Makefile +++ b/Makefile @@ -40,6 +40,12 @@ install_frontendc: run_frontend: cd src/frontend && npm start +run_cli: + poetry run langflow --path src/frontend/build + +run_cli_debug: + poetry run langflow --path src/frontend/build --log-level debug + setup_devcontainer: make init make build_frontend diff --git a/src/backend/langflow/components/vectorstores/Chroma.py b/src/backend/langflow/components/vectorstores/Chroma.py index d064af80e..38e675d9d 100644 --- a/src/backend/langflow/components/vectorstores/Chroma.py +++ b/src/backend/langflow/components/vectorstores/Chroma.py @@ -6,6 +6,7 @@ from langchain.schema import Document from langchain.vectorstores.base import VectorStore from langchain.schema import BaseRetriever from langchain.embeddings.base import Embeddings +import chromadb class ChromaComponent(CustomComponent): @@ -32,15 +33,34 @@ class ChromaComponent(CustomComponent): "code": {"show": False, "display_name": "Code"}, "documents": {"display_name": "Documents", "is_list": True}, "embedding": {"display_name": "Embedding"}, + "chroma_server_cors_allow_origins": { + "display_name": "Server CORS Allow Origins", + "advanced": True, + }, + "chroma_server_host": {"display_name": "Server Host", "advanced": True}, + "chroma_server_port": {"display_name": "Server Port", "advanced": True}, + "chroma_server_grpc_port": { + "display_name": "Server gRPC Port", + "advanced": True, + }, + "chroma_server_ssl_enabled": { + "display_name": "Server SSL Enabled", + "advanced": True, + }, } def build( self, collection_name: str, persist: bool, + chroma_server_ssl_enabled: bool, persist_directory: Optional[str] = None, embedding: Optional[Embeddings] = None, documents: Optional[Document] = None, + chroma_server_cors_allow_origins: Optional[str] = None, + chroma_server_host: Optional[str] = None, + chroma_server_port: Optional[int] = None, + chroma_server_grpc_port: Optional[int] = None, ) -> Union[VectorStore, BaseRetriever]: """ Builds the Vector Store or BaseRetriever object. @@ -48,13 +68,32 @@ class ChromaComponent(CustomComponent): Args: - collection_name (str): The name of the collection. - persist_directory (Optional[str]): The directory to persist the Vector Store to. + - chroma_server_ssl_enabled (bool): Whether to enable SSL for the Chroma server. - persist (bool): Whether to persist the Vector Store or not. - embedding (Optional[Embeddings]): The embeddings to use for the Vector Store. - documents (Optional[Document]): The documents to use for the Vector Store. + - chroma_server_cors_allow_origins (Optional[str]): The CORS allow origins for the Chroma server. + - chroma_server_host (Optional[str]): The host for the Chroma server. + - chroma_server_port (Optional[int]): The port for the Chroma server. + - chroma_server_grpc_port (Optional[int]): The gRPC port for the Chroma server. Returns: - Union[VectorStore, BaseRetriever]: The Vector Store or BaseRetriever object. """ + + # Chroma settings + chroma_settings = None + + if chroma_server_host is not None: + chroma_settings = chromadb.config.Settings( + chroma_server_cors_allow_origins=chroma_server_cors_allow_origins + or None, + chroma_server_host=chroma_server_host, + chroma_server_port=chroma_server_port or None, + chroma_server_grpc_port=chroma_server_grpc_port or None, + chroma_server_ssl_enabled=chroma_server_ssl_enabled, + ) + # If documents, then we need to create a Chroma instance using .from_documents if documents is not None and embedding is not None: return Chroma.from_documents( @@ -62,6 +101,7 @@ class ChromaComponent(CustomComponent): persist_directory=persist_directory if persist else None, collection_name=collection_name, embedding=embedding, + client_settings=chroma_settings, ) return Chroma(