Home

Awesome

Attu

Attu is an all-in-one milvus administration tool.

GitHub release (latest by date) License downloads GitHub last commit GitHub stars δΈ­ζ–‡

<div style="display: flex; justify-content: space-between; gap: 8px;"> <img src="./.github/images/screenshot.png" width="45%" alt="attu home view" /> <img src="./.github/images/data_explorer.png" width="45%" alt="attu home view" /> </div>

Attu is designed to manage and interact with Milvus, offering features such as:

Installation Guides

Before you begin, make sure that you have Milvus installed on either Zilliz Cloud or your own server.

Compatibility

Milvus VersionRecommended Attu Version
2.4.xv2.4.11
2.3.xv2.3.5
2.2.xv2.2.8
2.1.xv2.2.2

Running Attu from Docker

Here are the steps to start a container for running Attu:

docker run -p 8000:3000 -e MILVUS_URL={milvus server IP}:19530 zilliz/attu:v2.4

Make sure that the Attu container can access the Milvus IP address. After starting the container, open your web browser and enter http://{ Attu IP }:8000 to view the Attu GUI.

Optional Environment Variables for Running Attu Docker

ParameterExampleRequiredDescription
MILVUS_URL192.168.0.1:19530falseOptional, Milvus server URL
DATABASEyour databasefalseOptional, default database name
ATTU_LOG_LEVELinfofalseOptional, sets the log level for Attu
ROOT_CERT_PATH/path/to/root/certfalseOptional, path to the root certificate
PRIVATE_KEY_PATH/path/to/private/keyfalseOptional, path to the private key
CERT_CHAIN_PATH/path/to/cert/chainfalseOptional, path to the certificate chain
SERVER_NAMEyour_server_namefalseOptional, name of your server
SERVER_PORTServer listen portfalseOptional, 3000 by default if unset

Please note that the MILVUS_URL should be an address that the Attu Docker container can access. Therefore, "127.0.0.1" or "localhost" will not work.

To run the Docker container with these environment variables, use the following command:

Attu SSL Example

docker run -p 8000:3000 \
-v /your-tls-file-path:/app/tls \
-e ATTU_LOG_LEVEL=info  \
-e ROOT_CERT_PATH=/app/tls/ca.pem \
-e PRIVATE_KEY_PATH=/app/tls/client.key \
-e CERT_CHAIN_PATH=/app/tls/client.pem \
-e SERVER_NAME=your_server_name \
zilliz/attu:dev

Custom Server Port Example

This command lets you run the docker container with host networking, specifying a custom port for the server to listen on

docker run --network host \
-v /your-tls-file-path:/app/tls \
-e ATTU_LOG_LEVEL=info  \
-e SERVER_NAME=your_server_name \
-e SERVER_PORT=8080 \
zilliz/attu:dev

Running Attu within Kubernetes

Before you begin, make sure that you have Milvus installed and running within your K8's Cluster. Note that Attu only supports Milvus 2.x.

Here are the steps to start a container for running Attu:

kubectl apply -f https://raw.githubusercontent.com/zilliztech/attu/main/attu-k8s-deploy.yaml

Make sure that the Attu pod can access the Milvus service. In the example provided this connects directly to my-release-milvus:19530. Change this based on the Milvus service name. A more flexible way to achieve this would be to introduce a ConfigMap. See this example for details.

Running Attu behind a nginx proxy

Running Attu behind a nginx proxy

Install Desktop application

If you prefer to use a desktop application, you can download the desktop version of Attu.

Note:

  sudo xattr -rd com.apple.quarantine /Applications/attu.app

Build Docker Image Locally

FAQ

More Screenshots

create collectioncollection tree
<img src="./.github/images/create_collection.png" width="800" alt="attu create collection dialog" /><img src="./.github/images/collections.png" alt="attu" width="800" alt="attu collections" />
collection overviewdata view
<img src="./.github/images/collection_overview.png" alt="attu" width="800" alt="attu collection view" /><img src="./.github/images/data_preview.png" alt="attu" width="800" alt="attu data view" />
vector searchsystem view
<img src="./.github/images/vector_search.png" width="800" alt="attu vector search" /><img src="./.github/images/system_view.png" width="800" alt="attu system view" />

✨ Contributing Code

Thank you for your interest in contributing to Attu! Here's how you can build Attu locally to contribute code, test out the latest features, or try out an open PR:

Build the Server

  1. Fork and clone the Attu repository.
  2. Navigate to the server directory by running cd server in the terminal.
  3. Install dependencies by running yarn install.
  4. To start the server in development mode, run yarn start.
  5. Create a new branch for your PR by running git checkout -b my-branch.

Build the Client

  1. Fork and clone the Attu repository.
  2. Navigate to the client directory by running cd client in the terminal.
  3. Install dependencies by running yarn install.
  4. To start the server in development mode, run yarn start.
  5. Create a new branch for your PR by running git checkout -b my-branch.

Submitting a Pull Request

  1. Make changes and ensure that tests pass.
  2. Commit changes and push to your fork.
  3. Create a Pull Request targeting the main branch of Attu.

We appreciate your contributions to Attu, regardless of size. Thanks for supporting the project!

❓ Do you have any questions or problems?

If you encounter any bugs or want to request a new feature, please create a GitHub issue. It's important to check if someone else has already created an issue for the same problem before submitting a new one.

Useful Examples

Milvus Typescript Examples:This repo provides some simple React apps based on Next.js.

NameDemoModel
semantic-search-examplehttps://zilliz-semantic-search-example.vercel.appall-MiniLM-L6-v2
semantic-image-searchclip-vit-base-patch16
semantic-image-search-clienthttps://zilliz-semantic-image-search-client.vercel.appclip-vit-base-patch16

Userful links

Here are some helpful resources to get you started with Milvus:

Community

πŸ’¬ Join our vibrant community on the Milvus Discord where you can share your knowledge, ask questions and engage in meaningful conversations. It's not just about coding, it's about connecting with other like-minded individuals. Click the link below to join now!

<a href="https://discord.com/invite/8uyFbECzPX"><img style="display:block; margin: '8px';" src="https://assets-global.website-files.com/6257adef93867e50d84d30e2/636e0b5061df29d55a92d945_full_logo_blurple_RGB.svg" alt="license"/></a>