제01권 · 제10호 CS · AI · Infra 2026년 5월 30일

AI 용어집

용어 사전레퍼런스학습
CS 기초 데이터 엔지니어링

Inverted Index역색인

난이도

쉽게 이해하기

큰 텍스트 컬럼을 행마다 훑으면 느립니다. 역색인은 방향을 뒤집어 용어→문서 목록을 저장해, 사전에서 용어를 찾고 바로 해당 포스팅 리스트로 점프합니다. 많은 질의가 원문을 읽지 않고도 사전+포스팅만으로 처리됩니다.

비유와 예시

  • 책의 찾아보기: 단어(예: wind)를 찾으면 그 단어가 있는 페이지 목록이 나옵니다. DB에서는 용어→문서 ID 목록이 같습니다.
  • 운영 로그 필터: "timeout AND 500"이면 두 용어의 포스팅 리스트를 교집합합니다. 예: timeout=[12,15,99], 500=[15,50,99] → [15,99].
  • 빠른 단일 용어 응답: 일부 구현은 단일 용어의 상위 N 후보를 별도 표로 보관해 전체 리스트 스캔을 피합니다.

한눈에 비교

Inverted IndexBloom Filter IndexFull Scan
결과정확한 문서 ID(옵션: TF/오프셋)존재 가능성(가양성)전 행 평가
질의AND/OR/구문/NEAR제한적임의 조건(느림)
저장사전+포스팅(인덱스만으로 답 가능)비트셋/해시 요약인덱스 없음
튜닝사전/블록/압축, 스킵·스코어해시 수/크기거의 없음

어디서 왜 중요한가

  • 원격 오브젝트 스토리지: 작은 임의 읽기가 비싸므로 사전 블록화+순차 읽기, 포스팅 연속 저장으로 왕복을 줄입니다.
  • 검색 엔진/인메모리 모듈: docID를 delta+varint로 압축해 메모리·대역폭을 절감하고, 스킵/스코어 보조 색인으로 교집합·상위 N을 가속합니다.
  • 정보검색(IR) 실무: 포스팅은 docID 정렬·연속 저장, 사전은 토큰→오프셋 매핑과 빈도 통계를 유지합니다.

자주 하는 오해

  • ❌ 본문을 항상 읽어야 한다 → ✅ 많은 질의가 사전+포스팅만으로 해결됩니다.
  • ❌ 블룸 필터면 충분하다 → ✅ 블룸 필터는 가양성이 있어 추가 확인 스캔이 필요합니다.
  • ❌ 사전은 해시맵이면 끝 → ✅ FST나 블록+front‑coding 등 레이아웃 선택이 I/O 패턴을 좌우합니다.

대화에서는 이렇게

  • "텍스트 컬럼을 역색인으로 바꿔 후보 읽기를 줄이죠. 사전 블록 크기도 튜닝해야 해요."
  • "이건 AND 교집합만 계산하면 돼서 원문은 안 열어도 됩니다."
  • "docID는 delta+varint로, 길게 늘어선 리스트엔 스킵 테이블을 둡니다."
  • "구문 검색이 느린 건 위치 오프셋을 안 저장해서예요."

함께 읽으면 좋은 용어

참고 자료

  • 공식 문서
    Apache Lucene index package

    Lucene inverted index의 postings, term dictionary, TermsEnum/PostingsEnum API 설명.

  • 공식 문서
    Elasticsearch index_options

    검색과 하이라이팅을 위해 역색인에 저장할 docs/freqs/positions/offsets 정보를 설정하는 공식 문서.

  • 도서
    A first take at building an inverted index

    역색인 구축의 기본 자료구조와 postings list 개념을 설명하는 Stanford IR book 장.

  • 도서
    Index construction

    대규모 텍스트 컬렉션에서 inverted index를 구축하는 indexing 절차를 다룬다.

도움이 되었나요?