News Feed

랭체인∙라마인덱스∙시맨틱 커널∙헤이스택 LLM 프레임워크 지형도 파악

컨텐츠 정보

  • 조회 779

본문

3D topographic map with blue lines and light points on dark grid

Andis Rea / Shutterstock

대형 언어 모델 자체만으로는 ‘확률적 앵무새‘라는 별명이 틀린 말은 아니다. 검색 증강 생성(RAG)을 위해 LLM을 특정 데이터에 연결하면 훨씬 더 신뢰할 수 있는 시스템을 얻을 수 있으며, AI 환각을 일으킬 가능성이 훨씬 적다. RAG 시스템을 이메일 전송과 같은 간접적인 작업까지 수행할 수 있는 소프트웨어에 연결하면 에이전트라는 유용성을 얻을 수 있다. 하지만 연결은 저절로 일어나지 않는다. 구성 요소를 하나로 묶고 조율하는 프레임워크가 필요하다.

LLM 애플리케이션 프레임워크란?

LLM 애플리케이션 프레임워크는 기본적으로 배관이다. 더 구체적으로는 오케스트레이션 업체라고 할 수 있다. 예를 들어 RAG 애플리케이션에서 LLM 애플리케이션 프레임워크는 인코더를 통해 데이터 소스를 벡터 데이터베이스에 연결하고, 벡터 데이터베이스 조회 결과를 통해 사용자 쿼리를 개선해 수정하고, 개선된 쿼리를 모델에 대한 일반 시스템 명령과 함께 LLM 모델로 전달하고, 모델의 출력을 다시 사용자에게 전달한다. 예를 들어 헤이스택은 컴포넌트와 파이프라인을 사용해 LLM 애플리케이션을 조립하는 방법을 설명하고 있다.

LLM 애플리케이션 프레임워크는 애플리케이션을 만들 때 작성해야 하는 코드의 양을 줄인다는 장점이 있다. 전문가가 설계 및 코딩하고 수천 명의 프로그래머와 사용자가 테스트했으며 프로덕션에서 사용되었다는 사실을 고려하면 프레임워크라는 배관이 올바르게 작동할 것이라는 확신을 가질 수 있다.

사용례

LLM 애플리케이션 프레임워크의 사용례에는 RAG, 챗봇, 에이전트, 생성형 다중 모드 질문 답변, 문서에서 정보 추출 등이 포함된다. 이러한 사용례는 모두 LLM과 (일반적으로) 벡터 검색의 통합으로 관련되어 있지만, 그 목적은 다소 다르다.

RAG는 LLM을 재교육하거나 미세 조정하지 않고도 LLM의 지식을 확장할 수 있는 방법이다. 모델의 근거를 마련할 수 있고, 특정 정보에 집중하는 데도 도움이 될 수 있다. RAG의 세 단계는 지정된 소스에서 검색, 소스에서 검색한 컨텍스트를 사용해 프롬프트의 증강, 그리고 모델과 증강된 프롬프트를 사용해 생성하는 것이다.

정보 소스는 문서, 웹 또는 데이터베이스일 것이다. 모델의 컨텍스트 창을 초과하지 않는 한, 쿼리의 일부로 이러한 추가 정보를 모델에 제공할 수 있다. 하지만 컨텍스트 창이 크더라도 대용량 소스 문서를 검색할 때 ‘건초 더미에서 바늘 찾기’라는 문제가 발생할 수 있는데, 일부 모델이 너무 많은 관련 없는 자료로 둘러싸여 있으면 특정 관련 사실을 놓칠 수 있다는 것을 의미한다.

대신 워드투벡(Word2vec , 텍스트만) 또는 디바이즈(DeViSE, 텍스트와 미디어 혼합) 같은 임베딩 모델을 사용해 텍스트와 미디어 정보를 고차원 부동 소수점 벡터로 인코딩하고, 다시 큐드런트(Qdrant)나 엘라스틱서치(Elasticsearch) 같은 벡터 데이터베이스에 저장하면 된다. 이후 동일한 임베딩 모델을 사용해 검색어를 인코딩하고 벡터 검색을 통해 코사인 또는 유클리드 거리와 같은 거리 메트릭 측면에서 가장 가까운 K개의 항목을 찾을 수 있다. 그런 다음 선택한 소스 정보로 쿼리를 보강해 LLM으로 전송한다. 대부분의 경우, 검색 증강 생성의 결과는 사용자가 제공한 정보를 기반으로 한다.

챗봇은 인간의 대화를 모방하도록 설계되었으며, 적어도 1966년에 발표된 조셉 와이젠바움의 ELIZA 프로그램으로 거슬러 올라간다. 최신 챗봇은 일종의 메모리로 대화를 추적하고, 이전의 쿼리와 응답을 사용해 각각의 새로운 쿼리의 컨텍스트를 향상시킴으로써 단순한 LLM 또는 RAG 쿼리에서 확장된다.

