오픈 소스 열 형식 데이터 형식인 Lance를 기반으로 구축된 LanceDB는 AI/ML에 매력적인 몇 가지 흥미로운 기능을 갖추고 있습니다. 예를 들어 LanceDB는 다양한 데이터 유형을 처리하는 기능을 통해 명시적 및 암시적 벡터화를 지원합니다. LanceDB는 다음과 같은 주요 ML 프레임워크와 통합됩니다.
LanceDB는 S3 호환 객체 스토리지의 데이터를 쿼리할 수 있습니다. 이 조합은 고성능의 확장 가능한 클라우드 기반 ML 데이터 저장 및 검색 시스템을 구축하는 데 최적입니다. MinIO는 다양한 하드웨어, 위치 및 클라우드 환경 전반에 걸쳐 성능과 비교할 수 없는 유연성을 제공하므로 이러한 배포를 위한 자연스러운 선택입니다.
이 튜토리얼을 마치면 LanceDB와 MinIO를 사용하여 모든 데이터 문제를 해결할 준비가 됩니다.
그만큼
그 중 하나
LanceDB와 같은 벡터 데이터베이스는 효율적인 덕분에 AI 및 기계 학습 애플리케이션에 뚜렷한 이점을 제공합니다.
자연어 처리(NLP):
의미 검색: 키워드뿐만 아니라 의미를 기반으로 쿼리와 유사한 문서나 구절을 찾습니다. 이는 챗봇 응답, 개인화된 콘텐츠 추천 및 지식 검색 시스템을 강화합니다.
질문 답변: 의미론적 유사성을 기반으로 관련 텍스트 구절을 찾아 복잡한 질문을 이해하고 답변합니다.
주제 모델링: 대규모 텍스트 컬렉션에서 숨겨진 주제를 발견하여 문서 클러스터링 및 추세 분석에 유용합니다.
컴퓨터 시각 인식:
이미지 및 비디오 검색: 콘텐츠 기반 이미지 검색, 제품 검색 및 비디오 분석에 중요한 시각적 콘텐츠를 기반으로 유사한 이미지 또는 비디오를 검색합니다.
객체 감지 및 분류: 유사한 훈련 데이터를 효율적으로 검색하여 객체 감지 및 분류 모델의 정확성을 향상시킵니다.
영상 추천 : 이전에 시청한 영상의 시각적 내용을 바탕으로 유사한 영상을 추천합니다.
시중에 나와 있는 수많은 벡터 데이터베이스 중에서 LanceDB는 S3 호환 스토리지에 대한 쿼리를 지원하므로 AI 및 기계 학습에 특히 적합합니다. 귀하의 데이터는 어디에나 있으므로 데이터베이스도 어디에나 있어야 합니다.
LanceDB와 함께 MinIO를 사용하면 다음과 같은 여러 가지 이점을 얻을 수 있습니다.
MinIO와 LanceDB의 조합은 대규모 ML 데이터세트를 관리하고 분석하기 위한 고성능 확장형 클라우드 네이티브 솔루션을 제공합니다.
이 튜토리얼을 따라하려면 다음을 사용해야 합니다.
다음 명령을 실행하여 Docker Compose가 설치되었는지 확인합니다.
docker compose version
Python도 설치해야 합니다. Python은 다음에서 다운로드할 수 있습니다.
선택적으로 가상 환경을 생성하도록 선택할 수 있습니다. 종속성을 격리하기 위해 가상 환경을 만드는 것이 좋습니다. 이렇게 하려면 터미널을 열고 다음을 실행하세요.
python -m venv venv
가상 환경을 활성화하려면:
Windows의 경우:
.\venv\Scripts\activate
macOS/Linux의 경우:
source venv/bin/activate
다음에서 프로젝트를 복제하여 시작하세요.
docker-compose up minio
그러면 MinIO 컨테이너가 시작됩니다. '로 이동할 수 있습니다.
사용자 이름과 비밀번호 minioadmin:minioadmin
으로 로그인하세요.
그런 다음, 다음 명령을 실행하여 lance
라는 MinIO 버킷을 생성합니다.
docker compose up mc
이 명령은 일련의 작업을 수행합니다.
각 명령에 대한 분석은 다음과 같습니다.
(/usr/bin/mc config 호스트 add minio http://minio:9000 minioadmin minioadmin) do echo '...waiting...' && sleep 1; done ;: 이 명령은 성공할 때까지 지정된 매개변수(엔드포인트, 액세스 키 및 비밀 키)를 사용하여 minio
라는 MinIO 호스트 구성을 반복적으로 시도합니다. 시도할 때마다 대기 메시지가 표시되고 1초 동안 일시 중지됩니다.
/usr/bin/mc rm -r --force minio/lance;: 이 명령은 MinIO의 lance
버킷 내의 모든 콘텐츠를 강제로 제거(삭제)합니다.
/usr/bin/mc mb 미니오/랜스; : 이 명령은 MinIO에 lance
라는 새 버킷을 생성합니다.
/usr/bin/mc 정책은 공개 미니오/랜스를 설정합니다. : 이 명령은 lance
버킷의 정책을 공개로 설정하여 공개 읽기 액세스를 허용합니다.
0번 출구; : 이 명령은 성공적인 실행을 나타내는 상태 코드 0으로 스크립트가 종료되도록 합니다.
안타깝게도 LanceDB에는 기본 S3 지원이 없으므로 사용자가 만든 MinIO 컨테이너에 연결하려면 boto3과 같은 것을 사용해야 합니다. LanceDB가 성숙해짐에 따라 우리는 사용자 경험을 더욱 향상시킬 기본 S3 지원을 기대합니다.
아래 샘플 스크립트를 사용하면 시작할 수 있습니다.
pip를 사용하여 필수 패키지를 설치합니다. 다음 내용을 포함하는 요구 사항.txt라는 파일을 만듭니다.
lancedb~=0.4.1 boto3~=1.34.9 botocore~=1.34.9
그런 다음 다음 명령을 실행하여 패키지를 설치합니다.
pip install -r requirements.txt
MinIO 컨테이너를 생성하는 방법이 위에 설명된 방법과 다른 경우 자격 증명을 변경해야 합니다.
아래 스크립트를 파일(예: lancedb_script.py
에 저장하세요.
import lancedb import os import boto3 import botocore import random def generate_random_data(num_records): data = [] for _ in range(num_records): record = { "vector": [random.uniform(0, 10), random.uniform(0, 10)], "item": f"item_{random.randint(1, 100)}", "price": round(random.uniform(5, 100), 2) } data.append(record) return data def main(): # Set credentials and region as environment variables os.environ["AWS_ACCESS_KEY_ID"] = "minioadmin" os.environ["AWS_SECRET_ACCESS_KEY"] = "minioadmin" os.environ["AWS_ENDPOINT"] = "http://localhost:9000" os.environ["AWS_DEFAULT_REGION"] = "us-east-1" minio_bucket_name = "lance" # Create a boto3 session with path-style access session = boto3.Session() s3_client = session.client("s3", config=botocore.config.Config(s3={'addressing_style': 'path'})) # Connect to LanceDB using path-style URI and s3_client db_uri = f"s3://{minio_bucket_name}/" db = lancedb.connect(db_uri) # Create a table with more interesting data table = db.create_table("mytable", data=generate_random_data(100)) # Open the table and perform a search result = table.search([5, 5]).limit(5).to_pandas() print(result) if __name__ == "__main__": main()
이 스크립트는 무작위로 생성된 데이터에서 Lance 테이블을 생성하고 이를 MinIO 버킷에 추가합니다. 다시 말하지만, 이전 섹션의 방법을 사용하여 버킷을 생성하지 않는 경우 스크립트를 실행하기 전에 이를 수행해야 합니다. MinIO 버킷의 이름과 일치하도록 위의 샘플 스크립트를 변경해야 합니다.
마지막으로 스크립트는 테이블을 MinIO 밖으로 이동하지 않고 열고 Pandas를 사용하여 검색을 수행하고 결과를 인쇄합니다.
스크립트 결과는 아래 결과와 유사해야 합니다. 데이터 자체는 매번 무작위로 생성된다는 점을 기억하세요.
vector item price _distance 0 [5.1022754, 5.1069164] item_95 50.94 0.021891 1 [4.209107, 5.2760105] item_100 69.34 0.701694 2 [5.23562, 4.102992] item_96 99.86 0.860140 3 [5.7922664, 5.867489] item_47 56.25 1.380223 4 [4.458882, 3.934825] item_93 9.90 1.427407
이 튜토리얼에서 제공하는 기반을 기반으로 성능이 뛰어나고 확장 가능하며 미래 지향적인 ML/AI 아키텍처를 생성하는 방법은 다양합니다. 귀하의 무기고에는 MinIO 객체 스토리지와 LanceDB 벡터 데이터베이스라는 두 가지 최첨단 오픈 소스 빌딩 블록이 있습니다. 이를 ML/AI에 대한 승리 티켓으로 간주하십시오.
여기서 멈추지 마세요. LanceDB는 다양한 기능을 제공합니다.
당신이 무엇을 만들고 있는지 보여주세요. 당신의 고귀한 탐구에 대한 지침이 필요하다면 주저하지 말고 [email protected]로 이메일을 보내거나 라운드 테이블에 참여하세요.