[Obsidian] 옵시디언+챗GPT로 제텔카스텐 구축하기 | 오픈AI, 사용법, Smart connections

이 글은 [세컨드 브레인은 옵시디언]에서 발췌하였습니다.
골든래빗 출판사

커뮤니티 플러그인 Smart connections를 사용하면 현재 노트와 유사한 내용의 노트를 찾거나, 노트 기반으로 챗봇과 대화를 할 수 있습니다. 이 기능은 영구 보관용 노트를 연결하거나 글의 초안을 작성할 때 유용하게 쓸 수 있습니다.

옵시디언은 개발 생태계가 활성화되어 있어 AI를 활용하는 새로운 기술을 빠르게 접목시킬 수 있다는 큰 장점을 가집니다. 또한, 로컬 기반의 노트 앱이기에 Ollama에서 동작하는 로컬 LLM과 같이 사용할 수도 있습니다. 로컬 LLM은 인터넷을 통하지 않고 내 컴퓨터에서 ChatGPT와 같은 AI를 사용하는 것을 말합니다. 이처럼 빠르고 자유롭게 AI와 연동할 수 있다는 점이 옵시디언을 계속 사용하게 되는 주된 이유입니다.

Smart connections는 수시로 업데이트됩니다. 변경 사항 때문에 내용대로 실습 진행을 하기 어렵다면, 예제 볼트의 ‘1. Projects/세컨드 브레인은 옵시디언/Ch 18. 옵시디언으로 제텔카스텐 구축하기’ 파일을 참고해주세요.

 

같이보기

 

1. Smart connections를 OpenAI와 연동하기

ChatGPT를 만든 OpenAI를 Smart connections와 연동하겠습니다. 이 과정은 비용이 발생하며, 정액제가 아니라 미리 금액을 충전하고 사용하는 선불제입니다. 노트 개수와 사용량에 따라 달라지겠지만 비용이 크게 들지는 않습니다. 제 경험상 월 5달러를 넘어가는 사람은 못 봤습니다.

OpenAI의 기능을 사용하려면 OpenAI에 가입하고 API Key를 발급받아야 합니다. API Key는 일종의 비밀번호로 로그인하지 않고 OpenAI의 기능을 사용할 수 있게 해줍니다. 이 API Key를 Smart connections에 입력하여 Smart connections이 OpenAI 기능을 사용할 수 있게 연동을 해보겠습니다.

 

01 OpenAI 홈페이지에 접속합니다. 기존 계정이 있다면 로그인하고, 없다면 오른쪽 위의 [Sign up] 버튼을 클릭하여 가입합니다.

 

02 로그인 후 왼쪽 메뉴에서 [Settings → Billing]을 선택합니다. [Add payment details] 버튼을 선택하여 결제 수단을 추가합니다.

 

 

카드 정보를 모두 입력하고 [Continue] 버튼을 누릅니다. 이때 해외 결제가 가능한 카드를 사용해야 합니다.

 

03 결제 수단을 설정했다면 충전할 금액을 입력합니다. 노트 개수가 많지 않으면 5달러 충전으로도 몇 개월은 충분히 사용할 수 있으니 5달러를 입력하겠습니다. 자동 충전은 비활성화하겠습니다. 설정을 마치고 [Continue → Confirm payment]를 차례로 입력합니다.

 

 

[TIP] 우리가 사용할 임베딩 모델은 OpenAI의 text-embedding-3-large 모델인데 현재 백만 토큰당 0.13달러입니다. 어림잡아 1글자에 1토큰이라 보면 전체 100만 글자에 0.13 달러이니 큰 부담은 없는 가격입니다. 가격 정책은 지속적으로 변경되니 자세한 사항은 OpenAI 홈페이지를 참고하세요.

 

04 금액이 충전되면 왼쪽 메뉴에서 [API keys]를 선택합니다. [Create new secret key] 버튼을 클릭하여 API key를 발급받습니다.

 

 

① 이름을 원하는 대로 지정하고 [Create secret key]를 누르세요. 예시에서는 ‘smart connection’이라고 입력하였습니다. ② 발급받은 API key는 처음에만 복사할 수 있으므로 별도로 저장해두어야 합니다. 만약에 이 API key를 잊어버렸다면 새로운 API key를 발급받아 사용하면 됩니다.

 

05 옵시디언으로 돌아옵니다. 커뮤니티 플러그인 Smart Connections를 설치하고 활성화합니다.

 

 

