결론부터 말하자면 잘 해내지 못해 아쉽다. 벡터 DB에 대해 미숙해서 그런가, 조사 방향을 뚜렷하게 잡지 못하고 헤맸다. 여러 DB를 찾다가, Chroma DB와 Pinecone DB 예제 코드를 보고, Milvus라는 멀티모달 DB도 찾아보았다. Pinecone DB에 사용할 데이터를 넣으려고 시도했지만 원활하게 되지 않았다. Pinecone 버전이 구버전과 신버전으로 나뉘어져 있었고, 둘 중 무엇을 써야하는지 고민하다 시간이 너무 지체되어 마무리지었다.
벡터 DB 조사는 나와 다른 팀원 한 분이 같이 조사를 했는데, 그 분이 Chroma와 Qdrant DB에 문서를 넣어서 성능 비교를 하셨고, Qdrant가 성능이 더 좋다는 결론을 내리셨다. 다른 팀원들도 Qdrant가 더 좋을 것 같다고 하셔서 Pinecone에서 시간을 더 쓸 필요는 없어보였다. 머리 아프게 더 고민하지 않아도 되어 기쁘면서도, 내가 더 잘 해냈다면 어땠을까 씁쓸하기도 했다.

위는 팀에서 쓸 데이터 중 일부이다. 제10장 재해보상 아래 제60조(재해보상)가 있는, 장-조-항 구조이다.
# ✂️ "제1조", "제2조" 등의 조문 단위로 분할
def split_by_articles(text):
pattern = r'(제\d+조.*?)(?=제\d+조|$)'
articles = re.findall(pattern, text, re.DOTALL)
return articles
'장'을 추출하기에는 '제60조(재해보상)'과 같이 문서 길이가 너무 짧으니, 조문 단위로 문서를 분할했다.
💡 과정 요약
1. DOCX 파일(복무규정)을 읽는다.
2. 조문(제1조, 제2조…) 단위로 분할한다.
3. 각 조문을 문장 임베딩(SentenceTransformer)으로 벡터화한다.
4. FAISS로 벡터 DB를 만들고 저장한다.
5. 저장한 벡터 DB에서 검색 질의(query)를 통해 유사 조항을 찾아 출력한다.

검색해본 결과! '직장에서 누가 나 괴롭혀'라고 질문을 입력했을 때, 직장 내 괴롭힘 행위에 대한 문서들이 검색되는 걸 확인할 수 있다. 조항 단위로 문서를 분할해도 어느정도 나오는 것 같다. 더 상세한 포맷팅은 내일 얘기해보기로!
아까 본 결과는 문서 분할을 위한 정규표현식을 한 번 수정한 결과이다. 기존 정규표현식은 아래와 같은데,
pattern = r'(제\d+조[^제]+)'
[^제]+는 "제"가 중간에 한 번이라도 다시 나오면 거기서 멈춘다. 따라서 문장 중간에 "제"라는 단어가 또 등장하면 그 앞에서 잘리게 되는 것이다.

아까는 동그라미 친 부분이 잘 나왔지만,

정규표현식에서는 '배제' 즉 '제'가 나오자 문서 분할이 되어버렸다.
사실 나는 저 부분을 보고 별 생각이 없었는데, 다른 팀원이 '저 부분은 왜 잘린 거야?'라고 묻자 이상함을 감지했다. 😅 앞으로는 더 꼼꼼히 확인해봐야지!

주말 내내 ‘프로젝트 해야 한다’는 압박감에 마음이 무거웠다. 그런데 아이러니하게도, 그 부담감 속에서 정작 프로젝트 준비는 제대로 못 했고, 그렇다고 온전히 쉬지도 못한 채 시간을 흘려보냈다. 마음도 시간도, 모두 불편하게 지나가버린 셈이다. 이건 아니다 싶었다.
나는 하고 싶은 게 참 많다. 최종 프로젝트 뿐만 아니라, 건강한 집밥 챙겨먹기, 빨래나 청소 같은 집안일, 일기나 일일 회고 같은 기록까지. 영어 공부나 독서는 당분간 미뤄두기로 했지만, 그 외의 일들은 모두 나를 돌보고 유지하기 위해 꼭 필요한 일들이다.
그런데 그동안 내 시간 사용은 늘 극단적이었다. 평일에는 "체력도 없고 공부하고 싶지도 않다"며 공부를 포기하고, 주말이 되면 '이제라도 공부해야 하니까' 하며 쉬는 것을 미뤘다. 결국 평일엔 힘들어서 아무것도 못 하고, 주말엔 제대로 놀지도 못한 채 죄책감 속에서 공부를 붙잡고 있었다. 어느 쪽에서도 만족을 느끼지 못한 채, ‘해야 하는 일’과 ‘하고 싶은 일’ 사이에서 계속 흔들리고 있었던 거다.
하지만 이번엔 달랐다. 하고 싶은 일들을 공책에 하나하나 적어 내려갔다. 프로젝트는 학원에서 집중하기로 하고, "집에서" 내가 해야 할 일들 말이다. 식사 준비하기, 빨래하기, 샤워하기, 청소하기, 회고록 쓰기 등 하나하나 세세하게 적고, 그 안에서 우선순위를 정했다. 꼭 해야 하는 일은 뭘까? 이 일은 오늘 자기 전에 하는 게 좋을까, 내일 아침에 일찍 일어나서 하는 게 좋을까? 고민 끝에 평소 기상 시간 보다 한 시간 일찍인 아침 여섯 시에 알람을 맞췄다.
결과는 꽤 괜찮았다. 여섯 시에 일어나 빨래를 돌리고, 콩죽을 만들고, 샤워하고, 고추장 불고기를 볶고, 아침을 먹고, 빨래를 널고, 화장까지 마치고 나섰다. 어제 밤 열두 시가 넘어서 자서 조금 피곤하긴 했지만, 아침부터 내가 원하던 일들을 하나하나 해냈다는 만족감이 컸다.
예전 같았으면 ‘이런 건 다 뒤로 미루고, 프로젝트부터 해!’라며 나를 또 억눌렀을 거다. 하지만 이제는 안다. 꼭 무언가를 포기하지 않아도 된다. 내가 정말 중요하게 여기는 일들을 피하지 않고 마주하고, 계획하고, 시간을 밀도 있게 쓰면 된다. 그리고 그건 생각보다 가능한 일이었다.
오늘 아침은 분명 바빴지만, 마음은 훨씬 가벼웠다. 내가 하고 싶은 일들을 외면하지 않고 마주했고, 이를 해내기 위해 시간을 밀도 있게 썼다. 내게 의미있는 변화였다.

오래오래 건강하고 행복하게 사려면, 프로젝트가 바쁘더라도 운동은 필수~ 💪