> ## Documentation Index
> Fetch the complete documentation index at: https://portkey-docs-add-third-party-integration-issues-fixes.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Milvus

[Milvus](https://milvus.io/) is an open-source vector database built for GenAI applications.
It is built to be performant and scale to tens of billions of vectors with minimal performance loss.

Portkey provides a proxy to Milvus, allowing you to use virtual keys and observability features.

## Portkey SDK Integration with Milvus

Portkey provides a consistent API to interact with models from various providers. To integrate Milvus with Portkey:

### 1. Install the Portkey SDK

Add the Portkey SDK to your application to interact with Milvus through Portkey's gateway.

<Tabs>
  <Tab title="NodeJS">
    ```sh theme={null}
    npm install --save portkey-ai
    ```
  </Tab>

  <Tab title="Python">
    ```sh theme={null}
    pip install portkey-ai
    ```
  </Tab>
</Tabs>

### 2. Initialize Portkey with a Virtual Key

To use Milvus with Portkey, get your Milvus API key from here, then add it to Portkey to create your [Milvus virtual key](/product/ai-gateway/virtual-keys#using-virtual-keys).

<Tabs>
  <Tab title="NodeJS SDK">
    ```js theme={null}
    import Portkey from 'portkey-ai'

    const portkey = new Portkey({
        apiKey: "PORTKEY_API_KEY", // defaults to process.env["PORTKEY_API_KEY"]
        virtualKey: "VIRTUAL_KEY" // Your Milvus Virtual Key
    })
    ```
  </Tab>

  <Tab title="Python SDK">
    ```python theme={null}
    from portkey_ai import Portkey

    portkey = Portkey(
        api_key="PORTKEY_API_KEY",  # Replace with your Portkey API key
        virtual_key="VIRTUAL_KEY"   # Replace with your virtual key for Milvus
    )
    ```
  </Tab>

  <Tab title="OpenAI Python SDK">
    ```python theme={null}
    from openai import OpenAI

    from portkey_ai import PORTKEY_GATEWAY_URL, createHeaders

    client = OpenAI(
        api_key="MILVUS_API_KEY",
        base_url=PORTKEY_GATEWAY_URL,
        default_headers=createHeaders(
            api_key="PORTKEY_API_KEY",
            provider="milvus",
            custom_host="MILVUS_HOST" # Replace with your Milvus host example: https://in03-34d7b37f7ee12c7.serverless.gcp-us-west1.cloud.zilliz.com
        )
    )
    ```
  </Tab>

  <Tab title="OpenAI Node SDK">
    ```js theme={null}
    import OpenAI from "openai";

    import { PORTKEY_GATEWAY_URL, createHeaders } from "portkey-ai";

    const client = new OpenAI({
      apiKey: "MILVUS_API_KEY",
      baseURL: PORTKEY_GATEWAY_URL,
      defaultHeaders: createHeaders({
        provider: "milvus",
        apiKey: "PORTKEY_API_KEY",
        customHost: "MILVUS_HOST" // Replace with your Milvus host example: https://in03-34d7b37f7ee12c7.serverless.gcp-us-west1.cloud.zilliz.com
      }),
    });
    ```
  </Tab>
</Tabs>

### 3. Use the Portkey SDK to interact with Milvus

<Tabs>
  <Tab title="Python">
    ```python theme={null}
    from portkey_ai import Portkey

    portkey = Portkey(
        api_key="PORTKEY_API_KEY",  # Replace with your Portkey API key
        virtual_key="MILVUS_VIRTUAL_KEY",
        custom_host="MILVUS_HOST" # Replace with your Milvus host example: https://in03-34d7b37f7ee12c7.serverless.gcp-us-west1.cloud.zilliz.com
    )

    response = portkey.post(
        url="v2/vectordb/collections/list", # Replace with the endpoint you want to call
    )

    print(response)
    ```
  </Tab>

  <Tab title="NodeJS">
    ```javascript theme={null}
    import Portkey from 'portkey-ai';

    // Initialize the Portkey client
    const portkey = new Portkey({
      apiKey: "PORTKEY_API_KEY", // Replace with your Portkey API key
      virtualKey: "MILVUS_VIRTUAL_KEY", // Add your Milvus's virtual key
      customHost="MILVUS_HOST" // Replace with your Milvus host example: https://in03-34d7b37f7ee12c7.serverless.gcp-us-west1.cloud.zilliz.com
    });

    response = portkey.post(
        url="v2/vectordb/collections/list", # Replace with the endpoint you want to call
    )

    print(response)
    ```
  </Tab>

  <Tab title="OpenAI NodeJS">
    ```javascript theme={null}
    import OpenAI from 'openai'; // We're using the v4 SDK
    import { PORTKEY_GATEWAY_URL, createHeaders } from 'portkey-ai'

    const openai = new OpenAI({
      apiKey: 'MILVUS_API_KEY', // defaults to process.env["OPENAI_API_KEY"],
      baseURL: PORTKEY_GATEWAY_URL,
      defaultHeaders: createHeaders({
        virtualKey: "MILVUS_VIRTUAL_KEY",
        apiKey: "PORTKEY_API_KEY", // defaults to process.env["PORTKEY_API_KEY"]
        customHost: "MILVUS_HOST" // Replace with your Milvus host example: https://in03-34d7b37f7ee12c7.serverless.gcp-us-west1.cloud.zilliz.com
      })
    });

    response = openai.post(
        url="v2/vectordb/collections/list", # Replace with the endpoint you want to call
    )

    print(response)
    ```
  </Tab>

  <Tab title="OpenAI Python">
    ```python theme={null}
    from openai import OpenAI
    from portkey_ai import PORTKEY_GATEWAY_URL, createHeaders

    openai = OpenAI(
        api_key='MILVUS_API_KEY',
        base_url=PORTKEY_GATEWAY_URL,
        default_headers=createHeaders(
            provider="milvus",
            api_key="PORTKEY_API_KEY",
            custom_host="MILVUS_HOST" # Replace with your Milvus host example: https://in03-34d7b37f7ee12c7.serverless.gcp-us-west1.cloud.zilliz.com
        )
    )

    response = openai.post(
        url="v2/vectordb/collections/list", # Replace with the endpoint you want to call
    )

    print(response)
    ```
  </Tab>

  <Tab title="cURL">
    ```sh theme={null}
    curl --location --request POST 'https://api.portkey.ai/v1/v2/vectordb/collections/list' \
    --header 'x-portkey-custom-host: https://in03-34d7b37f7de12c7.serverless.gcp-us-west1.cloud.zilliz.com' \
    --header 'x-portkey-virtual-key: MILVUS_VIRTUAL_KEY' \
    --header 'x-portkey-api-key: PORTKEY_API_KEY'
    ```
  </Tab>
</Tabs>