06 [Settings → Smart Connections]에서 플러그인 설정을 하겠습니다.

 

 

① 노트와 블록 임베딩 모델을 선택합니다. 임베딩은 노트와 블록의 내용을 숫자로 변환하는 과정입니다. 임베딩 모델로 현재 가장 성능이 좋은 [OpenAI Text-3 Large (API, 8191 tokens, 3072 dim)]을 선택해보겠습니다. ② OpenAI 홈페이지에서 복사한 API key를 ‘OpenAI API Key for embeddings’에 붙여넣고 [Save] 버튼을 누릅니다.

 

[TIP] Smart connections에서는 다양한 LLM과의 연계를 지원합니다. LLM 활용 능력이 있다면, Model Platform에서 Anthropic Claude나 Local LLM으로 Ollama 등을 사용해볼 수 있습니다.

 

07 모든 노트를 임베딩하는 과정이 필요합니다. 노트의 내용을 AI에게 전달하여 숫자로 바꾸는 과정입니다. 다음 Data Management 섹션의 [Refresh Notes] 버튼을 클릭하고 오른쪽 위 다음과 같은 팝업창이 뜨면 [Start embedding] 버튼을 누릅니다. 그러면 임베딩되지 않은 노트에 임베딩 작업을 진행할 수 있습니다.

 

 

08 그러면 작업 상황도 오른쪽 위에 팝업으로 표시됩니다. 이렇게 최초 임베딩 이후에는 새 노트가 생성되거나 기존 노트에 변경 사항이 있을 때 해당 노트에 임베딩이 자동으로 진행됩니다.

 

 

2. Smart view로 유사한 노트 찾기

임베딩 작업이 끝났으면 Smart view를 사용하면 현재 문서와 유사한 노트를 찾을 수 있습니다. 이 기능은 영구 보관용 노트를 연결하기 위해 유사한 내용과 맥락을 가진 노트를 찾는 데 도움이 됩니다.

 

01 연결하려는 노트를 열고 명령어 팔레트에서 ‘Smart Connections: Open: View Smart Connections’를 선택합니다.

[TIP] 이때 실행이 되지 않는다면 바로 앞에서 설명한 06단계의 [Settings → Smart Connections]에서 플러그인 설정을 다시 해주세요. API key를 입력하고 반드시 save를 눌러주세요.

 

02 오른쪽 사이드바에서 아래 아이콘을 누르면 현재 노트와 유사한 노트 목록이 표시되는 것을 확인합니다. 다음 그림은 제가 사용하는 볼트에서 Smart view를 사용해봤습니다.

 

 

‘창작에는 오버 페이스가 필요하다’라는 생각을 작성한 노트입니다. ① 비슷한 내용을 가진 노트가 오른쪽 목록에 보입니다. ② 왼쪽 숫자는 유사도입니다. 유사도가 높을수록 AI가 인식했을 때 더 유사한 노트라는 의미입니다. ‘창작 생산성’, ‘글쓰기’, ‘몰입감’ 등 비슷한 키워드의 노트가 나열되어 있네요. 참고로 유사도가 0.72인 첫 번째 노트는 현재 노트를 영어로 번역한 노트입니다. 즉, 영어와 한글 간의 유사도도 잘 찾아내는 것을 볼 수 있습니다.

 

AI는 어떻게 유사한 노트를 찾을까?

AI 활용이 필수로 인식되고 관심도 높아지고 있기에 연관된 노트를 찾는 원리를 간략히 알아보겠습니다. 앞서 임베딩이라 소개한 과정에서는 한국어나 영어로 적힌 노트 내용을 AI가 이해할 수 있도록 숫자의 나열인 벡터로 변환합니다. 이때 변환 작업을 하는 모델을 임베딩 모델이라고 하는데 그 종류가 다양합니다.

 

 

우리가 연동 작업에서 임베딩 모델로 설정한 Text-3 Large는 현재 OpenAI가 제공하는 임베딩 모델 중 가장 고성능의 모델입니다. 비용을 줄이려면 Text-3 Small이나 Ada를 선택해도 됩니다.

