데이터 마스터리를 쉽게: Jupyter Notebooks에서 벡터 데이터베이스의 마법 탐구하기
Anthropic은 최근 Claude의 100k 토큰 버전을 출시했습니다. Google은 최근 PaLM 2를 출시했습니다. 그리고 물론, 이 시점에서 우리는 모두 OpenAI의 GPT와 ChatGPT를 잘 알고 있습니다. 대규모 언어 모델(LLM)은 AI 도입 속도를 높였고, 그와 함께 벡터 데이터베이스에 대한 수요도 촉진했습니다.
왜일까요? 벡터 데이터베이스는 LLM이 직면한 가장 큰 문제 중 하나인 도메인 지식과 최신 데이터의 부족을 해결하는 데 도움이 될 수 있기 때문입니다. LLM 외에도 벡터 데이터베이스는 유사도 검색 애플리케이션을 구동하는 데 유용함을 보여줍니다. 또한 제품 추천, 역이미지 검색, 의미론적 텍스트 검색 작업에도 필요합니다.
Jupyter Notebook에서 벡터 데이터베이스를 어떻게 시작할 수 있을까요? 이 튜토리얼에서는 다음을 다룹니다:
- 벡터 데이터베이스란 무엇인가?
- Jupyter Notebook에서 벡터 데이터베이스를 사용하는 방법
- Milvus (Lite)란 무엇인가?
- Jupyter Notebook에서의 벡터 데이터베이스 요약
이는 CoLab 노트북에도 동일하게 적용됩니다. 다음 두 가지를 제공합니다: 역이미지 검색용 CoLab 노트북, 그리고 의미론적 텍스트 검색용 CoLab 노트북.
벡터 데이터베이스란 무엇인가?
튜토리얼로 넘어가기 전에, 벡터 데이터베이스에 대한 기본적인 이해를 해보겠습니다. 벡터 데이터베이스는 벡터 데이터를 저장, 인덱싱, 쿼리하도록 구축되었습니다. 주로 이미지, 텍스트 또는 비디오와 같은 비정형 데이터를 다루는 데 사용됩니다. 먼저 기존 신경망에 데이터를 통과시켜 벡터 임베딩을 얻으며, 일반적으로 마지막에서 두 번째 레이어에서 추출합니다.
그런 다음 이러한 벡터 임베딩은 벡터 데이터베이스에 저장됩니다. 벡터 임베딩이 저장되면, 위의 CoLab 노트북에 표시된 것처럼 벡터 임베딩을 통해 가장 유사한 데이터 항목 top k를 벡터 데이터베이스에 쿼리할 수 있습니다. 벡터 데이터베이스가 대신 추상화해 주는 도구 중 일부는 다음과 같습니다:
- 그렇지 않았다면 직접 포함해야 했을 벡터 인덱스.
- HNSW와 같은 벡터 검색 알고리즘.
- 영구 스토리지 계층과 통신하는 방법.
Milvus (Lite)란 무엇인가?
Milvus는 분산 시스템 네이티브 백엔드를 갖춘 벡터 데이터베이스입니다. 이는 10억 규모의 벡터 데이터를 인덱싱, 저장, 쿼리하도록 특별히 설계되었습니다. Milvus는 쉽게 확장 가능한 설계를 위해 여러 계층과 유형의 워커 노드를 사용합니다. 여러 단일 목적 노드를 사용하는 것 외에도, Milvus는 더 효율적인 인덱싱을 위해 세그먼트화된 데이터도 사용합니다. Milvus는 채워진 후 변경되지 않는 512MB 데이터 세그먼트를 사용하고 이를 병렬로 쿼리하여 업계 전반에서 가장 낮은 지연 시간을 제공합니다.
Milvus Vector Database의 고수준 아키텍처
일반적으로 Milvus 인스턴스를 실행하려면 Docker Compose, Helm, 또는 Milvus Operator를 사용합니다. 그러나 Milvus Lite를 사용하면 Jupyter Notebook이나 Python 스크립트에서 직접 Milvus 인스턴스를 실행할 수 있습니다. 이는 Milvus와 동일한 방식으로 작동하며 모든 데이터를 로컬에 저장합니다.
Jupyter Notebook에서 벡터 데이터베이스를 사용하는 방법
pip 설치를 통해 노트북에서 직접 Milvus Lite와 같은 벡터 데이터베이스를 시작할 수 있습니다. Jupyter Notebook의 첫 번째 줄에서 ! pip install pymilvus milvus를 실행하세요. pymilvus와 milvus가 설치되면, iPython 노트북 내에서 벡터 데이터베이스를 시작하고 연결할 수 있습니다.
milvus 모듈은 Milvus Lite를 제공하고 pymilvus 모듈은 Milvus에 연결하기 위한 Python 인터페이스를 제공합니다. 시작하려면 세 가지 모듈을 가져옵니다. 첫째, milvus의 default_server입니다. 둘째, pymilvus의 connections이고, 셋째, pymilvus의 utility입니다. 서버를 시작하기 위해 default_server의 start() 함수를 사용합니다. 서버가 시작되면 connections의 connect를 사용하고 호스트인 localhost 또는 127.0.0.1과 기본 서버에서 가져온 포트를 전달하여 연결합니다.
from milvus import default_server
from pymilvus import connections, utility
default_server.start()
connections.connect(host="127.0.0.1", port=default_server.listen_port)
Milvus에 연결한 후에는 utility를 사용하여 데이터베이스를 확인할 수 있습니다. 예를 들어, 최신 버전인지 확인하려면 get_server_version()을 호출하고, 이는 Milvus Blog에서 확인할 수 있습니다. 또한 utility를 사용하여 Milvus의 별도 테이블인 collections를 확인할 수도 있습니다. 새로 시작하고 싶다면 사용하려는 이름의 컬렉션이 이미 사용 중인지 확인한 뒤 drop_collection으로 삭제하거나 새 이름을 선택할 수 있습니다.
utility.get_server_version()
if utility.has_collection(COLLECTION_NAME):
utility.drop_collection(COLLECTION_NAME)
더 나아가 프로덕션 환경이나 더 큰 프로젝트에서 벡터 데이터베이스를 사용하고 싶으신가요? Zilliz Cloud 또는 Milvus Standalone을 고려해 보세요.
Jupyter Notebook에서 벡터 데이터베이스를 사용하는 방법 요약
이 게시물에서는 유사도 검색과 관련된 작업을 해야 할 때마다 벡터 데이터베이스가 유용하다는 것을 배웠습니다. 벡터 데이터베이스는 이미지, 비디오 또는 텍스트와 같은 비정형 데이터의 벡터 임베딩 표현을 인덱싱, 저장 및 쿼리하는 데 도움을 줍니다. 그런 다음 Milvus Lite를 통해 Jupyter Notebook에서 벡터 데이터베이스를 사용하는 예를 살펴봅니다.
마지막으로 Milvus의 내부를 들여다보며 분산 시스템 백엔드를 확인합니다. 또한 CoLab 노트북의 예제를 통해 벡터 데이터베이스 사용을 시작하는 방법을 이해할 수 있는 리소스를 제공합니다. 독립 실행형 벡터 데이터베이스 인스턴스를 사용하려는 분들을 위해 Milvus Standalone을 설정하는 방법에 대한 예제도 제공합니다.
계속 읽기

VDBBench Adds Cost-Aware Benchmarking for Vector Databases
Compare Zilliz Cloud, Pinecone, and turbopuffer with VDBBench cost-aware vector database benchmarks across latency, freshness, multitenancy, and cold starts.

Top 10 Context Engineering Techniques You Should Know for Production RAG
A practical guide to context engineering for production LLM systems, covering RAG, context processing, memory, agents, and multimodal context.

The Real Bottlenecks in Autonomous Driving — And How AI Infrastructure Can Solve Them
Autonomous driving faces a data bottleneck. Learn how AI-native vector databases like Zilliz solve scale, cost, and insight challenges across AV pipelines.



