(라마인덱스) 내 옵시디언 노트 기반으로 답변하는 봇 구축하기

반응형

이 글은 라마인덱스(LlamaIndex)를 사용하여 내 옵시디언 노트를 기반으로 대답하는 봇을 만드는 과정을 설명합니다. 모든 코드는 라마인덱스 Obsidian Reader 문서를 참고하여 작성되었습니다.

먼저, 라마인덱스를 설치합니다.

pip install llama_index

환경 변수에 OPENAI_API_KEY 를 등록합니다.

import os

os.environ['OPENAI_API_KEY'] = 'sk-...'

필요한 파이썬 패키지를 가져옵니다.

from llama_index import ObsidianReader, GPTVectorStoreIndex

라마인덱스에서 제공하는 ObsidianReader를 사용하여 옵시디언 노트를 모두 불러옵니다.

reader = ObsidianReader('여러분의 옵시디언 볼트 경로')
documents = reader.load_data()

다음으로, GPTVectorStoreIndex를 사용하여 문서 벡터 인덱스를 생성합니다. 이 인덱스는 쿼리 엔진으로 사용될 수 있으며, 쿼리를 수행하여 문서와 관련된 정보를 반환할 수 있습니다.

index = GPTVectorStoreIndex.from_documents(documents) 

저는 노트 임베딩에 22211개의 토큰이 사용되었다고 나왔습니다. 노트가 많을수록 더 많은 토큰이 사용될 수 있습니다.

이제 마지막으로 인덱스에서 쿼리 엔진을 생성합니다. 이제 쿼리 엔진을 통해 봇에게 노트 내용에 대해 질문할 수 있습니다.

query_engine = index.as_query_engine()

첫번째 질문: PARA 메모 방법에 대해서 설명해주세요.

제가 사용한 노트는 PARA 메모 방법에 대한 노트입니다. “PARA 메모 방법에 대해서 설명해주세요.” 라고 쿼리하였습니다.

res = query_engine.query('PARA 메모 방법에 대해서 설명해주세요.')


답변 결과가 만족스럽지 않습니다. 답변이 중간에 끊겨 마무리되지 않았습니다.

쿼리 엔진 응답에서 source_nodes를 살펴보면, 어떤 문서를 참고하여 답변했는지 알 수 있습니다.

“PARA 메모 방법에 대해서 설명해주세요.” 을 영어로 번역해서 다시 쿼리해보겠습니다.

(번역) PARA 노트는 실행 가능성에 따라 정보를 정리하는 방법입니다. 노트는 폴더와 계층 구조로 구성되어 있으며, 각 노트는 프로젝트와 연결되어 있습니다. 노트는 프로젝트와 관련된 아이디어, 작업, 기타 정보를 캡처하는 데 사용할 수 있습니다. 프로젝트가 완료되면 프로젝트와 연결된 노트를 사용해 프로젝트를 검토하고 향후 프로젝트를 계획하는 데 도움을 받을 수 있습니다. 또한 메모를 사용해 PARA 시스템의 여러 부분을 연결하여 시스템의 여러 부분 간에 정보가 오갈 수 있도록 할 수 있습니다.

한글로 질문했을 때보다 더 풍부한 답변을 얻을 수 있습니다. 이런 점에서 한글은 영어에 비해 불리한 것 같습니다.

두번째 질문: PARA 시스템의 핵심 4가지를 알려주세요.

이번에는 처음부터 영어로 번역하여 쿼리를 수행했습니다.

(번역)

  1. 프로젝트는 P.A.R.A.에서 가장 실행 가능한 정보입니다.
  2. 노트는 P.A.R.A의 각 부분으로 오갈 수 있습니다.
  3. 프로젝트의 시작과 마무리는 중요한 순간입니다.
  4. 노트를 사용해 시스템에서 정보를 정리하고 이동하세요.

제가 원하는 답변은 아니었지만, 잘 답변해주네요.

마무리

이렇게하여 라마인덱스를 사용하여 내 옵시디언 노트를 기반으로 대답하는 봇을 만들었습니다. 먼저, 라마인덱스를 설치하고 필요한 패키지를 가져왔습니다. 그리고 옵시디언 노트를 불러와 문서 벡터 인덱스를 생성했습니다. 이 인덱스를 통해 쿼리 엔진을 생성하고, 봇에게 질문을 할 수 있게 되었습니다.

하지만 한글로 질문할 때보다 영어로 질문할 때 더 풍부한 답변을 얻을 수 있다는 것을 확인했습니다. 이는 한글 처리에 아직 불리한 점이 있음을 의미합니다.

라마인덱스를 사용하여 옵시디언 노트를 기반으로한 대화형 봇을 구현하는 것은 매우 흥미로운 일이었습니다. 앞으로 이를 더욱 발전시켜 봇의 성능과 활용 범위를 더욱 넓혀나갈 수 있을 것입니다.


or

[카카오페이로 후원하기] [토스페이로 후원하기]

반응형