Ingesting data into a vector index
출처: 문서
본문
벡터 인덱스로 데이터 수집하기
벡터 인덱스를 생성한 후에는 원시 벡터 데이터를 수집하거나 수집하면서 데이터를 임베딩으로 변환해야 해요.
수집 방법 비교
다음 표는 두 가지 수집 방법을 비교해요.
| 기능 | 데이터 형식 | 수집 파이프라인 | 벡터 생성 | 추가 필드 |
|---|---|---|---|---|
| 원시 벡터 수집 | 사전 생성된 벡터 | 필요하지 않음 | 외부 | 선택적 메타데이터 |
| 수집 중 데이터를 임베딩으로 변환 | 텍스트 또는 이미지 데이터 | 필요함 | 내부 (수집 중) | 원본 데이터 + 임베딩 |
원시 벡터 수집
OpenSearch 외부에서 생성된 원시 벡터나 임베딩을 사용할 때는 knn_vector 필드에 직접 벡터 데이터를 수집해요. 벡터가 이미 생성되어 있으므로 파이프라인이 필요하지 않아요:
PUT /my-raw-vector-index/_doc/1
{
"my_vector": [0.1, 0.2, 0.3],
"metadata": "Optional additional information"
}
{% include copy-curl.html %}
여러 벡터를 효율적으로 수집하려면 Bulk API를 사용할 수도 있어요:
PUT /_bulk
{"index": {"_index": "my-raw-vector-index", "_id": 1}}
{"my_vector": [0.1, 0.2, 0.3], "metadata": "First item"}
{"index": {"_index": "my-raw-vector-index", "_id": 2}}
{"my_vector": [0.2, 0.3, 0.4], "metadata": "Second item"}
{% include copy-curl.html %}
수집 중 데이터를 임베딩으로 변환
임베딩을 자동으로 생성하는 수집 파이프라인을 구성한 후에는 텍스트 데이터를 인덱스에 직접 수집할 수 있어요:
PUT /my-ai-search-index/_doc/1
{
"input_text": "Example: AI search description"
}
{% include copy-curl.html %}
파이프라인이 자동으로 임베딩을 생성하여 output_embedding 필드에 저장해요.
여러 문서를 효율적으로 수집하려면 Bulk API를 사용할 수도 있어요:
PUT /_bulk
{"index": {"_index": "my-ai-search-index", "_id": 1}}
{"input_text": "Example AI search description"}
{"index": {"_index": "my-ai-search-index", "_id": 2}}
{"input_text": "Bulk API operation description"}
{% include copy-curl.html %}
희소 벡터 사용
OpenSearch는 희소 벡터도 지원해요. 자세한 내용은 Neural sparse search를 참조하세요.
텍스트 청킹
밀집 또는 희소 AI 검색 중 임베딩을 생성하기 전에 큰 문서를 더 작은 구절로 나누는 방법에 대한 자세한 내용은 Text chunking을 참조하세요.