■ MilvusClient 클래스의 search 메소드에서 collection_name/data/limit/output_fields 인자를 사용해 벡터를 검색하는 방법을 보여준다.
※ Milvus는 동시에 하나 또는 여러 개의 벡터 검색 요청을 받아들인다.
※ 쿼리_벡터 변수의 값은 벡터의 목록이며, 각 벡터는 실수 배열이다.
※ 출력은 결과 목록이며, 각 결과는 벡터 검색 쿼리에 매핑된다.
※ 각 쿼리에는 결과 목록이 포함되며, 각 결과에는 엔터티 기본 키, 쿼리 벡터까지의 거리, 지정된 output_fields로 엔터티 세부 정보가 포함된다.
▶ main.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
from pymilvus import MilvusClient from pymilvus import model milvusClient = MilvusClient("test.db") hasCollection = milvusClient.has_collection(collection_name = "temp") if milvusClient.has_collection(collection_name= "temp"): milvusClient.drop_collection(collection_name = "temp") milvusClient.create_collection( collection_name = "temp", dimension = 768 ) onnxEmbeddingFunction = model.DefaultEmbeddingFunction() stringList = [ "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." ] stringVectorList = onnxEmbeddingFunction.encode_documents(stringList) # NDArray list itemList = [ {"id" : i, "vector" : stringVectorList[i], "text" : stringList[i], "subject" : "history"} for i in range(len(stringVectorList)) ] milvusClient.insert(collection_name = "temp", data = itemList) queryVectorList = onnxEmbeddingFunction.encode_queries(["Who is Alan Turing?"]) # NDArray list extraList = milvusClient.search( collection_name = "temp", # 타겟 컬렉션 data = queryVectorList, # 쿼리 벡터 limit = 2, # 반환 엔터티 수 output_fields = ["text", "subject"] # 반환 필드 지정 ) print(extraList[0][0]) print(extraList[0][1]) """ {'id' : 2, 'distance' : 0.5859943628311157, 'entity' : {'text' : 'Born in Maida Vale, London, Turing was raised in southern England.' , 'subject' : 'history'}} {'id' : 1, 'distance' : 0.511825442314148 , 'entity' : {'text' : 'Alan Turing was the first person to conduct substantial research in AI.', 'subject' : 'history'}} """ |
▶ requirements.txt
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
certifi==2024.8.30 charset-normalizer==3.3.2 coloredlogs==15.0.1 environs==9.5.0 filelock==3.16.1 flatbuffers==24.3.25 fsspec==2024.9.0 grpcio==1.66.2 huggingface-hub==0.25.1 humanfriendly==10.0 idna==3.10 marshmallow==3.22.0 milvus-lite==2.4.10 milvus-model==0.2.7 mpmath==1.3.0 numpy==2.1.2 onnxruntime==1.19.2 packaging==24.1 pandas==2.2.3 protobuf==5.28.2 pymilvus==2.4.7 python-dateutil==2.9.0.post0 python-dotenv==1.0.1 pytz==2024.2 PyYAML==6.0.2 regex==2024.9.11 requests==2.32.3 safetensors==0.4.5 scipy==1.14.1 six==1.16.0 sympy==1.13.3 tokenizers==0.20.0 tqdm==4.66.5 transformers==4.45.1 typing_extensions==4.12.2 tzdata==2024.2 ujson==5.10.0 urllib3==2.2.3 |
※ pip install pymilvus[model] 명령을 실행했다.