Kernel Memory 2. Quickstart

https://microsoft.github.io/kernel-memory/quickstart

이 가이드는 웹 서비스, 도커, 그리고 OpenAI 설정에 대해 사전 지식이 있다고 가정합니다.

 

Quickstart를 하려면 준비가 필요합니다.

  • .NET 6 or higher
  • Either an OpenAI API Key or Azure OpenAI deployment. If you are familiar with llama.cpp or LLamaSharp you can also use a LLama model. However, this may result in slower AI code execution, depending on your device.
  • A vector database, such as Azure AI Search, Qdrant, or Postgres+pgvector. For basic tests, you can use KM SimpleVectorDb.
  • A copy of the KM repository.

 

Configuration

KM 서비스를 시작하려면 구성 파일이 필요합니다.

개발을 위해 appsettings.Development.json과 프로덕션을 위해 appsettings.Production.json을 작성합니다.

적절한 구성 파일은 ASPNETCORE_ENVIRONMENT 환경 변수에 따라 자동으로 로드됩니다. 개발 워크스테이션에 이 환경 변수가 없다면 생성하는 것이 좋습니다: ASPNETCORE_ENVIRONMENT == “Development”. 프로덕션 환경에서는 ASPNETCORE_ENVIRONMENT = “Production”으로 설정하고 싶을 것입니다.

 

커널 메모리 레파지토리에는 appsettings.Development.json 파일을 만들면서 시작할 수 있는 서비스를 제공합니다. 아래와 같이 실행합니다.

cd service/Service
dotnet run setup

 

실행하면,

커널 메모리 서비스를 어떻게 실행할 지, 메모리와 문서를 어떻게 다룰 지 결정하라고 합니다.
커널 메모리는 웹 서비스로 제공할 지 아닐지 결정하면 되고, 메모리와 문서는 동기로 할 지 비동기로 할 지 정하면 됩니다.

세 가지 옵션을 제공합니다 .

  • 웹 서비스로 비동기적으로
  • 웹 서비스로 동기적으로
  • 웹 서비스로 안 하고 비동기적으로

 

옵션에서   위 아래 이동 키를 눌러 “웹 서비스로 비동기적으로”를 선택합니다.

 

추가적인 질문들에 답합니다.

웹 서비스를 API 키로 보호할 것인지 묻습니다. 우리는 지금은 로컬에서 할 거니 No를 선택합니다.

OpenAPI와 Swagger로 웹 서비스 API를 문서화할 지를 묻습니다. Yes 합니다.

비동기 처리 한다고 했으니, 어떤 큐 서비스를 사용할 지 묻습니다. 투토리얼 해 볼거니 SimpleQueues를 선택한다. SimpleQueues를 사용하면 관련 데이터가 메모리나 디스크에 저장되는 휘발성 이라는 문구가 보인다.

큐 메시지들을 어디에 저장할 것인지 묻습니다. 제시한 이름 그대로 사용할 거니 엔터 칩니다.

파일들을 어디에 저장할 지 묻습니다. 데이터가 메모리나 디스크에 저장될 휘발성이니 SimpleFileStorage를 선택 합니다.

디렉토리는 어디로 할 지 묻습니다. 제시한 이름 그대로 합니다. 엔터 칩니다.

이미지로 부터 텍스트 추출하는 데 어떤 서비스를 사용할 지 묻습니다. None을 선택합니다.

데이터를 가져올 때 임베딩 할 것인지 묻습니다. Yes 합니다.

임베딩 생성할 때 어떤 임베딩 모델을 사용할 지 묻습니다. OpenAI embedding model을 선택합니다.

어떤 모델 사용할 지 묻습니다. 응답하는 LLM 모델과 임베딩에 사용할 모델을 선택하라고 합니다. 기본 값을 사용할 거니 두 번 엔터 칩니다.

OpenAI API 키와 조직 id를 묻습니다. API 키는 복사 붙여넣기 해도 화면에서는 안 보입니다.

답변을 찾을 때 사용할  메모리 DB 서비스를 선택하라고 합니다. SimpleVectorDb 선택합니다.

벡터를 어디에 저장할 지 묻습니다. 기본 값을 사용할 거니 엔터 칩니다.

응답 생성할 때 어떤 모델 사용할 지 묻습니다. OpenAI text/chat model을 선택합니다.

로깅 레벨을 묻습니다. Information을 선택합니다.

 

*  환경 설정은 \kernel-memory\service\Service 폴더의  appsettings.Development.json 파일에서 확인 할 수 있습니다.

 

서비스를 시작해 봅니다.

cd service/Service
dotnet run

 

브라우저에서 http://127.0.0.1:9001/swagger/index.html 로 접속해 봅니다. API들이 보일 것 입니다.

 

https://microsoft.github.io/kernel-memory/quickstart/csharp

커널 메모리 웹 서비스를 실행 해 두고, 위 예제를 해 봅니다.

  1. 웹 페이지 내용을 가져옵니다. https://raw.githubusercontent.com/microsoft/kernel-memory/main/README.md
  2. 웹 페이지 내용으로 메모리를 구성합니다.
  3. “Is there a Kernel Memory community and how can I join?”라고 질의합니다.
  4. “Yes, there is a Kernel Memory community. You can join the community by visiting the [Kernel Memory Discord server](https://aka.ms/KMdiscord).” 라고 답합니다.

Groq에서 라마 3를 사용해서 해당 코드에 대해 문서화 해달라고 한 결과입니다. 

Imagine you have a super smart assistant that can read and understand web pages, and answer questions based on what it’s learned. This code creates an instance of that assistant, feeds it a web page, and then asks it a question.

**Key Components:**

1. **MemoryWebClient**: This is the super smart assistant. It’s a special tool that can read and understand web pages. We create an instance of it, connecting it to a local memory service (think of it like a brain that stores all the information).

2. **ImportWebPageAsync**: This is like feeding the assistant a web page to read and understand. We’re importing a specific web page (in this case, a README file from GitHub) and giving it an ID (“doc02”).

**Waiting for Ingestion to Complete**

After feeding the assistant the web page, we need to wait for it to finish reading and understanding the content. This is like waiting for the assistant to finish reading a book. We use a while loop to keep checking if the assistant is ready (using IsDocumentReadyAsync). If it’s not ready, we wait for 1.5 seconds and then check again.

**Asking a Question**

Once the assistant is ready, we can ask it a question using AskAsync. In this case, we’re asking, “Is there a Kernel Memory community and how can I join?” The assistant will provide an answer based on what it learned from the web page.

**Printing the Answer**

Finally, we print out the answer to the console using Console.WriteLine.

비유:

* MemoryWebClient을 슈퍼 스마트한 사서로 생각해 보세요. 이 사서는 책을 읽고 이해할 수 있습니다.
* ImportWebPageAsync는 사서에게 새로운 책을 읽도록 주는 것과 같습니다.
* IsDocumentReadyAsync는 사서에게 책을 다 읽었는지 물어보는 것과 같습니다.
* AskAsync는 사서에게 책의 내용에 대해 질문하는 것과 같습니다.

 

About the Author
(주)뉴테크프라임 대표 김현남입니다. 저에 대해 좀 더 알기를 원하시는 분은 아래 링크를 참조하세요. http://www.umlcert.com/kimhn/

Leave a Reply

*