BedrockCompatible with Milvus 2.6.x
이 항목에서는 Milvus에서 Amazon Bedrock 임베딩 기능을 구성하고 사용하는 방법에 대해 설명합니다.
임베딩 모델 선택하기
밀버스는 아마존 베드락에서 제공하는 임베딩 모델을 지원합니다. 아래는 현재 사용 가능한 임베딩 모델을 빠르게 참조할 수 있습니다:
모델 이름 |
치수 |
최대 토큰 |
설명 |
|---|---|---|---|
amazon.titan-embed-text-v2:0 |
1,024(기본값), 512, 256 |
8,192 |
RAG, 문서 검색, 재랭크, 분류 등. |
자세한 내용은 Amazon Titan 텍스트 임베딩 모델을 참조하세요.
자격 증명 구성
Milvus는 임베딩을 요청하기 전에 사용자의 Bedrock 액세스 자격 증명을 알고 있어야 합니다. Milvus는 두 가지 방법으로 자격 증명을 구성할 수 있습니다:
구성 파일(권장): 자격 증명을
milvus.yaml에 저장하여 모든 재시작 및 노드가 자동으로 가져올 수 있도록 합니다.환경 변수: 배포 시점에 자격 증명을 주입하는 방법(Docker Compose에 이상적).
아래 두 가지 방법 중 하나를 선택하세요. 구성 파일은 베어메탈 및 가상 머신에서 유지 관리가 더 쉬운 반면, 환경 변수 경로는 컨테이너 워크플로에 적합합니다.
동일한 공급자에 대한 자격 증명이 구성 파일과 환경 변수에 모두 있는 경우, Milvus는 항상 milvus.yaml 의 값을 사용하고 환경 변수는 무시합니다.
옵션 1: 구성 파일(권장 및 우선순위 높음)
자격 증명을 milvus.yaml 에 보관하세요. Milvus는 시작 시 자격 증명을 읽고 동일한 공급자에 대한 모든 환경 변수를 재정의합니다.
**아래에 자격 증명을 선언하세요.
credential:하나 또는 여러 개의 자격 증명을 나열할 수 있으며, 각각에 사용자가 만든 레이블을 부여하고 나중에 참조할 수 있습니다.
# milvus.yaml credential: aksk_dev: # dev environment access_key_id: <YOUR_DEV_ACCESS_KEY_ID> secret_access_key: <YOUR_DEV_SECRET_ACCESS_KEY> aksk_prod: # production environment access_key_id: <YOUR_PROD_ACCESS_KEY_ID> secret_access_key: <YOUR_PROD_SECRET_ACCESS_KEY>여기에 자격 증명을 저장하면 재시작 시에도 자격 증명이 유지되며 레이블을 변경하는 것만으로 자격 증명을 전환할 수 있습니다.
서비스 호출에 사용할 자격 증명을 Milvus에 알려주세요.
동일한 파일에서 Bedrock 공급자가 사용하려는 레이블을 가리키세요.
function: textEmbedding: providers: bedrock: credential: aksk_dev # ← choose any label you defined above이렇게 하면 Milvus가 Bedrock 임베딩 서비스에 보내는 모든 요청에 특정 자격 증명이 바인딩됩니다.
옵션 2: 환경 변수
Docker Compose와 함께 Milvus를 실행하고 파일과 이미지에서 비밀을 유지하려는 경우 이 방법을 사용합니다.
Milvus는 milvus.yaml 에서 공급자에 대한 자격 증명을 찾을 수 없는 경우에만 환경 변수로 되돌아갑니다.
변수 |
필수 |
설명 |
|---|---|---|
|
Yes |
Bedrock 서비스 인증에 사용되는 AWS 액세스 키 ID입니다. |
|
Yes |
액세스 키 ID에 해당하는 AWS 비밀 액세스 키입니다. |
docker-compose.yaml 파일에서 MILVUSAI_OPENAI_API_KEY 환경 변수를 설정합니다.
# docker-compose.yaml (standalone service section)
standalone:
# ... other configurations ...
environment:
# ... other environment variables ...
# Set the environment variable pointing to the Bedrock embedding service inside the container
MILVUSAI_BEDROCK_ACCESS_KEY_ID: <MILVUSAI_BEDROCK_ACCESS_KEY_ID>
MILVUSAI_BEDROCK_SECRET_ACCESS_KEY: <MILVUSAI_BEDROCK_SECRET_ACCESS_KEY>
environment: 블록은 호스트 OS는 그대로 두고 Milvus 컨테이너에만 키를 삽입합니다. 자세한 내용은 Docker Compose로 Milvus 구성을 참조하세요.
임베딩 기능 사용
자격 증명이 구성되면 다음 단계에 따라 임베딩 함수를 정의하고 사용하세요.
1단계: 스키마 필드 정의
임베딩 함수를 사용하려면 특정 스키마로 컬렉션을 만듭니다. 이 스키마에는 최소 3개의 필수 필드가 포함되어야 합니다:
컬렉션의 각 엔티티를 고유하게 식별하는 기본 필드.
임베드할 원시 데이터를 저장하는 스칼라 필드.
함수가 스칼라 필드에 대해 생성할 벡터 임베딩을 저장하기 위해 예약된 벡터 필드.
다음 예에서는 텍스트 데이터를 저장하는 스칼라 필드( "document" ) 1개와 함수 모듈에서 생성할 임베딩을 저장하는 벡터 필드( "dense" ) 1개가 있는 스키마를 정의합니다. 선택한 임베딩 모델의 출력과 일치하도록 벡터 차원(dim)을 설정하는 것을 잊지 마세요.
from pymilvus import MilvusClient, DataType, Function, FunctionType
# Initialize Milvus client
client = MilvusClient(
uri="http://localhost:19530",
)
# Create a new schema for the collection
schema = client.create_schema()
# Add primary field "id"
schema.add_field("id", DataType.INT64, is_primary=True, auto_id=False)
# Add scalar field "document" for storing textual data
schema.add_field("document", DataType.VARCHAR, max_length=9000)
# Add vector field "dense" for storing embeddings.
# IMPORTANT: Set dim to match the exact output dimension of the embedding model.
schema.add_field("dense", DataType.FLOAT_VECTOR, dim=1024)
2단계: 스키마에 함수 추가
Milvus의 함수 모듈은 스칼라 필드에 저장된 원시 데이터를 임베딩으로 자동 변환하여 명시적으로 정의된 벡터 필드에 저장합니다.
아래 예는 스칼라 필드 "document" 를 임베딩으로 변환하여 결과 벡터를 앞서 정의한 "dense" 벡터 필드에 저장하는 함수 모듈(bedrk)을 추가하는 예제입니다.
임베딩 함수를 정의한 후에는 컬렉션 스키마에 추가합니다. 이렇게 하면 Milvus가 지정된 임베딩 함수를 사용하여 텍스트 데이터의 임베딩을 처리하고 저장하도록 지시합니다.
# Define embedding function specifically for OpenAI provider
text_embedding_function = Function(
name="bedrk", # Unique identifier for this embedding function
function_type=FunctionType.TEXTEMBEDDING, # Indicates a text embedding function
input_field_names=["document"], # Scalar field(s) containing text data to embed
output_field_names=["dense"], # Vector field(s) for storing embeddings
params={ # Provider-specific embedding parameters (function-level)
"provider": "bedrock", # Must be set to "bedrock"
"model_name": "amazon.titan-embed-text-v2:0", # Specifies the embedding model to use
"region": "us-east-2", # Required: AWS region where the Bedrock service is hosted
# Optional parameters:
# "credential": "aksk_dev", # Optional: Credential label specified in milvus.yaml
# "dim": "1024", # Output dimension of the vector embeddings after truncation
# "normalize": "true", # Whether to normalize the output embeddings
}
)
# Add the configured embedding function to your existing collection schema
schema.add_function(text_embedding_function)
다음 단계
임베딩 함수를 구성한 후에는 함수 개요에서 인덱스 구성, 데이터 삽입 예제 및 시맨틱 검색 작업에 대한 추가 지침을 참조하세요.