pgvector를 활용한 벡터 검색
pgvector 확장 기능으로 임베딩을 저장하고 ivfflat / HNSW를 사용해 근사 최근접 이웃 검색을 실행해보세요.
pgvector를 활용한 벡터 검색은(는) CoddyKit의 무료 SQL Academy 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 SQL Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. SQL Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
벡터는 어디에 사용합니까?
임베딩은 의미를 인코딩합니다. 같은 주제를 다루는 두 문서는 비슷한 벡터를 가집니다. 벡터 검색은 의미 기반 검색, RAG(검색 증강 생성), 추천 기능을 뒷받침합니다.
pgvector 활성화
이 확장 기능은 널리 제공됩니다(RDS, Cloud SQL, Supabase에는 기본으로 포함되어 있습니다).
CREATE EXTENSION vector;벡터 열
임베딩 모델의 차원 수를 사용하여 열을 정의합니다.
CREATE TABLE docs (
id BIGSERIAL PRIMARY KEY,
title TEXT NOT NULL,
body TEXT NOT NULL,
embedding vector(1536)
);
-- 1536 is OpenAI text-embedding-3-small dimension; varies by model.임베딩 삽입
벡터를 배열 리터럴로 삽입합니다.
INSERT INTO docs (title, body, embedding)
VALUES ('SQL Course', 'Learn SQL', '[0.013, -0.024, ...]');거리 연산자
pgvector는 세 가지를 제공합니다.
<->— 유클리드(L2) 거리<#>— 음의 내적<=>— 코사인 거리(임베딩에 가장 일반적으로 사용됨)
최근접 이웃 검색
쿼리 벡터에 가장 가까운 문서를 찾습니다.
SELECT id, title, 1 - (embedding <=> $1) AS similarity
FROM docs
ORDER BY embedding <=> $1
LIMIT 10;IVFFlat 인덱스
대규모 데이터셋에서는 근사 최근접 이웃(ANN) 인덱스를 만듭니다.
CREATE INDEX docs_embedding_idx
ON docs USING IVFFLAT (embedding vector_cosine_ops)
WITH (lists = 100);
-- Tune lists by row count: rule of thumb sqrt(N).
-- Set probes per query for accuracy:
SET ivfflat.probes = 10;HNSW 인덱스(PG 16+)
많은 경우 IVFFlat보다 재현율과 지연 시간이 더 우수합니다.
CREATE INDEX docs_embedding_hnsw
ON docs USING HNSW (embedding vector_cosine_ops);
SET hnsw.ef_search = 100;필터링된 벡터 검색
벡터 필터와 구조화된 필터를 결합합니다.
SELECT id, title
FROM docs
WHERE language = 'en'
AND created_at >= NOW() - INTERVAL '30 days'
ORDER BY embedding <=> $1
LIMIT 10;
-- For best perf, partial index on the filter.RAG 패턴
임베딩으로 관련 문서 N개를 검색하여 LLM에 컨텍스트로 전달합니다.
-- 1. Embed user query
-- 2. SELECT top-N docs by cosine
-- 3. Send docs + query to LLM
-- 4. Return LLM's answer to user하이브리드 검색
최상의 결과를 위해 벡터 검색과 어휘 검색(tsvector)을 결합합니다. 어느 한쪽만으로는 모든 항목을 찾을 수 없습니다.
SELECT id, title,
0.6 * (1 - (embedding <=> $1)) + 0.4 * ts_rank(search_doc, $2) AS score
FROM docs
WHERE embedding <=> $1 < 0.7
OR search_doc @@ $2
ORDER BY score DESC LIMIT 10;차원 수 선택
임베딩이 클수록 더 정확하지만 저장 공간이 더 많이 필요하고 느려집니다. 많은 앱은 384~768차원 모델로도 충분히 작동합니다. 하나의 모델을 선택하고 계속 사용하십시오.
요약
pgvector는 Postgres에 일급 벡터 검색 기능을 추가합니다.
- vector(N) 열 자료형
- IVFFlat/HNSW 인덱스
- 임베딩을 위한 <=> 코사인 거리
- 최상의 재현율을 위한 FTS와의 하이브리드 구성
빠른 확인
OpenAI 임베딩을 사용하여 의미적 유사성을 기준으로 검색하고 있습니다. 일반적으로 어떤 pgvector 거리 연산자를 사용합니까?
자주 묻는 질문
“pgvector를 활용한 벡터 검색” 강의는 무료인가요?
네 — “pgvector를 활용한 벡터 검색” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 SQL Academy 강의 전체를 잠금 해제할 수 있습니다. SQL Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“pgvector를 활용한 벡터 검색”에서 뭘 배우나요?
pgvector 확장 기능으로 임베딩을 저장하고 ivfflat / HNSW를 사용해 근사 최근접 이웃 검색을 실행해보세요. 브라우저에서 직접 실행하는 실습 코드로 SQL Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
SQL Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 SQL Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.
“pgvector를 활용한 벡터 검색” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 SQL Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 SQL Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 트라이그램 검색(pg_trgm)으로 퍼지 매칭하기
- tsvector와 GIN을 활용한 전문 검색
- PostGIS를 활용한 공간 인덱싱
- pgvector를 활용한 벡터 검색