AI/LLM

실용주의 프로그래머: RAG와 함께하는 "순수한 텍스트의 힘"

growdai1y 2025. 3. 27. 23:18

텍스트는 지식을 오래도록 보존할 수 있는 최고의 방법입니다

『실용주의 프로그래머』에서는 프로그래머가 다루는 핵심 자산은 코드뿐만 아니라 지식이라고 말합니다. 그리고 그 지식을 저장하고 공유하는 가장 효과적인 수단은 순수한 텍스트라고 강조하고 있습니다. 텍스트는 특정 프로그램이나 플랫폼에 종속되지 않기 때문에 시간이 지나도 쉽게 열어볼 수 있고, 다양한 도구와 연동하기도 수월합니다.

예를 들어 XML, JSON, HTML과 같은 포맷은 모두 사람이 읽을 수 있으면서도 기계가 이해하고 처리할 수 있는 구조화된 텍스트입니다. 이런 포맷을 활용하면 설정, 데이터, 문서 등 다양한 정보를 오랫동안 안정적으로 관리할 수 있습니다.

또한 텍스트는 개발 환경 전반에서 기본 단위로 사용됩니다. git diff, grep, awk 같은 유닉스 도구나 VS Code, Python 스크립트 등 대부분의 개발 도구가 텍스트 파일을 중심으로 동작하기 때문에, 텍스트로 저장된 지식은 자연스럽게 개발 흐름 속에서 재사용되고 유지보수될 수 있습니다.

요약하자면, 텍스트는 단순하고 보편적이지만 그 안에 담긴 지식은 강력하고 지속 가능하다는 점에서, 실용주의 프로그래머가 강조한 "순수한 텍스트로 저장하라"는 조언은 지금도 유효한 개발 지침이라 할 수 있습니다.

순수한 텍스트의 힘


하지만 현실은? Confluence에 쌓인 문서 속에서 길을 잃다

한동안 팀에서 Confluence를 적극적으로 사용하며 문서를 체계적으로 정리하려고 했습니다. 페이지 계층 구조와 태그, 검색 기능이 잘 갖춰져 있음에도 불구하고, 실제로 필요한 정보를 제때 찾지 못하는 경우가 많았습니다. 문서는 쌓이는데, 구조는 복잡해지고, 작성자마다 문서 스타일이나 위치가 달라지면서 문서가 중복되고, 중요한 문서가 묻히는 일이 반복됐습니다.

특히 Confluence의 검색 기능은 정확한 키워드가 기억나지 않으면 원하는 결과를 얻기 어려웠고, 태깅도 일관되게 유지하기 힘들었습니다. 그래서 제가 직접 작성했던 문서조차 찾지 못하고 다시 쓰는 일이 종종 있었습니다.

또한 Confluence는 보통 15~20명 규모의 팀 단위로 하나씩 운영되는 경우가 많았는데, 조직 개편이나 팀 변경이 발생할 경우 문서의 소유권과 유지보수 책임이 모호해지는 일이 자주 있었습니다. 기존 문서를 파악하거나 활용하지 못하고 새로운 팀에서 동일한 내용을 다시 정리하는 일이 반복되었고, 이는 문서의 중복과 관리 비용 증가로 이어졌습니다.

이 경험을 통해 문서를 작성하는 것보다 지식을 어떻게 찾고 관리할 것인지가 더 큰 문제라는 점을 깨달았습니다.


RAG 검색 패러다임의 전환

이런 문제를 해결한 계기가 바로 RAG(Retrieval-Augmented Generation) 구조와 Vector DB의 도입이었습니다. 핵심은 다음과 같습니다:

  • 태깅이나 정확한 키워드 없이도 문서를 검색할 수 있습니다.
  • 단순 검색이 아니라 프롬프트 기반의 의미 중심 검색이 가능합니다.
  • 사용된 문서의 원문 링크나 콘텐츠를 함께 제공해 신뢰도를 높일 수 있습니다.

예전에는 "어떤 문제를 어떻게 해결했는지" 찾기 위해 정확한 키워드를 입력하거나 태그를 기억해야 했다면, 이제는 자연어로 질문만 하면 관련 문서가 요약되어 결과로 나타납니다. 이는 단순한 검색이라기보다 문서 기반의 답변 시스템에 가깝습니다.


팀 기반 지식 관리 환경: GitHub + Obsidian + RAG

Obsidian, Github 그리고 RAG

저희 팀은 담당하는 소프트웨어에 대한 모든 기술적, 도메인 지식을 마크다운(markdown) 문서로 정리하고 있습니다. 문서는 GitHub를 통해 버전 관리하며, Confluence 대신 Git 기반 저장소를 선택한 이유는 문서의 변경 이력을 명확하게 관리하고 협업 워크플로우에 자연스럽게 통합할 수 있기 때문이었습니다.

작성된 markdown 문서는 Obsidian을 통해 연결성과 가독성을 확보했습니다. Obsidian의 링크 기능과 플러그인을 활용해 문서 간 맥락을 쉽게 파악할 수 있었고, 팀원 누구나 동일한 구조에서 문서를 탐색하고 수정할 수 있었습니다.

이 문서들은 Vector DB에 임베딩되어 RAG 시스템과 연동되었고, 이를 통해 의미 기반 검색 환경을 구현했습니다. 자연어로 질문을 입력하면 관련 markdown 문서가 요약되어 응답되고, 해당 문서로 직접 이동할 수 있는 링크도 함께 제공되어 유지보수 효율이 크게 향상되었습니다.

이 시스템은 단순히 문서를 축적하는 데 그치지 않고, 지식을 팀 전체가 쉽게 찾고, 수정하고, 재사용할 수 있는 기반이 되었습니다. 결국 지식 관리에서 가장 중요한 것은 검색과 활용이며, 이 환경은 그 목적을 충분히 달성하고 있다고 생각합니다.


결론: 문서의 품질에 집중할 수 있는 시대

태깅이나 키워드 최적화, 폴더 구조 설계에 대한 고민 없이도 유의미한 검색이 가능해진 지금, 문서의 구조나 검색 방법보다는 콘텐츠의 품질에 집중할 수 있는 환경을 갖추게 되었습니다.

『실용주의 프로그래머』가 말한 대로, 텍스트는 여전히 유효하고 강력한 형식입니다. 하지만 이제는 그 텍스트를 어떻게 검색하고 활용할 것인가가 더 중요해졌습니다. RAG 기반 문서 시스템을 통해 개발자는 더 이상 정보를 잊지 않아도 됩니다. 우리는 지식을 저장할 뿐만 아니라, 필요할 때 꺼내 쓸 수 있는 시대에 들어섰습니다.

이제는 문서를 잘 쓰기만 하면 됩니다. 나머지는 시스템이 도와줍니다.

 

반응형