정말 오랜만에 Elasticsearch 관련 글을 쓰는 것 같다. 데이터를 생성하는 모델이 변경되어서 기존 데이터를 싹 마이그레이션 할 일이 생겼다. 가장 편한건 데이터를 싹 만들어두고 서버가 보는 index를 변경하는 것이었지만, 그럼 서버의 재배포가 필요하다. 그래서 그냥 index를 새로하나 만들고 두 index를 교체하는 방식으로 작업을 진행하려고 했다. 불행하게도 두 index를 교체하는 방식은 따로 제공하지 않았고, copy to 하는 형식의 reindex를 제공했다. 사용법은 간단하다. POST _reindex { "source": { "index": "from index" }, "dest": { "index": "to index" } } 이렇게 요청했을 때 바로 동작했으면 참 좋았겠지만, ..
이전 글에서 사용했던 Cosine Search는 dense vector 하나만을 이용한 방법이었다. 그래서 내가 조금 더 다양한 정보를 갖고 있을 때, 이를 전부 활용하기 어렵다는 단점이 있다. 예를 들어, 내가 알고 있는게 게시물의 제목, 내용, 작성자, 작성 시간 등 몇 가지의 정보가 있음에도 게시물의 제목만 활용할 수 있다는 것이다. 모든 내용을 한문장에 섞어서 하나의 벡터화를 할 수도 있겠지만, 이럴 경우 엄밀히 말하면 각각을 비교한 결과가 아니게 된다. 이렇게 다양한 정보를 활용하기 위해서 Elasticsearch에서는 K-NN search 기능을 제공한다. 이를 이용해 검색 기능을 Springboot로 구현해봤다. 대략적인 구현은 cosine search에서 구현한 방식을 따라가려고 한다. 그..
작은 프로젝트로 텍스트 기반 검색 기능을 구현할 일이 생겼다. 처음에는 너무 막연했는데 Elasticsearch에서 텍스트 유사도 검색이라는 기능을 제공하는 것을 알게되었다. https://www.elastic.co/kr/blog/text-similarity-search-with-vectors-in-elasticsearch 벡터 필드를 사용한 Elasticsearch의 텍스트 유사도 검색 Elasticsearch 7.3 릴리즈에서는 벡터를 사용하여 문서 점수를 매기는 기능을 제공합니다. 이 게시물에서는 텍스트 임베딩과 벡터 필드를 사용하여 유사도를 검색하는 방법을 살펴봅니다. www.elastic.co 이 문서를 기반으로 Elasticseach cloud + Springboot를 이용해 검색 기능을 구현..
회사에서 작은 프로젝트를 진행하는데 Elasticsearch 를 써볼 기회가 생겼다. 들어가기 전에 Elasticsearch 가 뭔지에 대해 간단히 정리해보자 Elasticsearch 란? Elasticsearch는 텍스트, 숫자, 위치 기반 정보, 정형 및 비정형 데이터 등 모든 유형의 데이터를 위한 무료 검색 및 분석 엔진으로 분산형과 개방형을 특징으로 합니다. Elasticsearch는 Apache Lucene을 기반으로 구축되었으며, Elasticsearch N.V.(현재 명칭 Elastic)가 2010년에 최초로 출시했습니다. 간단한 REST API, 분산형 특징, 속도, 확장성으로 유명한 Elasticsearch는 데이터 수집, 보강, 저장, 분석, 시각화를 위한 무료 개방형 도구 모음인 El..
- Total
- Today
- Yesterday
- AWS
- 티스토리챌린지
- Kotlin
- Log
- JWT
- 후쿠오카
- CloudFront
- 람다
- 오블완
- AOP
- serverless
- java
- EKS
- cache
- S3
- springboot
- ChatGPT
- 스프링부트
- OpenFeign
- MySQL
- Elastic cloud
- AWS EC2
- docker
- elasticsearch
- GIT
- Spring
- openAI API
- lambda
- terraform
- OpenAI
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |