벡터 인덱싱의 핵심 아키텍처
LlamaIndex의 VectorStoreIndex는 텍스트 청크를 노드(Node) 객체로 변환하고, 각 노드를 임베딩 모델을 통해 고정 차원의 벡터로 변환합니다. 이러한 벡터들은 선택된 벡터 저장소(in-memory, Pinecone, Weaviate, Qdrant 등)에 메타데이터와 함께 저장됩니다. 기본값으로 SimpleVectorStore를 사용하여 메모리 기반 빠른 검색을 지원하며, 프로덕션 환경에서는 전문 벡터 데이터베이스를 StorageContext를 통해 지정할 수 있습니다.
검색 프로세스와 유사도 계산
쿼리 시간에는 사용자의 질문도 동일한 임베딩 모델로 변환된 후, 코사인 유사도(cosine similarity)를 기준으로 상위 k개의 벡터를 검색합니다. VectorStoreQuery 객체를 통해 검색 모드와 상위 결과 개수를 제어하며, 결과로 반환되는 노드에는 유사도 점수가 함께 포함됩니다. 이러한 의미론적 검색은 RAG 파이프라인의 핵심으로, 사용자 의도와 문맥적으로 유사한 문서 청크를 정확히 추출합니다.
실무 최적화 고려사항
대규모 데이터 인덱싱 시, insert_batch_size 파라미터(기본값 2048)를 메모리 상황에 맞게 조정하면 원격 벡터 데이터베이스 삽입 성능을 크게 개선할 수 있습니다. 하이브리드 검색을 통해 벡터 기반 의미 검색과 키워드 기반 검색을 결합하거나, 메타데이터 필터링을 적용하여 검색 정확도를 높일 수 있습니다. Auto-merging Retriever 같은 고급 기법으로는 계층적 청킹 구조에서 리프 노드에만 임베딩을 수행하고 쿼리 후 문맥 확장을 통해 효율성과 정보량의 균형을 맞출 수 있습니다.