Postgres Embedding은Postgres용 오픈 소스 vector 유사도 검색으로, 근사 최근접 이웃 검색을 위해Hierarchical Navigable Small Worlds (HNSW)를 사용합니다.
다음 기능을 지원합니다:이 노트북은 Postgres vector 데이터베이스(
- HNSW를 사용한 정확 및 근사 최근접 이웃 검색
- L2 거리
PGEmbedding)를 사용하는 방법을 보여줍니다.
PGEmbedding 통합은 pg_embedding extension을 생성해 주지만, 다음 Postgres 쿼리를 실행하여 추가할 수 있습니다:
OpenAIEmbeddings를 사용하려면 환경 변수에 OpenAI API Key를 추가하세요.
Postgres에서 vectorstore 사용하기
PG에 vectorstore 업로드하기
HNSW 인덱스 생성
기본적으로 이 extension은 100% 재현율을 갖는 순차 스캔 검색을 수행합니다.similarity_search_with_score 실행 시간을 단축하기 위해 approximate nearest neighbor (ANN) 검색용 HNSW 인덱스 생성을 고려할 수 있습니다. vector 컬럼에 HNSW 인덱스를 생성하려면 create_hnsw_index 함수를 사용하세요:
- maxelements: 인덱싱할 element의 최대 개수를 정의합니다. 필수 파라미터입니다. 위 예시에서는 값이 3입니다. 실제 환경에서는 1000000과 같이 훨씬 큰 값을 사용합니다. 여기서 “element”는 데이터셋의 데이터 포인트(벡터)를 의미하며, HNSW 그래프에서 노드로 표현됩니다. 일반적으로 데이터셋의 행 수를 수용할 수 있는 값으로 설정합니다.
- dims: vector 데이터의 차원 수를 정의합니다. 필수 파라미터입니다. 위 예시에서는 작은 값을 사용했습니다. 예를 들어 OpenAI의 text-embedding-ada-002 모델로 생성된 데이터(1536 차원)를 저장한다면 1536으로 설정합니다.
- m: 그래프 구성 시 각 노드에 대해 생성되는 양방향 링크(“edges”)의 최대 개수를 정의합니다. 다음과 같은 추가 인덱스 옵션도 지원합니다:
- efConstruction: 인덱스 구성 중 고려할 최근접 이웃의 개수를 정의합니다. 기본값은 32입니다.
- efsearch: 인덱스 검색 중 고려할 최근접 이웃의 개수를 정의합니다. 기본값은 32입니다. 이러한 옵션을 구성하여 HNSW 알고리즘에 영향을 주는 방법은 Tuning the HNSW algorithm을 참고하세요.
PG에서 vectorstore 조회하기
Connect these docs programmatically to Claude, VSCode, and more via MCP for real-time answers.