역색인 (Inverted Index)
쉽게 풀면
'이 단어는 어떤 문서들에 들어있다'는 목록을 미리 만들어 두어서, 검색할 때 전체 문서를 다 뒤지지 않고도 빨리 찾을 수 있게 해주는 구조이다.
왜 중요한가
역색인은 각 용어가 어느 문서에 나타나는지를 미리 기록해 두어 질의어로 문서를 즉시 찾을 수 있게 하는 자료구조로, 사실상 모든 전문 검색 시스템의 핵심입니다. 검색 속도와 저장 공간의 균형, 갱신 비용이 시스템 설계의 주요 고려사항입니다. 웹 검색엔진처럼 초당 수만 건의 질의를 처리해야 하는 환경에서 역색인은 사실상 유일하게 실용적인 색인 구조로 자리잡았다. 실시간으로 새 문서가 추가되는 서비스에서는 역색인을 점진적으로 갱신하는 기법이 별도로 요구된다.
논문에서는 이렇게 쓰입니다
검색엔진이 방대한 문서량을 빠르게 처리하기 위해 역색인이라는 자료구조를 활용함을 설명하는 문장이다.
역색인의 목록 부분을 더 작은 용량으로 압축해 저장하고 불러오는 속도를 높이는 기법을 설명한 문장입니다.
조금 더 깊게 보면
역색인은 용어 단위 매칭에 최적화되어 있어 의미적 유사성은 포착하지 못하며, 이 한계가 밀집 벡터 색인과의 결합(하이브리드 검색)으로 보완되고 있습니다. 위치 정보를 포함하는지에 따라 구문 검색 가능 여부와 색인 크기가 크게 달라집니다. 역색인은 각 용어가 어느 문서에 몇 번 나타나는지를 기록한 목록 구조로, 특정 단어를 포함한 문서를 찾을 때 전체 문서를 순차 탐색할 필요 없이 해당 용어의 항목만 조회하면 되어 검색 속도를 획기적으로 높인다. 등장 위치까지 함께 기록해 두면 인접한 단어들의 구문 검색도 지원할 수 있다. 분산 검색시스템에서는 역색인 자체를 여러 서버에 나누어 저장해 대규모 컬렉션에서도 빠른 응답 속도를 유지한다.
주의할 점
역색인은 색인 구축 이후 문헌이 추가·삭제될 때 갱신 비용이 발생하므로 대규모 동적 컬렉션에서는 색인 갱신 전략이 중요하다. 색인 크기가 문서 집합의 크기에 비례해 커지므로, 대규모 컬렉션에서는 압축 기법과 분산 저장이 함께 요구된다는 점에 유의해야 한다.