MCP 문서 관리

메뉴

문서 정보

최종 수정일:
2025-05-13 00:25

Milvus

Milvus

Milvus는 GenAI 애플리케이션을 위해 설계된 오픈소스 벡터 데이터베이스로, MCP(Model Context Protocol)를 통해 LLM과 원활하게 통합할 수 있습니다. 고성능 벡터 유사성 검색을 제공하며, 최소한의 성능 손실로 수백억 개의 벡터로 확장 가능합니다.

특징

  • 고성능 벡터 검색: 대규모 고차원 벡터에 대한 효율적인 유사성 검색 제공
  • 유연한 배포 옵션: Milvus Lite, Standalone, Distributed 및 Zilliz Cloud(관리형 서비스) 지원
  • 확장성: 단일 머신에서 완전 분산 환경까지 확장 가능
  • 다양한 검색 기능: 텍스트 검색, 벡터 검색, 하이브리드 검색, 메타데이터 필터링 등
  • AI 도구와의 통합: LangChain, LlamaIndex, OpenAI, Hugging Face 등과 통합

MCP 통합

Milvus MCP 서버는 Milvus 벡터 데이터베이스와 LLM 간의 통신 인터페이스를 제공합니다. 이를 통해 Claude와 같은 AI 어시스턴트가 벡터 데이터베이스에 저장된 정보에 접근하고 검색할 수 있습니다.

사용 사례

  • RAG(Retrieval-Augmented Generation): 대규모 문서 컬렉션에서 관련 정보 검색
  • 이미지 검색: 이미지 벡터 임베딩을 저장하고 유사한 이미지 검색
  • 멀티모달 검색: 텍스트와 이미지를 결합한 검색 기능
  • 하이브리드 검색: 벡터 유사성과 메타데이터 필터링을 결합한 정교한 검색
  • Graph RAG: 그래프 기반 지식 표현 및 검색

API

도구

Milvus MCP 서버는 다음과 같은 주요 도구를 제공합니다:

검색 및 쿼리 작업

milvus_text_search

전체 텍스트 검색을 사용하여 문서 검색 - 입력: - collection_name: 검색할 컬렉션 이름 - query_text: 검색할 텍스트 - limit: 최대 결과 수 (기본값: 5) - output_fields: 결과에 포함할 필드 - drop_ratio: 무시할 저빈도 용어의 비율 (0.0-1.0)

milvus_vector_search

컬렉션에서 벡터 유사성 검색 수행 - 입력: - collection_name: 검색할 컬렉션 이름 - vector: 쿼리 벡터 - vector_field: 검색할 벡터를 포함하는 필드 (기본값: "vector") - limit: 최대 결과 수 (기본값: 5) - output_fields: 결과에 포함할 필드 - metric_type: 거리 메트릭 (COSINE, L2, IP) (기본값: "COSINE") - filter_expr: 선택적 필터 표현식

milvus_query

필터 표현식을 사용하여 컬렉션 쿼리 - 입력: - collection_name: 쿼리할 컬렉션 이름 - filter_expr: 필터 표현식 (예: 'age > 20') - output_fields: 결과에 포함할 필드 - limit: 최대 결과 수 (기본값: 10)

컬렉션 관리

milvus_list_collections

데이터베이스의 모든 컬렉션 나열

milvus_create_collection

지정된 스키마로 새 컬렉션 생성 - 입력: - collection_name: 새 컬렉션의 이름 - collection_schema: 컬렉션 스키마 정의 - index_params: 선택적 인덱스 파라미터

milvus_load_collection

검색 및 쿼리를 위해 컬렉션을 메모리에 로드 - 입력: - collection_name: 로드할 컬렉션 이름 - replica_number: 복제본 수 (기본값: 1)

milvus_release_collection

메모리에서 컬렉션 해제 - 입력: - collection_name: 해제할 컬렉션 이름

milvus_get_collection_info

특정 컬렉션의 스키마, 속성, 컬렉션 ID 등 자세한 정보 나열 - 입력: - collection_name: 정보를 가져올 컬렉션 이름

데이터 작업

milvus_insert_data

컬렉션에 데이터 삽입 - 입력: - collection_name: 컬렉션 이름 - data: 필드 이름을 값 리스트에 매핑하는 딕셔너리

milvus_delete_entities

필터 표현식을 기반으로 컬렉션에서 엔티티 삭제 - 입력: - collection_name: 컬렉션 이름 - filter_expr: 삭제할 엔티티를 선택하는 필터 표현식

데이터베이스 관리

milvus_list_databases

Milvus 인스턴스의 모든 데이터베이스 나열

milvus_use_database

다른 데이터베이스로 전환 - 입력: - db_name: 사용할 데이터베이스 이름

사용 방법

필수 조건

