Searching vector data
출처: 문서
본문
벡터 데이터 검색하기
OpenSearch는 벡터가 생성되고 인덱싱된 방식에 맞춘 다양한 벡터 데이터 검색 방법을 지원해요. 이 가이드에서는 Raw 벡터 검색과 자동 생성 임베딩 검색에 대한 쿼리 문법과 옵션을 설명해요.
검색 타입 비교
다음 표는 각 벡터 검색 방법의 검색 문법과 일반적인 사용 사례를 비교한 거예요.
| 기능 | 쿼리 타입 | 입력 형식 | 모델 필요 여부 | 사용 사례 |
|---|---|---|---|---|
| Raw 벡터 | knn |
벡터 배열 | 아니요 | Raw 벡터 검색 |
| 자동 생성 임베딩 | neural |
텍스트 또는 이미지 데이터 | 예 | AI 검색 |
Raw 벡터 검색하기
Raw 벡터를 검색하려면 knn 쿼리 타입을 사용하고, 입력으로 vector 배열을 제공하고, 반환할 결과 개수인 k를 지정해요:
GET /my-raw-vector-index/_search
{
"query": {
"knn": {
"my_vector": {
"vector": [0.1, 0.2, 0.3],
"k": 2
}
}
}
}
{% include copy-curl.html %}
자동 생성 임베딩 검색하기
OpenSearch는 시맨틱 검색, 하이브리드 검색, 멀티모달 검색, 그리고 검색 증강 생성(RAG)이 결합된 대화형 검색을 포함한 AI 기반 검색 방법을 지원해요. 이 방법들은 쿼리 입력으로부터 임베딩을 자동으로 생성해요.
AI 기반 검색을 실행하려면 neural 쿼리 타입을 사용해요. query_text 입력값과, ingest pipeline에서 설정한 임베딩 모델의 모델 ID, 그리고 반환할 결과 개수인 k를 지정해요. 검색 결과에 임베딩이 반환되지 않도록 하려면 _source.excludes 파라미터에 임베딩 필드를 지정해요:
GET /my-ai-search-index/_search
{
"_source": {
"excludes": [
"output_embedding"
]
},
"query": {
"neural": {
"output_embedding": {
"query_text": "What is AI search?",
"model_id": "mBGzipQB2gmRjlv_dOoB",
"k": 2
}
}
}
}
{% include copy-curl.html %}
스파스 벡터 다루기
OpenSearch는 스파스 벡터도 지원해요. 자세한 내용은 Neural sparse 검색을 참고하세요.