diff --git a/ui/litellm-dashboard/src/components/vector_store_management/VectorStoreForm.tsx b/ui/litellm-dashboard/src/components/vector_store_management/VectorStoreForm.tsx index 18b5bd87d1..673061b275 100644 --- a/ui/litellm-dashboard/src/components/vector_store_management/VectorStoreForm.tsx +++ b/ui/litellm-dashboard/src/components/vector_store_management/VectorStoreForm.tsx @@ -209,6 +209,38 @@ const VectorStoreForm: React.FC = ({ /> )} + {/* Vertex AI Search Setup Instructions */} + {selectedProvider === "vertex_ai/search_api" && ( + +

To use Vertex AI Search (Discovery Engine):

+
    +
  1. + Enable the Discovery Engine API on your Google Cloud project and create a data store following the + guide:{" "} + + Create a Vertex AI Search data store + +
  2. +
  3. Pick a supported location: global, us, or eu
  4. +
  5. Copy the data store ID from the Vertex AI Search console
  6. +
  7. Enter the data store ID in the Vector Store ID field below
  8. +
+ + } + type="info" + showIcon + style={{ marginBottom: "16px" }} + /> + )} + @@ -225,7 +257,9 @@ const VectorStoreForm: React.FC = ({ placeholder={ selectedProvider === "vertex_rag_engine" ? "6917529027641081856 (Get corpus ID from Vertex AI console)" - : "Enter vector store ID from your provider" + : selectedProvider === "vertex_ai/search_api" + ? "my-datastore_1234567890 (Get data store ID from Vertex AI Search console)" + : "Enter vector store ID from your provider" } /> @@ -233,12 +267,14 @@ const VectorStoreForm: React.FC = ({ {/* Provider-specific fields */} {getProviderSpecificFields(selectedProvider).map((field: VectorStoreFieldConfig) => { if (field.type === "select") { - const embeddingModels = modelInfo - .filter((option: ModelGroup) => option.mode === "embedding" || option.mode === null) - .map((option: ModelGroup) => ({ - value: option.model_group, - label: option.model_group, - })); + const selectOptions = + field.options ?? + modelInfo + .filter((option: ModelGroup) => option.mode === "embedding" || option.mode === null) + .map((option: ModelGroup) => ({ + value: option.model_group, + label: option.model_group, + })); return ( = ({ } name={field.name} + initialValue={field.initialValue} rules={ field.required ? [{ required: true, message: `Please select the ${field.label.toLowerCase()}` }] : [] } @@ -260,7 +297,7 @@ const VectorStoreForm: React.FC = ({ placeholder={field.placeholder} showSearch={true} filterOption={(input, option) => (option?.label ?? "").toLowerCase().includes(input.toLowerCase())} - options={embeddingModels} + options={selectOptions} style={{ width: "100%" }} /> diff --git a/ui/litellm-dashboard/src/components/vector_store_providers.tsx b/ui/litellm-dashboard/src/components/vector_store_providers.tsx index 9efda3a5a7..c5bdf1d5c2 100644 --- a/ui/litellm-dashboard/src/components/vector_store_providers.tsx +++ b/ui/litellm-dashboard/src/components/vector_store_providers.tsx @@ -3,6 +3,7 @@ export enum VectorStoreProviders { S3Vectors = "Amazon S3 Vectors", PgVector = "PostgreSQL pgvector (LiteLLM Connector)", VertexRagEngine = "Vertex AI RAG Engine", + VertexAiSearch = "Vertex AI Search", OpenAI = "OpenAI", Azure = "Azure OpenAI", Milvus = "Milvus", @@ -12,6 +13,7 @@ export const vectorStoreProviderMap: Record = { Bedrock: "bedrock", PgVector: "pg_vector", VertexRagEngine: "vertex_ai", + VertexAiSearch: "vertex_ai/search_api", OpenAI: "openai", Azure: "azure", Milvus: "milvus", @@ -24,6 +26,7 @@ export const vectorStoreProviderLogoMap: Record = { [VectorStoreProviders.Bedrock]: `${asset_logos_folder}bedrock.svg`, [VectorStoreProviders.PgVector]: `${asset_logos_folder}postgresql.svg`, // Fallback to a generic database icon if needed [VectorStoreProviders.VertexRagEngine]: `${asset_logos_folder}google.svg`, + [VectorStoreProviders.VertexAiSearch]: `${asset_logos_folder}google.svg`, [VectorStoreProviders.OpenAI]: `${asset_logos_folder}openai_small.svg`, [VectorStoreProviders.Azure]: `${asset_logos_folder}microsoft_azure.svg`, [VectorStoreProviders.Milvus]: `${asset_logos_folder}milvus.svg`, @@ -38,6 +41,8 @@ export interface VectorStoreFieldConfig { placeholder?: string; required: boolean; type?: "text" | "password" | "select"; + options?: { value: string; label: string }[]; + initialValue?: string; } // Provider-specific field configurations @@ -62,6 +67,37 @@ export const vectorStoreProviderFields: Record }, ], vertex_rag_engine: [], + "vertex_ai/search_api": [ + { + name: "vertex_project", + label: "Vertex Project", + tooltip: "Google Cloud project ID that hosts the Vertex AI Search data store.", + placeholder: "my-gcp-project-id", + required: true, + type: "text", + }, + { + name: "vertex_location", + label: "Vertex Location", + tooltip: "Vertex AI Search data store location. Must be one of global, us, or eu.", + required: true, + type: "select", + options: [ + { value: "global", label: "global" }, + { value: "us", label: "us" }, + { value: "eu", label: "eu" }, + ], + initialValue: "global", + }, + { + name: "vertex_collection_id", + label: "Collection ID (optional)", + tooltip: "Discovery Engine collection ID. Leave blank to use the default collection.", + placeholder: "e.g. my-custom-collection", + required: false, + type: "text", + }, + ], openai: [ { name: "api_key",