원본 노트의 내용을 임베딩 모델에 입력하기 전에 텍스트를 AI가 이해하기 쉬운 단위로 나눠야 합니다. 이때 나눠진 단위를 ‘토큰’이라고 합니다. 앞에서 예로 든 ‘창작에는 오버 페이스가 필요하다’ 노트 내용이 122글자 정도였는데, 임베딩 과정 후 112개 토큰이 됩니다. 대략 1글자에 1토큰으로 어림짐작할 수 있겠네요. 우리가 선택한 모델은 8191 tokens, 3072 dims를 지원합니다. 8191 tokens는 임베딩 모델이 한 번에 처리할 수 있는 최대 토큰 개수를 의미합니다. 최대 8191 토큰까지 지원한다고 했으니 Smart view를 제대로 활용하려면 노트 하나의 길이가 8000자를 넘어서는 안 되겠습니다. 참고로 토큰화의 특성상 영어로 작성한 노트는 8000자를 넘어도 됩니다. 3072 dims는 벡터의 숫자 개수를 의미합니다. 노트 1개가 임베딩을 거치면 3072개의 숫자로 변환된다는 뜻입니다.

벡터로 변환된 노트 내용은 옵시디언 볼트 폴더의 .smart-connections 폴더에서 확인할 수 있습니다. 벡터로 변환된 노트는 코사인 유사도를 이용하여 현재 노트와 비슷한 노트를 찾습니다. 간단히 말하자면, 현재 노트의 벡터랑 유사한 벡터의 노트를 찾아 나열하는 원리입니다.

 

Smart chat과 노트 기반으로 대화하기

제텔카스텐을 사용했던 니클라스 루만은 제텔카스텐을 노트와의 대화라고 표현하였습니다. 제텔카스텐을 단순히 노트 저장소로 보지 않고 지속적으로 상호작용하며 학습과 생각 발전을 이루는 시스템으로 여겼다는 의미입니다. 실제로 제텔카스텐을 꾸준히 사용하다 보면 노트와 대화하는 느낌이 들며 생각이 깊어지는 재미있는 경험을 할 수 있습니다.

그런데 시대가 변하면서 노트와의 대화는 비유적인 표현이 아니라 현실이 되었습니다. Smart connections의 Smart chat 기능을 이용하면 됩니다. 명령어 팔레트에서 ‘Smart Connections: Open: Smart Chat Conversation’을 선택합니다. 그러면 오른쪽 사이드바에 대화창이 열립니다.

 

 

입력창에 적힌 설명대로, 내 노트나 폴더 기반으로 질문하거나 요약을 시킬 수 있습니다. 질문을 입력하고 Shift + Enter 를 누르거나 입력창 옆에 있는 [Send] 버튼을 누르면 됩니다. 재미있는 기능이니 직접 사용해보세요.

제텔카스텐이 글쓰기를 위한 방법이라고 소개했으니 Smart chat을 글쓰기에 활용해보겠습니다. 다음과 같은 구조 노트를 참고하여 블로그에 올릴 글을 작성한다고 해봅시다. AI가 없었더라면 구조 노트에서 링크한 노트를 일일이 살펴보면서 글의 개요를 만들고 초안을 만들 것입니다.

 

 

하지만 Smart chat에게 이 노트를 기반으로 개요를 작성시키면 어떨까요? 다음과 같이 노트들의 링크를 알려주고 블로그에 올릴 글의 개요 작성을 요청했습니다.

 

 

기존 노트 내용이 반영된 그럴듯한 개요가 만들어졌습니다. 이를 바탕으로 글쓰기를 이어나갈 수 있겠네요. AI를 이용한 글쓰기는 특별한 프롬프트나 가이드라인이 없다면 대체로 평범한 내용의 글을 생성하기 마련입니다. 이런 글은 나만의 생각이 반영되지 않아 거짓말하는 느낌이 들거나, 너무 일반적이어서 읽는 사람이 큰 가치나 매력을 느끼기 어려울 수 있습니다. 그러나 평소 자신의 생각을 기록해 두었다가 AI와 함께 글을 쓴다면 나만의 독특한 관점이 담긴 글을 더 쉽게 만들 수 있습니다.

‘나’에 대한 이야기가 나왔으니 재미 삼아 저에 대해 물어보는 것도 좋겠네요. AI는 제 노트를 보고 저의 성향을 파악할 수 있을까요? 제 영구 보관용 노트를 기반으로 MBTI 유형을 추측해보는 것도 재밌어 보입니다. 영구 보관용 노트에는 AI가 알아낼 만한 작성자의 성격과 가치관이 담기게 될까요?

 

 