에이전트는 작업을 수행하기 위해 다른 소프트웨어를 호출하는 LLM 애플리케이션이다. 마이크로소프트에서는 코파일럿이라고 한다. 에이전트와 체인을 구분하는 프레임워크도 있다, 에이전트는 언어 모델을 추론 엔진으로 사용해 어떤 작업을 어떤 순서로 수행할지 결정하는 반면, 체인은 시퀀스를 하드코딩한다는 점에서 차이가 있다.

오디오, 이미지 및/또는 영상을 입력으로 받을 수 있는 일부 모델은 생성형 다중 모드 질문 답변을 구현하는 애플리케이션에서 사용할 수 있다. 예를 들어, 제미나이 프로 비전 모델은 한 이미지에서 과일을 식별하고 다른 이미지에서 가격을 읽어서 과일의 가격을 유추하는 방법을 구글 버텍스 AI 스튜디오 리뷰에서 시연했다.

문서에서 정보를 추출하는 것은 생각보다 복잡하다. 예를 들어, 모기지 대출 신청 프로세서에 입력하기 위해 형식이 각기 다른 문서 20건을 스캔하는 경우, 애플리케이션은 양식을 인식하고 번호와 라벨을 OCR한 다음 관련 태그 값을 추출해 인간 대출 담당자를 위한 요약 양식을 채워야 한다.

프로그래밍 언어

LLM 애플리케이션 프레임워크에서 지원하는 프로그래밍 언어에는 파이썬, C#, 자바, 타입스크립트, 자바스크립트가 있다. 랭체인과 라마인덱스는 파이썬과 타입스크립트/자바스크립트로 구현되어 있다. 시맨틱 커널은 C#, 파이썬, 자바로 구현되어 있지만 모든 SK 기능이 이 모든 프로그래밍 언어에서 지원되는 것은 아니다. 헤이스택은 파이썬으로만 구현되어 있다.

헤이스택

헤이스택은 LLM 애플리케이션, RAG 애플리케이션, 대규모 문서 컬렉션을 위한 검색 시스템을 구축하기 위한 오픈소스 프레임워크로 청구된다. 헤이스택은 딥셋 클라우드의 기반이기도 한다. 딥셋은 헤이스택의 주요 후원사이며, 여러 딥셋 직원이 헤이스택 프로젝트에 크게 기여하고 있다.

헤이스택과의 통합에는 허깅페이스, 오픈AI, 코히어와 같은 플랫폼에서 호스팅되는 모델, 아마존 세이지메이커, 마이크로소프트 애저 AI, 구글 클라우드 버텍스 AI와 같은 플랫폼에 배포된 모델, 오픈서치, 파인콘, 큐드런트 같은 문서 저장소가 포함된다. 또한 평가, 모니터링, 데이터 수집과 같은 툴링 목적의 통합을 위해 헤이스택 커뮤니티에서 기여하고 있다.

헤이스택의 사용례로는 RAG, 챗봇, 에이전트, 생성형 다중 모드 질문 답변, 문서에서 정보 추출 등이 있다. 헤이스택은 데이터 소스 통합, 데이터 정리 및 전처리, 모델, 로깅, 계측 등 LLM 프로젝트의 전체 범위를      위한 기능을 제공한다.

헤이스택 구성 요소와 파이프라인은 애플리케이션을 쉽게 조립할 수 있도록 도와준다. 헤이스택에는 미리 빌드된 구성 요소가 많이 있지만, 사용자 정의 구성 요소를 추가하는 것은 파이썬 클래스를 작성하는 것만큼이나 간단한다. 파이프라인은 구성 요소를 그래프 또는 다중 그래프로 연결하며(그래프가 비순환형일 필요는 없음), 헤이스택은 일반적인 사용례를 위한 많은 예제 파이프라인을 제공한다. 딥셋 스튜디오는 AI 개발자가 맞춤형 AI 파이프라인을 설계하고 시각화할 수 있도록 지원하는 새로운 제품이다.

랭체인

랭체인은 언어 모델이 데이터 소스에 연결하고 해당 환경과 상호 작용할 수 있게 해준다. 랭체인 구성 요소는 모듈식 추상화이자 추상화 구현의 모음이다. 랭체인 기성품 체인은 특정 상위 수준의 작업을 수행하기 위한 구성 요소의 구조화된 어셈블리이다. 컴포넌트를 사용해 기존 체인을 사용자 정의하고 새로운 체인을 구축할 수 있다.

