개인용 노트 관리를 위한 제안


뭐가 하고싶은 건데?

그래서 좀 정리하고 보면 문서 옆에서 쫑알대는… 요새 오피스에 AI 붙이는거 유행이잖아. 그걸 개인 버전으로 해 보고 싶은 거야.

노트 인덱싱

평범하게 단어 검색을 할 수도 있어야 하고, 거기다 요새 유행하는 글 임베딩 같은걸 끼얹어서 예전에 작성한 비슷한 노트 같은걸 보여줄 수 있으면 좋을 것 같다.

문법 교정

간단하게 틀린 단어도 좋고, 요새 LLM들이 잘하는 거 있잖아, 문장 더 유려하게 다시 쓰기 같은거. 그냥 그런거만 해 봐도 좋을 것 같아.

뭘 어떻게 하면 좋을까?

범용 텍스트 에디터 선에서 해결해야지 전용 툴로 가면 안되더라

아무리 요새 툴 개발이 간편해졌다고 해도, 내가 평소 편하게 쓰던 툴(그게 nano든 IntelliJ IDE든 말이다)을 써서 문제를 해결하는게 낫지 뭔가를 새로 만든다고 해도 그게 내 손에 딱 맞기 쉽지 않고, 그렇다고 평소 쓰던 툴을 안쓰게 되지도 않으니 책상만 더러워질 뿐이 된다.

가볍게 열어서 후딱 휘갈기는 용도로 가려고 vim… 을 쓰려다가 플러그인을 더하기 위해서 neovim을 조금 설정해서 쓰고 있다.

파일 하나로 시작하라

임베딩 / 인덱싱 다 좋은 말들인데 어차피 가장 먼저 필요한 핵심 기능은 full-text search다. 근데 기존 텍스트 에디터에서 full-text search를 쉽게 하려면 그냥 단일 파일로 냅두고 자체 검색 기능을 쓰면 간편하다. 아예 여러 파일 인덱싱하는 IDE를 쓴다면 파일을 나눌 수도 있긴 한데…

그래서 일단은…

일단 Neovim 플러그인 중에 LLM 모델 인터페이스를 제공하는 gsuuon/llm.nvim 플러그인에 약간 설정만 덧붙여서 쓰기 시작했다.

  local my_prompt
  do
    local llm = require("llm")
    local openai = require('llm.providers.openai')

    my_prompt = {
      sugg = {
        provider = openai,
        params = {
          temperature = 0.3,
          max_tokens = 1500,
          model = 'gpt-3.5-turbo',
        },
        mode = llm.mode.APPEND,
        builder = function(input)
          return { messages = {
            {
              role = 'user',
              content = 'Rewrite the following paragraph with correct ' 
              .. 'grammar, but not changing their meanings: \n\n```\n' 
              .. input .. '\n```'
            }
          } }
        end,
      },
    }
  end

  require("llm").setup({
    prompts = vim.tbl_extend('force', require('llm.prompts.starters'), my_prompt)
  })

대충 필요한 부분을 선택한 다음에 :Llm sugg을 써서 추가하는 방식인데, 동작은 잘 한다.