무서울 정도로 정확하네요. 실제로 저는 INTJ입니다.

 

정말 내 노트를 다 읽고 대답하는 걸까?

앞선 대화에서는 Smart chat이 영구 보관용 노트의 모든 내용을 확인한 것 같았지만 실제로는 그렇지 않습니다. 이 답변은 일부 노트만을 참고하여 나온 답변입니다. 사실 MBTI를 맞춘건 운이 따라준 결과로 봐야 합니다.

Smart chat에게 질문을 하면 질문한 내용을 그대로 AI가 전달받아 답변하지 않습니다. 폴더나 노트를 찾을 필요가 있다면 HyDE(Hypothetical Document Embeddings) 전략을 사용합니다. 이 과정을 간략하게 설명하면 다음과 같습니다.

  1. 질문에 노트를 찾아 대답하라는 요청이 있다면, 우선 질문을 AI에게 전달하여 답변을 받습니다.
  2. AI로부터 받은 답변을 임베딩합니다. 그 후, Smart view에서 유사한 노트를 찾았던 방식처럼 답변과 관련된 노트를 찾습니다.
  3. 앞 단계에서 찾은 연관 노트와 질문의 내용을 합쳐서 다시 AI에게 질문합니다.

 

따라서 최종 답변은 모든 노트가 아니라 일부 노트만을 참고해서 답합니다. 참고한 노트는 smart-chat 폴더의 대화 목록에 남아있습니다. 그래서 Smart chat을 사용할 때는 많은 노트를 찾게 하는 것보다는 특정 노트를 지목하면서 대화를 하면 좋습니다. 누군가에게 일을 부탁할 때 구체적으로 무엇을 참고하라고 지정하는 것처럼요.

PARA와 제텔카스텐에서 공통으로 중시하는 것은 노트의 내용이 아니라 노트를 어떻게 사용할지 고민하는 감각입니다. 예를 들어 ‘문을 당기시오’라는 경고문은 내용뿐만 아니라 경고문이 붙은 위치도 중요합니다. 이 경고문을 바닥에 붙이면 아무도 읽지 못해 쓸모없어집니다. 경고문은 문을 열 때 필요하므로 사람들이 손잡이를 잡을 때 보는 위치에 붙여야 합니다. 이처럼 노트가 추후에 어떻게 활용될 것인지를 생각하면 내용, 위치, 연결을 고민하는 데 도움이 됩니다. 활용도가 높은 노트는 버려지지 않고 자산이 됩니다.

그리고 이 올바른 위치와 활용에 대한 답은 사람마다 다를 겁니다. 당뇨병에 대한 노트를 작성한다고 해봅시다. 대학생의 교양 수업 발표에서는 프로젝트로 분류되어 당뇨병의 전반적인 정보를 작성할 것입니다. 당뇨병 환자라면 에어리어에 두면서 병원 방문 날짜, 혈당 관리 방법 등을 적으며 지속적으로 관리하겠죠. 당뇨병 연구자라면 제텔카스텐으로 전문 자료와 함께 지식을 발전시키는 방식으로 사용할 것입니다. 모든 자료는 필요를 기준으로 배치해야 하며, 필요에 대한 답은 자신이 직접 찾아야 합니다.

명확한 정답이 없으니 노트 작성과 관리는 누군가의 템플릿이나 워크플로를 그대로 따르기보다는 자신의 상황에 맞게 조정하는 것이 중요합니다.

 

같이보기

시안

생산성과 지식 관리에 관심 많은 개발자입니다. 부족한 에너지와 뜻하지 않게 시작한 개발자 커리어가 효율을 고민하게 만든 것 같습니다. 재현 가능하고 지속 가능한 방법론을 중시하며, 이런 생각을 글과 영상으로 풀어내고 있습니다.

웹 사이트: https://thinkingsian.com/about

X: https://x.com/iamjustsian

유튜브: https://www.youtube.com/@sian-prod

Leave a Reply

©2020 GoldenRabbit. All rights reserved.
상호명 : 골든래빗 주식회사
(04051) 서울특별시 마포구 양화로 186, 5층 512호, 514호 (동교동, LC타워)
TEL : 0505-398-0505 / FAX : 0505-537-0505
대표이사 : 최현우
사업자등록번호 : 475-87-01581
통신판매업신고 : 2023-서울마포-2391호
master@goldenrabbit.co.kr
개인정보처리방침
배송/반품/환불/교환 안내