랭체인에는 두 가지 종류의 언어 모델, 즉 LLM과 챗모델(ChatModel)이 있다. LLM은 문자열을 입력으로 받아 문자열을 반환한다. 챗모델은 메시지 목록을 입력으로 받아 ChatMessage를 반환한다. ChatMessage는 콘텐츠와 역할이라는 두 가지 요소로 구성된다. 역할은 콘텐츠의 출처를 사람, AI, 시스템, 함수 호출 또는 일반 입력으로 지정한다.

일반적으로 LLM은 입력에 프롬프트 템플릿을 사용한다. 예를 들면 “영어를 프랑스어로 번역하는 유용한 도우미”와 같이 LLM이나 챗모델이 수행하기를 원하는 역할을 지정할 수 있다. 또한 번역하려는 문구 목록 같이 다양한 콘텐츠 인스턴스에 템플릿을 적용할 수 있다.

랭체인에는 6개의 모듈이 있다.

라마인덱스(LlamaIndex)

높은 수준에서 보면, 라마인덱스(lamaIndex)는 기본적으로 자체 데이터를 대형 언어 모델과 결합하는 컨텍스트 증강 LLM 애플리케이션을 손쉽게 구축하도록 설계되었다. 문맥 증강 LLM 애플리케이션의 예로는 질문 답변 챗봇, 문서 이해 및 추출, 자율 에이전트 등이 있다.

라마인덱스 제공 도구는 데이터 로딩, 데이터 인덱싱 및 저장, LLM으로 데이터 쿼리, LLM 애플리케이션의 성능 평가 등을 수행한다.

  • 데이터 커넥터는 기본 소스 및 형식에서 기존 데이터를 수집한다.
  • 임베딩이라고도 하는 데이터 인덱스는 데이터를 중간 표현으로 구조화한다.
  • 엔진은 데이터에 대한 자연어 액세스를 제공한다. 여기에는 질문 답변을 위한 쿼리 엔진과 데이터에 대한 다중 메시지 대화를 위한 채팅 엔진이 포함된다.
  • 에이전트는 소프트웨어 도구로 보강된 LLM 기반 지식 노동자라 할 수 있다.
  • 관찰성/추적/평가 통합을 통해 앱을 실험, 평가 및 모니터링할 수 있다.

시맨틱 커널

시맨틱 커널은 마이크로소프트의 오픈소스 LLM 애플리케이션 스택에서 AI 오케스트레이션이 코파일럿용 내부 스택에서 수행하는 것과 동일한 기능을 수행하는 오픈소스 SDK다. 중간에서 모든 것을 하나로 묶는 역할을 한다. 물론 코파일럿은 마이크로소프트의 협업형 AI 에이전트의 이름이다.

시맨틱 커널은 LLM과 데이터 및 코드를 연결하는 접착제, 즉 오케스트레이션 계층이다. 이 외에도 다양한 기능을 수행한다. 시맨틱 커널은 LLM과 템플릿을 사용해 계획을 생성할 수 있다. 이는 함수 호출만으로는 할 수 있는 것을 뛰어넘는 시맨틱 커널의 차별화 요소이다.

시맨틱 커널의 플래너 기능은 사용자의 요청을 받아 수행 방법 계획을 반환한다. 여기에서 AI를 사용해 사용자가 커널에 등록한 플러그인을 조합하고 작업을 완료하는 일련의 단계로 결합한다.

시맨틱 커널의 플러그인은 LLM에서 사용할 수 있는 기능 그룹이다. 시맨틱 커널에는 AI 오케스트레이션 계층, 커넥터 및 플래너도 포함되어 있다. 오케스트레이션 레이어는 플러그인과 커넥터를 서로 연결한다. 플래너는 플러그인의 흐름을 정의하는 데 도움을 준다.

시맨틱 커널의 커널은 본질적으로 AI 애플리케이션을 위한 트래픽 경찰이다. AI 서비스를 선택하고, 프롬프트를 렌더링하고, AI 서비스를 호출하고, LLM 응답을 파싱하고, 함수 결과를 생성한다. 이 과정에서 모니터링 및 책임 있는 AI 필터와 같은 다른 서비스를 호출할 수도 있다.

어떤 프레임워크를 사용할까?

솔직히 헤이스택, 랭체인, 라마인덱스, 시맨틱 커널 등 이 네 가지 프레임워크 중 어느 것이든 대다수 LLM 애플리케이션 사용례에 적합하다. 모두 오픈소스라서 무료로 사용해 볼 수 있다. 그러나 네 가지는 디버깅 도구와 프로그래밍 언어 지원, 그리고 클라우드 버전을 구현한 방식이 각각 다르다. 명확하고 간단한 사용례를 목표로 삼아 며칠 동안 직접 사용해 보고 어떤 것이 가장 적합한지 판단하는 것이 좋다.
dl-itworldkorea@foundryco.com

관련자료

댓글 0
등록된 댓글이 없습니다.
Member Rank