Milvus MCP 서버를 사용하기 전에 다음 사항이 필요합니다: - Python 3.10 이상 - 실행 중인 Milvus 인스턴스(로컬 또는 원격) - uv 설치(서버 실행 권장)

설치 및 실행

Milvus MCP 서버는 설치 없이 uv로 직접 실행하는 것이 권장됩니다:

uv run src/mcp_server_milvus/server.py --milvus-uri http://localhost:19530

또는 환경 변수를 사용하여 구성할 수 있습니다:

MILVUS_URI="http://localhost:19530"
MILVUS_TOKEN="your_token_here"  # 선택 사항
MILVUS_DB="default"  # 선택 사항

Claude Desktop 연동

Claude Desktop에서 Milvus MCP 서버를 사용하려면:

  1. Claude Desktop 설정 파일을 열기:
  2. macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  3. 다음 구성 추가:

    {
      "mcpServers": {
        "milvus": {
          "command": "/PATH/TO/uv",
          "args": [
            "--directory",
            "/path/to/mcp-server-milvus/src/mcp_server_milvus",
            "run",
            "server.py",
            "--milvus-uri",
            "http://localhost:19530"
          ]
        }
      }
    }

  4. Claude Desktop 재시작

Cursor 연동

Cursor에서 Milvus MCP 서버를 사용하는 두 가지 방법:

방법 1: Cursor 설정 UI 사용

  1. Cursor 설정 > 기능 > MCP로 이동
  2. "+ Add New MCP Server" 버튼 클릭
  3. 양식 작성:
  4. 유형: stdio 선택
  5. 이름: milvus
  6. 명령어: /PATH/TO/uv --directory /path/to/mcp-server-milvus/src/mcp_server_milvus run server.py --milvus-uri http://127.0.0.1:19530

방법 2: 프로젝트별 구성(권장)

  1. 프로젝트 루트에 .cursor/mcp.json 파일 생성
  2. 다음 내용으로 파일 채우기:
    {
      "mcpServers": {
        "milvus": {
          "command": "/PATH/TO/uv",
          "args": [
            "--directory",
            "/path/to/mcp-server-milvus/src/mcp_server_milvus",
            "run",
            "server.py",
            "--milvus-uri",
            "http://127.0.0.1:19530"
          ]
        }
      }
    }
  3. Cursor 재시작 또는 창 새로고침

사용 예시

Claude Desktop 사용 예시

예시 1: 컬렉션 나열

사용자: 내 Milvus DB에 어떤 컬렉션이 있나요?

Claude는 MCP를 사용하여 Milvus DB에서 이 정보를 확인합니다:

Milvus 데이터베이스에 있는 컬렉션:

1. rag_demo
2. test
3. chat_messages
4. text_collection
5. image_collection
6. customized_setup
7. streaming_rag_demo

예시 2: 문서 검색

사용자: text_collection에서 "machine learning"을 언급하는 문서를 찾아주세요.

Claude는 Milvus의 전체 텍스트 검색 기능을 사용하여 관련 문서를 찾습니다:

text_collection에서 machine learning에 관한 문서를 검색하겠습니다.

> milvus의 milvus-text-search 결과 보기(로컬)

machine learning을 언급하는 다음 문서를 찾았습니다:
[실제 데이터에 따른 결과가 여기에 표시됩니다]

Cursor 사용 예시

예시: 컬렉션 생성

사용자: 제목(문자열), 내용(문자열) 및 벡터 필드(128차원)에 대한 필드가 있는 'articles'라는 새 컬렉션을 Milvus에 생성해주세요.

Cursor는 MCP 서버를 사용하여 이 작업을 실행합니다:

지정된 필드로 'articles'라는 새 컬렉션을 생성하겠습니다.

컬렉션 'articles'가 다음 스키마로 성공적으로 생성되었습니다:
- title: 문자열
- content: 문자열
- vector: 부동 소수점 벡터[128]

연결된 구성 요소

문제 해결

일반적인 문제

연결 오류

"Failed to connect to Milvus server"와 같은 오류가 표시되는 경우: - Milvus 인스턴스가 실행 중인지 확인(docker ps(Docker 사용 시)) - URI가 구성에서 올바른지 확인 - 연결을 차단하는 방화벽 규칙이 없는지 확인 - URI에서 localhost 대신 127.0.0.1 사용 시도

인증 문제

인증 오류가 표시되는 경우: - MILVUS_TOKEN이 올바른지 확인 - Milvus 인스턴스에 인증이 필요한지 확인 - 시도하는 작업에 대한 올바른 권한이 있는지 확인

도구를 찾을 수 없음

MCP 도구가 Claude Desktop 또는 Cursor에 표시되지 않는 경우: - 애플리케이션 재시작 - 서버 로그에서 오류 확인 - MCP 서버가 올바르게 실행 중인지 확인 - Cursor의 MCP 설정에서 새로고침 버튼 누르기