이 페이지에서는 벡터 검색과 Spanner에서 벡터 검색이 작동하는 방식을 설명합니다.
벡터 검색은 고성능의 기본 제공 기능으로, 고차원 벡터 데이터에 대한 시맨틱 검색 및 유사성 일치를 지원합니다. Spanner는 트랜잭션 데이터베이스 내에 벡터 임베딩을 직접 저장하고 색인을 생성하여 별도의 벡터 데이터베이스와 복잡한 ETL 파이프라인이 필요하지 않도록 합니다.
주요 개념
이 섹션에서는 벡터 검색의 다음과 같은 주요 개념을 소개합니다.
- 벡터 임베딩
- 검색 방법 (KNN 및 ANN)
- 거리 함수
벡터 임베딩
벡터 임베딩은 비정형 데이터를 고차원 숫자로 표현한 것입니다. 벡터 임베딩은 머신러닝 모델을 사용하여 비정형 데이터에서 생성됩니다. 예를 들어 Gemini Enterprise Agent Platform 텍스트 임베딩 API를 사용하여 Spanner에 저장된 데이터의 텍스트 임베딩을 생성, 저장, 업데이트할 수 있습니다.
검색 방법
Spanner는 유사한 벡터를 찾는 두 가지 방법을 지원합니다.
K-최근접 이웃 (KNN): 쿼리와 데이터 세트의 모든 벡터 간 거리를 계산하여 정확한 검색을 수행합니다. 더 정확한 재현율을 제공하지만 대규모 데이터 세트의 경우 컴퓨팅 비용이 많이 듭니다.
근사 최근접 이웃 (ANN): 벡터 색인 (Google의 ScaNN 알고리즘 기반)을 사용하여 많은 벡터에서 일치하는 항목을 빠르게 찾습니다. 속도와 확장성을 높이기 위해 정확성 (재현율)을 약간 포기합니다.
주요 기능
확장성: 분할되지 않은 ANN 검색의 경우 수십억 개의 벡터를 지원하고, 분할된 KNN 워크로드의 경우 수조 개의 벡터를 지원합니다.
통합 AI 데이터베이스 및 엔진: GoogleSQL
ML.PREDICT또는 PostgreSQLspanner.ML_PREDICT_ROW함수를 사용하여 쿼리 흐름 내에서 직접 Agent Platform 모델에서 임베딩을 생성합니다.인라인 필터링: 성능 저하 없이 벡터 검색을 정형 메타데이터 필터와 효율적으로 결합합니다 (예: '카테고리가 '신발'이고 가격이 100 미만인 유사한 이미지 찾기').
LangChain 통합: LangChain에 대한 기본 지원을 통해 Spanner를 벡터 저장소로 사용하여 검색 증강 생성 (RAG) 애플리케이션을 빌드할 수 있습니다.
하이브리드 검색 기능
벡터 검색은 Spanner의 다른 데이터 기능과 결합할 때 가장 강력합니다.
| 조합 | 이점 |
|---|---|
| SQL 필터링을 사용한 벡터 검색 | 벡터 검색을 필터와 효율적으로 결합합니다 (예: '카테고리가 '신발'이고 가격이 100 미만인 유사한 이미지 찾기'). |
| 벡터 검색 + 전체 텍스트 검색 | 상호 순위 융합 (RRF)을 사용하여 시맨틱 유사성과 키워드 정밀도를 결합하여 검색 관련성을 높입니다. |
| 벡터 + 그래프 | 벡터 검색을 사용하여 속성 그래프에서 관련 진입점 (노드)을 찾은 다음 복잡한 관계를 탐색합니다. |
다음 단계
- Spanner AI 자세히 알아보기
- Agent Platform 텍스트 임베딩을 가져오는 방법 자세히 알아보기
- K-최근접 이웃 (KNN) 검색을 수행하는 방법 자세히 알아보기
- 근사 최근접 이웃 (ANN) 검색을 수행하는 방법 자세히 알아보기