Milvus Lite 로컬 실행
이 페이지는 Milvus Lite를 로컬에서 실행하는 방법을 설명합니다. Milvus Lite는 벡터 임베딩 및 유사도 검색을 통해 AI 애플리케이션을 지원하는 오픈 소스 벡터 데이터베이스인 Milvus의 경량 버전입니다.
개요
Milvus Lite는 Python 애플리케이션으로 가져올 수 있으며, Milvus의 핵심 벡터 검색 기능을 제공합니다. Milvus Lite는 이미 Milvus의 Python SDK에 포함되어 있습니다. pip install pymilvus
를 통해 간단히 배포할 수 있습니다.
Milvus Lite를 사용하면 몇 분 안에 벡터 유사도 검색이 가능한 AI 애플리케이션을 구축할 수 있습니다! Milvus Lite는 다음 환경에서 실행하기에 좋습니다:
- 주피터 노트북 / 구글 콜랩
- 노트북
- 엣지 디바이스
Milvus Lite는 Milvus 독립형 및 분산형과 동일한 API를 공유하며 벡터 데이터 지속성 및 관리, 벡터 CRUD 작업, 스파스 및 고밀도 벡터 검색, 메타데이터 필터링, 멀티 벡터 및 hybrid_search와 같은 대부분의 기능을 다룹니다. 이러한 기능을 함께 사용하면 에지 디바이스에서 클라우드의 클러스터에 이르기까지 다양한 유형의 환경에서 일관된 경험을 제공하여 다양한 규모의 사용 사례에 적합합니다. 동일한 클라이언트 측 코드를 사용하여 노트북이나 Jupyter Notebook에서 Milvus Lite로 GenAI 앱을 실행하거나, Docker 컨테이너에서 Milvus Standalone으로, 또는 운영 환경에서 수십억 개의 벡터를 제공하는 대규모 Kubernetes 클러스터에서 Milvus Distributed로 실행할 수 있습니다.
전제 조건
Milvus Lite는 현재 다음 환경을 지원합니다:
- Ubuntu >= 20.04(x86_64 및 arm64)
- MacOS >= 11.0(Apple Silicon M1/M2 및 x86_64)
Milvus Lite는 소규모 벡터 검색 사용 사례에만 적합하다는 점에 유의하세요. 대규모 사용 사례의 경우, Milvus Standalone 또는 Milvus Distributed를 사용하는 것이 좋습니다. Zilliz Cloud의 완전 관리형 Milvus도 고려해볼 수 있습니다.
Milvus Lite 설정
pip install -U pymilvus
pymilvus
을 사용하는 것을 권장합니다. pymilvus
버전 2.4.2 이상에는 milvus-lite
이 포함되어 있으므로 pip install
으로 -U
을 입력하여 최신 버전으로 강제 업데이트하면 milvus-lite
이 자동으로 설치됩니다.
milvus-lite
패키지를 명시적으로 설치하거나 이전 버전의 milvus-lite
을 설치한 후 업데이트를 원하는 경우 pip install -U milvus-lite
을 수행하면 됩니다.
Milvus Lite에 연결
pymilvus
에서 MilvusClient의 uri 파라미터로 로컬 파일 이름을 지정하면 Milvus Lite가 사용됩니다.
from pymilvus import MilvusClient
client = MilvusClient("./milvus_demo.db")
위의 코드 스니펫을 실행하면 현재 폴더에 milvus_demo.db라는 데이터베이스 파일이 생성됩니다.
참고: 밀버스 스탠드얼론, 밀버스 디스트리뷰티드, 질리즈 클라우드에도 동일한 API가 적용되며, 로컬 파일 이름을 원격 서버 엔드포인트와 자격 증명으로 대체하는 것만 다릅니다(예:
client = MilvusClient(uri="http://localhost:19530", token="username:password")
).
예제
다음은 Milvus Lite를 텍스트 검색에 사용하는 방법을 보여주는 간단한 데모입니다. Milvus Lite를 사용하여 RAG, 이미지 검색과 같은 애플리케이션을 구축하고 LangChain 및 LlamaIndex와 같은 인기있는 RAG 프레임워크에서 Milvus Lite를 사용하는 더 포괄적인 예제가 있습니다!
from pymilvus import MilvusClient
import numpy as np
client = MilvusClient("./milvus_demo.db")
client.create_collection(
collection_name="demo_collection",
dimension=384 # The vectors we will use in this demo has 384 dimensions
)
# Text strings to search from.
docs = [
"Artificial intelligence was founded as an academic discipline in 1956.",
"Alan Turing was the first person to conduct substantial research in AI.",
"Born in Maida Vale, London, Turing was raised in southern England.",
]
# For illustration, here we use fake vectors with random numbers (384 dimension).
vectors = [[ np.random.uniform(-1, 1) for _ in range(384) ] for _ in range(len(docs)) ]
data = [ {"id": i, "vector": vectors[i], "text": docs[i], "subject": "history"} for i in range(len(vectors)) ]
res = client.insert(
collection_name="demo_collection",
data=data
)
# This will exclude any text in "history" subject despite close to the query vector.
res = client.search(
collection_name="demo_collection",
data=[vectors[0]],
filter="subject == 'history'",
limit=2,
output_fields=["text", "subject"],
)
print(res)
# a query that retrieves all entities matching filter expressions.
res = client.query(
collection_name="demo_collection",
filter="subject == 'history'",
output_fields=["text", "subject"],
)
print(res)
# delete
res = client.delete(
collection_name="demo_collection",
filter="subject == 'history'",
)
print(res)
제한 사항
밀버스 라이트 실행 시 일부 기능이 지원되지 않는다는 점에 유의하세요. 다음 표에는 Milvus Lite의 사용 제한이 요약되어 있습니다.
수집
메서드 / 매개변수 | 밀버스 라이트에서 지원되는 |
---|---|
create_collection() | 제한된 매개변수 지원 |
collection_name | Y |
dimension | Y |
primary_field_name | Y |
id_type | Y |
vector_field_name | Y |
metric_type | Y |
auto_id | Y |
schema | Y |
index_params | Y |
enable_dynamic_field | Y |
num_shards | N |
partition_key_field | N |
num_partitions | N |
consistency_level | N ( Strong 만 지원하며, 모든 구성은 Strong 으로 처리됩니다.) |
GET_COLLECTION_STATS() | 컬렉션 통계 가져오기를 지원합니다. |
collection_name | Y |
timeout | Y |
describe_collection() | num_shards , consistency_level , collection_id 의 응답이 유효하지 않습니다. |
timeout | Y |
has_collection() | 컬렉션이 존재하는지 확인을 지원합니다. |
collection_name | Y |
timeout | Y |
list_collections() | 모든 컬렉션 목록을 지원합니다. |
drop_collection() | 컬렉션 삭제 기능을 지원합니다. |
collection_name | Y |
timeout | Y |
rename_collection() | 컬렉션 이름 변경은 지원되지 않습니다. |
필드 및 스키마
메서드/파라미터 | Milvus Lite에서 지원 |
---|---|
create_schema() | 제한된 매개변수 지원 |
auto_id | Y |
enable_dynamic_field | Y |
primary_field | Y |
partition_key_field | N |
add_field() | 제한된 매개변수 지원 |
field_name | Y |
datatype | Y |
is_primary | Y |
max_length | Y |
element_type | Y |
max_capacity | Y |
dim | Y |
is_partition_key | N |
삽입 및 검색
메서드 / 매개변수 | 밀버스 라이트에서 지원 |
---|---|
search() | 제한된 매개변수 지원 |
collection_name | Y |
data | Y |
filter | Y |
limit | Y |
output_fields | Y |
search_params | Y |
timeout | Y |
partition_names | N |
anns_field | Y |
query() | 제한된 매개변수 지원 |
collection_name | Y |
filter | Y |
output_fields | Y |
timeout | Y |
ids | Y |
partition_names | N |
get() | 제한된 매개변수 지원 |
collection_name | Y |
ids | Y |
output_fields | Y |
timeout | Y |
partition_names | N |
delete() | 제한된 매개변수 지원 |
collection_name | Y |
ids | Y |
timeout | Y |
filter | Y |
partition_name | N |
insert() | 제한된 매개변수 지원 |
collection_name | Y |
data | Y |
timeout | Y |
partition_name | N |
upsert() | 제한된 매개변수 지원 |
collection_name | Y |
data | Y |
timeout | Y |
partition_name | N |
로드 및 릴리스
메서드 / 파라미터 | 밀버스 라이트에서 지원 |
---|---|
load_collection() | Y |
collection_name | Y |
timeout | Y |
release_collection() | Y |
collection_name | Y |
timeout | Y |
GET_LOAD_STATE() | 로드 상태 가져오기는 지원되지 않습니다. |
refresh_load() | 로드된 컬렉션의 언로드된 데이터를 로드하는 것은 지원되지 않습니다. |
close() | Y |
Index
메서드/파라미터 | 밀버스 라이트에서 지원 |
---|---|
list_indexes() | 목록 인덱스가 지원됩니다. |
collection_name | Y |
field_name | Y |
create_index() | FLAT 인덱스 유형만 지원합니다. |
index_params | Y |
timeout | Y |
drop_index() | 인덱스 삭제가 지원됩니다. |
collection_name | Y |
index_name | Y |
timeout | Y |
describe_index() | 인덱스 설명이 지원됩니다. |
collection_name | Y |
index_name | Y |
timeout | Y |
벡터 인덱스 유형
Milvus Lite는 FLAT 인덱스 유형만 지원합니다. 컬렉션에 지정된 인덱스 유형에 관계없이 FLAT 유형을 사용합니다.
검색 기능
밀버스 라이트는 스파스 벡터, 멀티 벡터, 하이브리드 검색을 지원합니다.
파티션
Milvus Lite는 파티션 및 파티션 관련 메서드를 지원하지 않습니다.
사용자 및 역할
Milvus Lite는 사용자 및 역할과 관련 메서드를 지원하지 않습니다.
별칭
Milvus Lite는 별칭 및 별칭 관련 메서드를 지원하지 않습니다.
Milvus Lite에서 데이터 마이그레이션하기
Milvus Lite에 저장된 모든 데이터는 쉽게 내보내고 다른 유형의 Milvus 배포(예: Docker의 Milvus Standalone, K8s의 Milvus Distributed 또는 Zilliz Cloud의 완전 관리형 Milvus)로 로드할 수 있습니다.
밀버스 라이트는 데이터를 json 파일로 덤프할 수 있는 명령줄 도구를 제공하며, 이를 밀버스 및 질리즈 클라우드(밀버스를 위한 완전 관리형 클라우드 서비스)로 가져올 수 있습니다. milvus-lite 명령은 milvus-lite 파이썬 패키지와 함께 설치됩니다.
# Install
pip install -U "pymilvus[bulk_writer]"
milvus-lite dump -h
usage: milvus-lite dump [-h] [-d DB_FILE] [-c COLLECTION] [-p PATH]
optional arguments:
-h, --help show this help message and exit
-d DB_FILE, --db-file DB_FILE
milvus lite db file
-c COLLECTION, --collection COLLECTION
collection that need to be dumped
-p PATH, --path PATH dump file storage dir
다음 예제는 ./milvus_demo.db
(Milvus Lite 데이터베이스 파일)에 저장된 demo_collection
컬렉션의 모든 데이터를 덤프합니다.
데이터를 내보내려면:
milvus-lite dump -d ./milvus_demo.db -c demo_collection -p ./data_dir
# ./milvus_demo.db: milvus lite db file
# demo_collection: collection that need to be dumped
#./data_dir : dump file storage dir
덤프 파일을 가지고 데이터 가져오기를 통해 질리즈 클라우드에 데이터를 업로드하거나, 대량 삽입을 통해 밀버스 서버에 데이터를 업로드할 수 있습니다.
다음 단계
Milvus Lite에 연결했으면 다음을 수행할 수 있습니다:
빠른 시작을 통해 Milvus의 기능을 확인합니다.
Milvus의 기본 작동에 대해 알아보세요:
Milvus 클러스터를 클라우드에 배포하세요:
Milvus 데이터 백업을 위한 오픈 소스 도구인 Milvus Backup을 살펴보세요.
Milvus 디버깅 및 동적 구성 업데이트를 위한 오픈 소스 도구인 Birdwatcher를 살펴보세요.
직관적인 Milvus 관리를 위한 오픈 소스 GUI 도구인 Attu를 살펴보세요.