공부(215)
-
[PostgreSQL] postgres GIN 인덱스
본 포스팅은 다음 블로그 글을 참고하여 작성하였습니다.https://postgrespro.com/blog/pgsql/4261647 Indexes in PostgreSQL — 7 (GIN)We have already got acquainted with PostgreSQL indexing engine and the interface of access methods and discussed hash indexes , B-trees , as well as GiST and SP-GiST indexes. And this article will feature GIN index. GIN "Gin?.. Gin is, it seems, such an Ampostgrespro.com 개요GIN은 Generalized Inv..
2025.02.21 -
[postgreSQL] RAG 시스템에서 hybrid search 구현 (키워드 검색 + 유사도 검색)
CREATE EXTENSION IF NOT EXISTS vector;개요postgres에 저장된 문서 정보를 조회하여 사용자의 질의를 처리하는 RAG 시스템을 문서 유사도 검색으로 구현했더니 질의에 존재하는 키워드들을 잘 가져오지 못 하는 문제가 발생했습니다. 예를 들어 사용자가 "모든 회의록의 내용을 요약해줘"라는 질의를 보내면 "회의록" 키워드가 포함된 문서들을 잘 가져오지 못 했습니다. 문서 유사도 검색으로는 한계를 느꼈고 키워드 기반 검색을 추가한 hybrid search를 구현하기로 결정했습니다. 이번 포스팅은 사용자의 자연어 질의를 분석하여 hybrid_search를 통해 필요한 문서를 조회하는 기능을 구현한 과정을 기록한 포스팅입니다.postgres 환경 설정저희 프로젝트는 확장성이 굉장히 ..
2025.02.19 -
[PostgreSQL] postgres SCAN 종류 (Bitmap SCAN)
개요postgres에서는 데이터를 찾을 때 다양한 SCAN을 사용합니다. 그 중 Sequential SCAN, Index SCAN, Bitmap SCAN에 대해 알아보려고 합니다. 쿼리를 실행할 때 쿼리 계획을 살펴보면 해당 쿼리가 어떠한 SCAN을 사용하는지 확인할 수 있습니다. 테스트를 할 page 테이블을 생성합니다.CREATE TABLE page(id serial PRIMARY KEY, content TEXT); 랜덤한 값 100만개를 넣어줍니다.INSERT INTO page (content)SELECT md5(random()::text || clock_timestamp()::text) -- 랜덤한 문자열 생성FROM generate_series(1, 1000000); Sequential S..
2025.02.12 -
[PostgreSQL] PostgreSQL Full Text Search
tsvector @@ tsquerytsquery @@ tsvectortext @@ tsquerytext @@ textPostgreSQL 공식 문서를 정리한 포스팅입니다.https://www.postgresql.org/docs/current/textsearch-intro.html 12.1. Introduction12.1. Introduction # 12.1.1. What Is a Document? 12.1.2. Basic Text Matching 12.1.3. Configurations Full Text Searching (or just text search) …www.postgresql.org Full Text Search란?Full text search를 사용하면 쿼리의 조건을 만족하는 자연어 문서를..
2025.02.03 -
[redis] node.js 환경에서 redis 분산 락 구현하기
개요현재 제가 진행 중인 프로젝트는 api 서버와 websocket 서버가 별도의 프로세스로 띄워져서 동작하고 있습니다. 여기서 api 서버와 websocket 서버가 같은 자원을 공유하고 있어서 동시성 문제를 해결하기 위해 분산 락을 적용하기로 했습니다.처음에는 npm의 simple-redis-mutex 패키지를 사용하였는데 원인 모를 에러가 계속 발생하더라고요...https://www.npmjs.com/package/simple-redis-mutex simple-redis-mutexMutex lock implemented using redis. Latest version: 2.1.0, last published: a month ago. Start using simple-redis-mutex in yo..
2025.01.10 -
[redis] redis의 transaction
redis transactionredis의 transaction 기능을 사용하면 여러 명령어들을 한 번에 실행할 수 있습니다. redis에서 다음 명령어를 통해 transaction 기능을 사용할 수 있습니다. MULTI : 트랜잭션을 시작합니다. 이후 실행하는 명령어들을 모두 큐에 저장합니다.EXEC : 트랜잭션 안에서 큐에 저장된 연산들을 실행하고 connection 상태를 normal로 되돌립니다.DISCARD : 트랜잭션 안에서 큐에 저장된 연산들을 제거하고 connection 상태를 normal로 되돌립니다. 만약 WATCH가 적용되어 있었다면 WATCH를 취소합니다.WATCH : key에 watch를 적용하면 EXEC 명령어는 오직 해당 key가 변경되지 않았을 때만 실행합니다.redis tr..
2025.01.09