[Elasticsearch] 벡터서치 구현시 텍스트 데이터 벡터화 방법 고민
JAVA vs ELK
문자열 벡터화 처리를 어디서 하면 좋을까?
1. 애초에 JAVA에서 벡터화해서 던지기
원본 문자열을 자바딴에서 미리 벡터화해서
vector 필드로 인덱스에 저장하고
바로 벡터서치에 사용하는 경우
VS
2. ELK에서 벡터화하기
원본 문자열을 자바딴에서 그대로 넘겨서
text 필드로 인덱스에 일단 저장하고
ELK에서 제공하는 벡터화 기능을 통해
벡터서치에 사용하는 경우
2번은 사전에 학습된 머신러닝 모델을...복잡하다 복잡해...
양쪽다 구현해보진 않았지만 1번이 나은 방법같다
과연 chatGPT는 뭐라고 했을까?
Java에서 텍스트 데이터를 벡터화하여 인덱스에 벡터 필드로 저장하는 경우와, 텍스트를 그대로 인덱스에 저장하고 ELK(Elasticsearch, Logstash, Kibana)에서 제공하는 벡터화 기능을 사용하는 경우의 장단점을 비교해보겠습니다.
1. Java에서 벡터화하여 인덱스에 벡터 필드로 저장하는 경우
장점:
- 제어와 커스터마이제이션: 벡터화 과정에서 직접 알고리즘을 선택하고 조정할 수 있어, 특정 요구사항에 맞게 최적화가 가능합니다.
- 데이터 전처리 및 일관성: 모든 데이터를 벡터화된 형태로 일관되게 저장할 수 있습니다.
- 독립성: 특정 데이터베이스나 검색엔진에 의존하지 않고 독립적으로 동작할 수 있습니다.
단점:
- 복잡성: 벡터화 로직을 직접 구현하고 유지보수해야 합니다.
- 성능: 벡터화 과정에서 추가적인 컴퓨팅 자원이 필요합니다.
- 중복 저장: 벡터화된 데이터와 원본 데이터를 모두 저장해야 할 경우, 저장 공간이 더 필요할 수 있습니다.
2. Java에서 문자열을 텍스트 필드로 저장하고 ELK에서 제공하는 벡터화 기능을 사용하는 경우
장점:
- 간편함: 벡터화 로직을 직접 구현할 필요 없이, ELK의 강력한 기능을 활용할 수 있습니다.
- 성능 최적화: ELK는 대규모 데이터 처리와 검색을 위한 최적화된 인프라를 제공합니다.
- 유지보수 용이: ELK 스택의 업데이트와 개선 사항을 자동으로 활용할 수 있습니다.
- 확장성: ELK의 확장성과 유연한 검색 기능을 활용할 수 있습니다.
단점:
- 의존성: ELK 스택에 대한 의존성이 생깁니다.
- 비용: 대규모 데이터를 처리하기 위해 ELK 스택의 인프라를 유지하는 비용이 발생할 수 있습니다.
- 제어 부족: 벡터화 과정에서 세부적인 조정을 하기 어려울 수 있습니다.
결론
선택은 프로젝트의 요구사항과 환경에 따라 다릅니다. 만약 벡터화 로직을 세밀하게 조정하고 독립적으로 운영하려면 Java에서 벡터화를 직접 구현하는 것이 좋습니다. 반면에, 간편하게 대규모 데이터를 처리하고 관리하기 위해서는 ELK 스택의 기능을 활용하는 것이 더 나을 수 있습니다.
내 결론은 1번
자바 벡터화 후 벡터필드에 바로 꽂아버리는게 편하고좋은듯
굳이 ML까지..? 라는 생각이 든다
생각보다 대답을 잘해서 매번 날 놀라게한다 요녀석
참 특이하다 특이해~
'IT > Elasticsearch' 카테고리의 다른 글
[Elasticsearch] 백엔드 장애 감지 알림 시스템 구축 (ELK 기반 준실시간 서버 로그 모니터링) (0) | 2024.07.06 |
---|---|
[Elasticsearch] 회사 내부 첨부파일의 내용을 통합 검색할 수 있다면? (feat. Fasoo DRM, Tika, Confluence) (0) | 2024.07.05 |
[Elasticsearch] 4. 검색 API - _search API (2) | 2023.12.05 |
[Elasticsearch] 3. 벌크 API - _bulk API (0) | 2023.11.30 |
[Elasticsearch] 2. 데이터 처리 (0) | 2023.11.28 |