본문 바로가기
컴퓨터 활용(한글, 오피스 등)/기타

Attu 검색 - Vector Search (유사성 검색), Query (조건문 검색)

by 3604 2026. 3. 12.
728x90


Attu는 오픈소스 벡터 데이터베이스인 **Milvus(밀비스)**를 시각적으로 관리할 수 있게 도와주는 아주 유용한 GUI 툴입니다. 복잡한 코딩 없이도 클릭 몇 번으로 데이터를 검색할 수 있다는 게 큰 장점이죠.

Attu에서 데이터를 검색하는 방법은 크게 두 가지입니다.

1. Vector Search (유사성 검색)
가장 핵심적인 기능으로, 특정 벡터(또는 데이터)와 가장 "비슷한" 데이터를 찾아줍니다.

Collection 선택: 왼쪽 사이드바에서 검색하려는 Collections를 클릭하고 해당 컬렉션을 선택합니다.

Vector Search 탭 이동: 상단 메뉴에서 Vector Search 탭을 클릭합니다.

검색 조건 설정:

Vector Value: 검색하고 싶은 기준 벡터값을 입력합니다. (보통 모델을 통해 추출된 float 배열 형태입니다.)

Metric Type: 유클리드 거리(L2)나 내적(IP) 등 컬렉션 생성 시 설정한 거리 계산 방식을 확인합니다.

TopK: 결과로 몇 개의 데이터를 가져올지 설정합니다.

실행: Search 버튼을 누르면 유사도가 높은 순서대로 결과가 나열됩니다.

2. Query (조건문 검색)
전통적인 SQL 문법과 유사하게, 특정 필드의 값(ID, 이름, 카테고리 등)을 기준으로 데이터를 필터링합니다.

Data 탭 이동: 컬렉션 상세 페이지에서 Data 또는 Query 관련 섹션으로 이동합니다.

Filter Expression 입력: Expression 입력 칸에 조건식을 작성합니다.

예: id in [1, 2, 3] 또는 age > 25

출력 필드 선택: 보고 싶은 필드(컬럼)를 선택한 후 Query를 실행하면 조건에 맞는 데이터만 필터링되어 나타납니다.

💡 팁: 어떤 검색을 써야 할까요?
검색 방식 용도 특징
Vector Search "이 사진과 비슷한 이미지 찾기", "이 문장과 맥락이 유사한 글 찾기" 인공지능 모델 결과값을 이용한 의미 기반 검색
Query "ID가 500번인 데이터 찾기", "특정 날짜 이후의 데이터 보기" 정확한 값이나 범위를 기준으로 하는 필터링
현재 가지고 계신 데이터의 형태(이미지 벡터, 텍스트 임베딩 등)에 따라 검색 설정값이 달라질 수 있습니다. 혹시 특정 조건(예: 특정 점수 이상의 데이터만 추출)으로 검색하고 싶으신가요? 구체적인 상황을 알려주시면 더 자세한 쿼리 작성법을 알려드릴게요!

말씀하신 내용
data에서 fox라는 단어가 있을 경우 검색하는 방법

Gemini의 응답
Attu(Milvus)에서 'fox'라는 특정 단어를 포함한 데이터를 찾는 방법은 데이터가 저장된 필드의 타입에 따라 두 가지 방식으로 나뉩니다.

1. Scalar Field에서 정확한 단어 찾기 (Query)
만약 word라는 필드가 있고, 그 값이 정확히 "fox"인 데이터를 찾고 싶다면 Expression(조건식) 칸에 다음과 같이 입력하세요.

방법: Query 탭의 Expression 창에 입력

구문: field_name == "fox"

예: text_field == "fox"

2. 텍스트 내에 'fox'가 포함된 경우 찾기 (Advanced)
단순한 일치가 아니라 "The quick brown fox"처럼 문장 안에 단어가 포함된 경우를 찾으려면 Milvus의 Full Text Search 또는 Wildcard Matching 기능을 사용해야 합니다.

A. 와일드카드 사용 (Like 연산자)
텍스트 필드에 특정 문자열이 포함되었는지 확인할 때 사용합니다.

구문: field_name like "fox%" (fox로 시작하는 경우)

구문: field_name like "%fox%" (fox를 포함하는 경우)

주의: 이 기능은 해당 필드가 Varchar 타입이어야 하며, 데이터 양이 아주 많을 경우 인덱스 설정이 없으면 속도가 느릴 수 있습니다.

B. Full Text Search (Milvus 2.4+ 버전)
만약 해당 컬렉션을 생성할 때 Text 필드에 대해 Full Text Search 인덱스를 설정했다면 아래와 같은 함수를 사용할 수 있습니다.

구문: TEXT_MATCH(field_name, "fox")

3. Attu에서 실행하는 순서
Collection 목록에서 해당 데이터를 담고 있는 컬렉션을 클릭합니다.

상단 탭에서 [Data] 또는 [Query] 탭으로 이동합니다.

Filter Expression 입력 칸에 위에서 설명한 구문을 입력합니다. (예: text_field like "%fox%")

Apply 또는 Query 버튼을 눌러 결과를 확인합니다.

💡 확인해 보세요!
현재 사용 중인 필드가 벡터(Vector) 필드인가요, 아니면 스칼라(String/Varchar) 필드인가요?

만약 "fox"라는 단어의 의미가 비슷한 데이터(예: '늑대', '개' 등)를 찾고 싶으신 거라면, 단어를 벡터로 변환하여 Vector Search를 수행해야 합니다.

혹시 검색하려는 필드의 이름이 무엇인지 알려주시면, 바로 복사해서 쓰실 수 있는 쿼리문을 만들어 드릴까요?

말씀하신 내용
field_name == "fox"가 있고 text_field에 야구라는 단어가 있는 내용을 검색하는 방법

Gemini의 응답
Attu의 Query 탭에 있는 Expression(조건식) 칸에 논리 연산자인 and를 사용하여 두 조건을 결합하면 됩니다.

입력하실 쿼리문은 다음과 같습니다:

1. 쿼리문 (Expression)
SQL
field_name == "fox" and text_field like "%야구%"
2. 상세 설명
field_name == "fox": field_name이라는 필드의 값이 정확히 "fox"와 일치하는 데이터를 찾습니다.

and: 두 가지 조건을 모두 만족하는 데이터만 결과로 보여줍니다.

text_field like "%야구%": text_field 안에 "야구"라는 단어가 포함된 모든 데이터를 찾습니다. (앞뒤의 %는 어떤 내용이 와도 상관없다는 뜻입니다.)

3. Attu에서 실행 방법
Attu에서 해당 Collection을 선택합니다.

상단 메뉴에서 Data 또는 Query 탭으로 들어갑니다.

Filter Expression 입력창에 위의 쿼리문을 붙여넣습니다.

결과를 확인하고 싶은 필드들을 선택(Output Fields)한 후 Query 버튼을 클릭합니다.

참고: like 연산자를 사용하려면 해당 필드가 VarChar 타입이어야 합니다. 만약 Milvus 최신 버전에서 Full Text Search 인덱스를 설정하셨다면 TEXT_MATCH(text_field, '야구') 방식을 사용할 수도 있습니다. 가장 범용적인 방법은 위에서 설명드린 like 방식입니다.

728x90