AISmarteasy – 시맨틱 커널 포크로 개발하기 5c – Worker – Memory – kernel-memory
llm 연동 ai 애플리케이션은 llm의 태생적 한계를 극복해야 한다. 시맨틱 커널도 memory란 개념으로 이를 보강하기 위한 노력을 해왔다. 이 부분은 다루어야 할 데이터가 많다면 분리된 서버에서 실행 될 필요가 있다. 시맨틱 커널 내에 있을 때는 semantic memory. 분리되어서는 kernel memory. https://github.com/microsoft/kernel-memory
Kernel Memory (KM) is a multi-modal AI Service specialized in the efficient indexing of datasets through custom continuous data hybrid pipelines, with support for Retrieval Augmented Generation (RAG), synthetic memory, prompt engineering, and custom semantic memory processing.
시맨틱 커널의 semantic memory 같이, 하나의 ai 애플리케이션의 메모리로 사용할 수도 있어야 한다. 이를 위해 MemoryServerless라는 개념을 등장 시킨다.
llm 훈련에 사용하지 못한 데이터 – 훈련 이후에 만들어졌거나, 기업이나 개인 내부 데이터 – 는 보통 문서로 있거나 관계형 데이터베이스에 있다. 관계형 데이터는 구조화되어 있지만 문서들은 그렇지 않다. 구조화 되어 있지 않은 데이터들은 자연어로 작성되어 있다. llm 등장 이전에는 문서 내용에 대해 찾는 내용을 검색하는 정도 하고, 자연어로 질의하는 것은 생각도 못했었다. llm 등장 후 구조화된 데이터보다 더 자연스럽게 자연어로 쿼리 할 수 있게 되었다.
멀티모달로 가고 있는 지금, 텍스트 데이터 뿐만 아니라 음성, 이미지, 비디오 데이터도 사용될 수 있게 되었다. 보통 단기 기억되어 사용되지만 챗 이력 데이터도 사용될 수 있다.
llm 훈련에 사용하지 못한 데이터를 자연어 쿼리로 다루려면, 어떤 과정이 필요할까? 자연어로 다루려면, 임베딩 하는 것이 기본이다.
1. 데이터를 가져온다. 문서의 경우, 파일을 열고 문서 내용을 읽는다.
대부분 텍스트 지만 이미지나 표를 읽어내야 할 수도 있다. 자연어 쿼리에 응답하려면, 이미지나 표와 같이 텍스트가 아닌 다른 형식으로 작성 된 내용도 텍스트로 변환해야 한다.
2. query 최적화를 위해 문서 내용을 더 작게 나눈다.
텍스트를 문서 구조에 기반해 더 작은 chunks로 나눈다.
pdf 예) Using the coordinate information of Bounding-Box [x0, y0, x2, y2] where x0 and y0 are the top-left coordinates and x2 and y2 are the bottom-right coordinates, you can break the entire text into smaller chunks of certain width and height.
3. 텍스트를 임베딩 한다.
4. 임베딩을 벡터 데이터베이스에 저장한다.
privacy를 지켜야 하는 것과 같은 보안 요구가 있을 수 있다. 메모리 데이터에 접근할 때 필터링 될 수 있게 해야 한다.