최신 데이터를 다루는 RAG 시스템, 검색 전략 고민 사례
정보(CVE)를 다루는 RAG 시스템을 만드는 과정에서 나온 질문입니다. 는 계속 새 항목이 추가되기 때문에 모든 내용을 미리 에 저장해두지 않고, 대신 NIST의 NVD API를 통해 최신 정보를 그때그때 가져오는 방식을 쓰고 있습니다.
사용자가 CVE 번호를 직접 물어보면 API로 바로 조회할 수 있어 문제가 없습니다. 하지만 사용자가 번호 없이 "XYZ 소프트웨어의 버퍼 오버플로우로 인한 " 같은 자연어 설명만 입력하고, 그 취약점이 LLM의 기준 시점보다 최근에 발견된 것이라면, 모델이 어떤 CVE를 찾아야 할지 알 수 없다는 문제가 생깁니다.
즉 NVD API를 호출하기 전에, 자유 형식 설명만으로 정확한 CVE 번호를 먼저 알아내야 하는 검색 단계가 필요합니다. 키워드 검색, 최근 CVE에 대한 의미 기반(시맨틱) 검색, 재순위 매김(리랭커) 등 실제 서비스에서는 어떤 방식을 쓰는지 조언을 구하고 있습니다.
핵심 포인트
- CVE(공개된 소프트웨어 취약점) 데이터는 계속 갱신되어 벡터DB에 전부 저장하지 않고 NVD API로 실시간 조회하는 방식을 채택
- CVE 번호를 직접 알면 API 조회로 바로 해결되지만, 자연어 설명만 주어지고 그 취약점이 LLM 학습 이후 발견된 것이면 어떤 CVE인지 알아낼 방법이 없음
- 자유 텍스트 설명에서 정확한 CVE를 찾아내는 검색 단계(키워드 검색·시맨틱 검색·리랭커 등)가 API 호출 전에 필요하다는 문제 제기
- 실제 들이 이런 상황을 어떤 전략으로 해결하는지에 대한 답변은 아직 없음