분류 전체보기87 Elasticsearch hybrid search with RRF(Reciprocal rank fusion) 개요이전 게시글에서는(https://blog.igooo.org/157) Elasticsearch에 semantic_text 타입을 사용한 시맨틱 검색을 사용하는 방법에 대하여 알아봤다. 이번 게시글에서는 sematic search와 full-text 검색을 결합한 하이브리드 검색을(hybrid search) 사용하는 방법에 대하여 알아본다.하이브리드 검색에서 semantic-search은 텍스트의 의미에 따라 결과를 검색하고, full-text search는 정확한 단어 일치에 초점을 맞춰서 검색한다. 하이브리드 검색은 sematic, full-text 두 가지 방법을 결함함으로써 둘 중 하나의 검색 결과가 충분하지 않을 경우 더욱 관련성 있는 결과를 제공할 수 있다. Getting StartedReq.. 2024. 12. 3. Elasticsearch 시맨틱 검색(semantic search) 개요Elasticsearch의 semantic_text를 사용하여 시맨틱 검색을 사용하는 방법과, Full-text saerch 검색과는 어떤 차이점이 있는지 같이 알아본다. Full-text searchFull-text 검색은 사용자가 입력한 문장을 언어에 맞는 형태소 분석기를 사용하여 각각의 품사로 분리하고, 분리된 단어들은 BM23(https://en.wikipedia.org/wiki/Okapi_BM25) 알고리즘에 따라 문서 안에 키워드의 발생 빈도, 문서의 길이 등을 값을 기준으로 평가하여 score가 놓은 문서를 찾는 방식이다.단점은 형태소 분석기로 분리된 단어에 대해서만 검색이 가능하다. (ex 맛집으로 검색하면 식당이 들어간 문서는 검색되지 않는다.동의어를 사용하면 처리가 가능하지만 사용자.. 2024. 11. 27. [Spring] Redisson으로 분산락 구현하기(Distrubuted Lock) 개요분산락은(Distrubuted Lock) 서로 다른 프로레스가 공유 리소스를 상화 배타적인 방식으로 작동해야 하는 분산 환경에서 매우 유용한 방식이다.Redis를 사용하면 쉽게 분산락을(Distrubuted Lock) 구현할 수 있다. Redis의 데이터 처리는 Single Thread로 처리되며 모든 요청이 순차적으로 처리되기 때문에 DB를 사용한 분산락 보다 쉽게 구현이 가능한다. Redis ClientLettuceSpring에 spring-boot-starter-data-redis를 사용하면 lettuce-core 라이브러리가 기본적으로 redis client로 사용된다. lettuce는 redis lock 관련 기능은 별도로 제공하지 않고, 일반적으로 Spin lock 형태로 별도로 구현한다... 2024. 11. 21. LLM 프롬프트 디자인 AI를 (LLM) 사용하여 원하는 결과를 얻기 위해서는 원하는 결과물에 대하여 프롬프트를 통해 상세하게 알려주어야 한다. 이를 프롬프트 디자인이라 하고 아래 7가지 항목에 대하여 프롬프트를 상세하게 작성해야 원하는 사용자가 원하는 결과물을 얻을 수 있다. AI 예제 프롬프트이전 포스팅에서 구현했던(https://blog.igooo.org/150) Spring AI 예제를 통해 각 항목에 맞게 프롬프트를 디자인 했는지 알아본다.You are a friendly AI assistant designed to help with the management of a user's todo called igooo. Your job is to answer questions about and to perform acti.. 2024. 11. 12. Spring Batch MongoDB 빠르게 수집하기 (MongoCursorItemReader) 개요MSA 구조로 개발하면서 서비스는 점점 작은 기능 단위로 나눠지고 그로 인해 데이터 구조도 단순해지면서 MySQL과 같은 RDB에서 MongoDB 같은 NoSQL로 이동하고 있고, Spring에서도 RDB만 지원 기능이 점점 MongoDB도 지원하도록 기능이 추가되고 있다. (Spring Batch에서 MongoDB를 JobRepository로 제공 예정 https://github.com/spring-projects/spring-batch/issues/877) MongoDB를 사용하는 곳이 늘어 남에 따라 Spring Batch에서도 지속적으로 MongoDB 관련 기능이 추가되고 있는데 그중 MongoDB에서 데이터를 조회하는 MongoCursorItemReader에 대하여 알아본다. MongoPa.. 2024. 11. 8. Building a SpringBoot Monorepo with Gradle 개요Gradle을 사용하여 프로젝트를 Monorepo로 관리하는 방법에 대하여 설명한다. MonorepoMongorepo와 multi-repo에 대하여 장단점이 있지만 어떤 기술이나 그렇지만 프로젝트 상황에 맞게 선택해서 사용하도록 한다.두 방법에 차이와 장담점에 대해서는 아래 링크에 잘 설명되어 있다.https://www.thoughtworks.com/insights/blog/agile-engineering-practices/monorepo-vs-multirepo 개인적인 생각으로는 프로젝트 인원이 적은 경우 Monorepo가 더 효율적이었고, 깃 브랜치 전략에 따라서도 프로젝트 상황에 맞게 선택하면 좋다. 프로젝트 구조Java 프로젝트로 구성할 예정이고 Gradle로 프로젝트를 구성한다. shop .. 2024. 11. 6. 이전 1 2 3 4 ··· 15 다음