C.W.K.
Stream
Lesson 09 of 10 · published

pgvector: Postgres 안 임베딩

~14 min · extensions, vector, ai

Level 0스키마 새싹
0 XP0/86 lessons0/10 achievements
0/120 XP to next level120 XP to go0% complete

데이터가 이미 사는 곳에서 vector 유사도

pgvector extension 이 PostgreSQL 에 vector 데이터 타입과 유사도 연산자 (<-> L2, <#> 내적, <=> 코사인) 추가. ANN 인덱스 (HNSW, IVFFlat) 가 별도 vector DB 없이 수백만 vector 검색 실용적으로.

pgvector AI feature 모양

  1. 각 행에 임베딩 생성 (OpenAI, Cohere, 로컬 모델 — 선택).
  2. 같은 행의 vector(N) 컬럼에 저장.
  3. 빠른 approximate nearest neighbor 위한 HNSW 인덱스 추가.
  4. 쿼리: "이 쿼리 임베딩에 가장 가까운 5 행 찾기."

맞는 답인 때

단일 Postgres 인스턴스로 약 1천만 vector 까지, pgvector 가 dedicated vector DB 보다 운영적으로 단순 + 임베딩을 relational 데이터와 함께 쿼리하는 기쁨. 그 스케일 넘어가면 dedicated vector store (Pinecone, Weaviate, Qdrant) 가 절대 처리량에서 이김.

Code

Vector 컬럼 설치 + 생성·sql
CREATE EXTENSION IF NOT EXISTS vector;

ALTER TABLE documents
ADD COLUMN embedding vector(1536);  -- 1536 = OpenAI text-embedding-3-small

-- 빠른 코사인 거리 검색 위한 HNSW 인덱스
CREATE INDEX documents_embedding_hnsw
ON documents USING hnsw (embedding vector_cosine_ops);
Insert + 쿼리·sql
-- 앱이 임베딩 생성 + 리터럴로 insert
INSERT INTO documents (title, body, embedding)
VALUES ('Pippa Quest', '...', '[0.012, -0.041, ...]');

-- 쿼리 임베딩에 가장 유사한 5 document 찾기
SELECT id, title,
       1 - (embedding <=> '[0.012, -0.041, ...]'::vector) AS similarity
FROM   documents
ORDER  BY embedding <=> '[0.012, -0.041, ...]'::vector
LIMIT  5;
하이브리드 검색: 필터 + 유사도·sql
-- 유사한 document 찾되, 맞는 태그만
SELECT id, title
FROM   documents
WHERE  tags @> ARRAY['python']
ORDER  BY embedding <=> :query_vector
LIMIT  10;

External links

Exercise

샌드박스 Postgres 에 pgvector 설치. 테이블에 vector(384) 컬럼 추가. 임베딩 생성 (어떤 로컬 모델이든 — sentence-transformers/all-MiniLM-L6-v2 가 384-dim). 100 행 INSERT. HNSW 인덱스 추가. 유사도 쿼리 실행.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.