[지식 그래프 만들기] 2. 개인 데이터 적재 및 검색의 3 세대

윤희빈·2026년 9월 10일

동아리/CloudClub10기

목록 보기
4/4


스터디장님이 매주 공부할 주제와 키워드를 올려주신다. 이번에는 기본 용어를 공부하고, 직접 데이터를 준비해서 검색 방식에 따른 차이를 확인해봤다.

실습 데이터 고르기

개인 데이터를 활용하는 실습이었지만, 카톡은 너무 개인적인 내용 같아서 전공 수업을 정리해둔 노션을 사용하기로 했다. 그중 운영체제 수업 자료를 골랐다.

노션에서 Markdown 문서 11개를 내보내고, 이를 454개의 청크로 나눴다. 같은 데이터를 대상으로 grep, Elasticsearch의 BM25, PostgreSQL의 pgvector 검색을 비교했다.

코드와 실행 환경은 AI의 도움을 받아 구성했고, 직접 실행하면서 검색 결과가 어떻게 달라지는지 확인했다.

같은 데이터를 세 가지 방식으로 검색해보기

grep: 문자열 찾기

먼저 grep으로 원본 문서에서 문자열을 검색했다.

process를 검색했을 때는 113개 줄이 나왔지만, CPU 작업 순서를 검색했을 때는 결과가 없었다. 문서에 관련 내용이 있더라도 내가 입력한 문자열이 그대로 들어 있지 않으면 찾지 못했다.

BM25: 단어를 바탕으로 관련도 계산하기

다음으로 Elasticsearch에 청크 454개를 저장하고 BM25로 검색했다.

신기했던 것은 역색인이라는 개념이었다. 문서마다 어떤 단어가 있는지 하나씩 확인하는 대신, 단어를 기준으로 그 단어가 등장하는 문서를 찾을 수 있도록 미리 정리해두는 방식이다.

CPU 작업 순서로 검색하니 grep과 달리 결과가 나왔다. 상위 결과에는 SJF와 Round Robin 같은 CPU 스케줄링 알고리즘이 포함되어 있었다.

처음에는 관련된 결과가 나오니 의미를 파악한 것처럼 보이기도 했다. 하지만 내가 이해한 BM25는 검색어와 문서에 등장하는 단어를 바탕으로 관련도를 계산하는 방식이다. 단순한 등장 횟수뿐 아니라 단어의 희소성과 문서 길이 등도 반영하지만, 문맥이나 문장의 의미 자체를 이해해서 찾는 것은 아니다.

pgvector: 임베딩으로 유사한 내용 찾기

마지막으로 로컬 임베딩 모델을 이용해 청크를 384차원 벡터로 변환하고, PostgreSQL에 저장한 뒤 pgvector로 검색했다.

CPU 작업 순서를 검색했을 때 상위 결과는 다음과 같았다.

  • 문맥 교환 과정
  • 프로세스 동작
  • 프로세스 상태

CPU와 관련된 내용은 나왔지만, 내가 찾으려던 스케줄링에 더 가까운 결과는 오히려 BM25 쪽이었다.

운영체제가 다음에 실행할 프로세스를 결정하는 방법처럼 풀어서 검색했을 때도 기대한 결과가 상위에 잘 나오지는 않았다. 검색어를 스케줄링으로 바꾸니 관련된 내용이 나왔다.

이번 실습에서는 벡터 검색이라고 항상 원하는 결과를 더 잘 찾아주는 것은 아니라는 점을 확인했다. 다만 이번에 사용한 데이터와 모델, 검색어에서 나온 결과이므로, 이것만으로 어느 방식이 더 좋다고 단정할 수는 없을 것 같다.

다른 분들의 발표를 듣고 알게 된 것

청킹도 공부할 주제였다

나는 청킹을 그냥 AI에게 맡겼다. 문서를 나누는 준비 과정 정도로 생각했고, 청킹 자체를 공부할 대상으로는 생각하지 못했다.

그런데 다른 분들은 청킹도 전략에 따라 다르게 할 수 있다는 내용을 공부해오셨다. 같은 문서라도 어떻게 나누느냐를 고민할 수 있다는 점이 새로웠다.

이번에는 나눠진 청크를 그대로 사용했지만, 다음에는 어떤 기준으로 나눴는지, 그렇게 나누는 것이 적절한지도 살펴보고 싶다.

Docker 환경도 공용 자료를 참고하기

Docker도 AI의 도움을 받아 구성했다. 우선 실행할 수 있는 환경을 만드는 데 집중했다.

오늘 보니 스터디 깃허브에 인프라와 Docker 관련 코드가 올라와 있었다. 다음 주부터는 그 코드를 참고해서 실습을 진행하려고 한다.

첫 스터디를 마치고

직접 실습할 때는 검색 결과의 차이에 집중했는데, 다른 분들의 발표를 들으면서 내가 그냥 넘어간 부분도 공부할 주제가 될 수 있다는 것을 알게 됐다. 특히 청킹은 혼자 했다면 별생각 없이 넘어갔을 것 같다.

여담으로 스터디는 밤 9시에 시작했다. 학교에서 내 순서의 발표를 마친 뒤 짐을 싸서 이동하면서 디스코드로 다른 분들의 발표를 들었다.

다음 포스팅에서도 공부한 개념과 실습 결과, 스터디에서 새롭게 알게 된 점을 함께 정리해보려고 한다.

학습 및 실습 기록

profile
비니비니히비니의 정리블로그

0개의 댓글