앞 편의 ANN(HNSW) 알고리즘을 실제로 구현·운영해 주는 도구가 벡터 데이터베이스(vector database)다. 프로덕션 RAG는 보통 벡터를 이 전용 DB에 저장·검색한다. 이번 편은 벡터 DB가 무엇이고, RAG를 위해 어떤 작업을 하는지 흐름으로 정리한다.
1. 벡터 데이터베이스란
벡터 DB는 고차원 벡터 데이터를 저장하고, 앞서 본 ANN 같은 벡터 지향 알고리즘을 구현하도록 처음부터 설계된 데이터베이스다. LLM과 시맨틱 검색 같은 임베딩 기반 기법이 폭발적으로 늘어난 2020년대 초에 인기를 얻었다. 일반 관계형 DB는 시맨틱 검색에서 성능이 나빠 비효율적인 KNN에 가까운 속도를 보였다. 반면 벡터 DB는 HNSW용 proximity graph 구축이나 벡터 거리 계산 같은 작업에 최적화돼, 대부분의 벡터 기반 애플리케이션(특히 RAG)에서 훨씬 빠르고 잘 확장된다.

2. 검색을 준비하는 단계
벡터 DB가 검색을 처리할 수 있게 만드는 과정은 몇 단계로 이뤄진다(일부는 자동 처리된다).
- 데이터베이스를 설정한다.
- 문서를 로드한다.
- 키워드 검색을 위한 sparse vector를 만든다.
- 시맨틱 검색을 위한 dense 임베딩 벡터를 만든다.
- ANN 검색을 위한 인덱스(예: HNSW)를 만든다.
여기까지 되면 실제 검색을 실행할 준비가 끝난다.

3. 컬렉션 생성
먼저 DB 인스턴스를 만들거나 기존 인스턴스에 연결한다. 그다음 데이터를 담을 컬렉션(collection)을 만든다. 예를 들어 뉴스 기사의 제목·본문을 담는 article 컬렉션을 만들고, 각 필드의 데이터 타입과 — 중요하게는 — 각 기사의 시맨틱 벡터를 만들 임베딩 모델(vectorizer)을 지정한다.

4. 데이터 추가
컬렉션 설정이 끝나면 데이터를 넣는다. batch(배치) 방식으로 객체를 추가하면 삽입과 동시에 오류를 세고 추적할 수 있어, 나중에 바로잡거나 오류가 너무 많으면 루프를 멈출 수 있다.

5. 벡터 검색
데이터가 들어가면 벡터 검색을 할 수 있다. 검색할 컬렉션을 지정하고 텍스트 질의를 넘긴다. 이때 metadata로 distance를 요청하면, 각 객체의 벡터와 질의 벡터 사이의 거리를 함께 돌려받는다.

6. 키워드 검색
키워드 검색도 가능하다. Weaviate는 inverted index를 자동 생성해, 어떤 단어가 각 문서에 얼마나 쓰였는지 매핑한다. 앞 모듈에서 배운 BM25 질의로 상위 문서를 요청할 수 있다.

7. 하이브리드 검색
벡터 검색과 키워드 검색을 합친 하이브리드 검색도 지원한다. 두 검색이 백그라운드에서 병렬로 수행되고, alpha 파라미터로 두 점수의 가중치를 조절한다. 예를 들어 alpha = 0.25면 벡터 검색 25%, 키워드 검색 75%로 가중해 재순위화한다. 실무에서 대다수 기업이 이 방식을 쓴다 — 벡터의 의미 유사성과 키워드의 엄격한 매칭을 균형 있게 쓸 수 있기 때문이다.

8. 필터 검색
그 위에 필터를 적용할 수도 있다. 특정 property의 값이 조건에 맞는 객체만 통과시키는 방식으로, 앞 모듈의 metadata 필터링을 그대로 적용한다.

9. 전체 워크플로
처음부터 끝까지의 흐름은 이렇다 — DB 설정 → 데이터 로드·인덱싱 → 하이브리드 검색·필터를 포함한 질의 실행.


다음 글부터는 검색 품질을 크게 좌우하는 전처리 — 청킹(chunking)으로 넘어간다. 문서를 어떤 단위로 쪼개 인덱싱하느냐가 왜 중요한지 살펴본다.
'AI > RAG' 카테고리의 다른 글
| 고급 청킹 기법 (0) | 2026.07.02 |
|---|---|
| Chunking (0) | 2026.07.02 |
| 근사 최근접 이웃 (ANN) (0) | 2026.07.02 |
| 검색(Retriver) 성능 평가 (0) | 2026.07.02 |
| Hybrid Search & RRF (0) | 2026.07.02 |
