banner
홈페이지 / 블로그 / 소프트웨어 개발자를 위한 LangChain에 대한 간략한 가이드
블로그

소프트웨어 개발자를 위한 LangChain에 대한 간략한 가이드

Aug 31, 2023Aug 31, 2023

자나키람 MSV

인포월드 |

대규모 언어 모델에 대한 최신 동향을 따라가기 위해 노력하는 소프트웨어 개발자라면 제가 그랬던 것처럼 압도되거나 혼란스러울 수 있습니다. 우리는 매일 새로운 오픈 소스 모델이 출시되거나 상용 모델 제공업체가 중요한 새 기능을 발표하는 것을 보는 것 같습니다.

LLM은 현대 소프트웨어 스택의 필수적인 부분으로 빠르게 자리잡고 있습니다. 그러나 OpenAI와 같은 공급자가 제공하는 모델 API를 사용하든, 앱에 오픈 소스 모델을 포함시키든, LLM 기반 애플리케이션을 구축하려면 단순히 프롬프트를 보내고 응답을 기다리는 것 이상이 필요합니다. 매개변수 조정부터 프롬프트 강화, 응답 조정까지 고려해야 할 요소가 많습니다.

LLM은 상태 비저장입니다. 즉, 대화의 이전 메시지를 기억하지 못합니다. 기록을 유지하고 LLM에 컨텍스트를 제공하는 것은 개발자의 책임입니다. 새로운 대화에 컨텍스트를 다시 가져오려면 이러한 대화를 영구 데이터베이스에 저장해야 할 수도 있습니다. 따라서 LLM에 단기 및 장기 메모리를 추가하는 것은 개발자의 주요 책임 중 하나입니다.

또 다른 과제는 LLM에 모든 경우에 적용되는 일률적인 규칙이 없다는 것입니다. 감정 분석, 분류, 질문 응답, 요약 등 다양한 시나리오에 특화된 여러 모델을 사용해야 할 수도 있습니다. 여러 LLM을 다루는 것은 복잡하고 상당한 배관 작업이 필요합니다.

LangChain은 LLM과 애플리케이션의 통합을 단순화하도록 설계된 SDK입니다. 이는 위에서 논의한 대부분의 문제를 해결합니다. LangChain은 표준 SQL 문에 집중할 수 있도록 하여 기본 데이터베이스를 추상화하는 ODBC 또는 JDBC 드라이버와 유사합니다. LangChain은 간단하고 통합된 API를 노출하여 기본 LLM의 구현 세부 정보를 추상화합니다. 이 API를 사용하면 개발자가 코드를 크게 변경하지 않고도 모델을 쉽게 교체하고 교체할 수 있습니다.

LangChain은 ChatGPT와 비슷한 시기에 등장했습니다. 창시자인 해리슨 체이스는 LLM 물결이 본격화되기 직전인 2022년 10월 말에 첫 번째 약속을 했습니다. 그 이후로 커뮤니티는 적극적으로 기여해 왔으며 LangChain을 LLM과 상호 작용하기 위한 최고의 도구 중 하나로 만들었습니다.

LangChain은 외부 도구와 통합되어 생태계를 형성하는 강력한 프레임워크입니다. LLM에서 원하는 결과를 얻는 데 관련된 흐름을 어떻게 조정하는지 이해해 보겠습니다.

응용 프로그램은 LLM에 대한 컨텍스트를 구축하기 위해 PDF, 웹 페이지, CSV 및 관계형 데이터베이스와 같은 외부 소스에서 데이터를 검색해야 합니다. LangChain은 서로 다른 소스의 데이터에 액세스하고 검색할 수 있는 모듈과 원활하게 통합됩니다.

일부 외부 소스에서 검색된 데이터는 벡터로 변환되어야 합니다. 이는 LLM과 관련된 단어 임베딩 모델에 텍스트를 전달하여 수행됩니다. 예를 들어 OpenAI의 GPT-3.5 모델에는 컨텍스트를 보내는 데 사용해야 하는 관련 단어 임베딩 모델이 있습니다. LangChain은 선택한 LLM을 기반으로 최상의 임베딩 모델을 선택하여 모델 페어링 시 추측을 제거합니다.

생성된 임베딩은 벡터 데이터베이스에 저장되어 유사성 검색을 수행합니다. LangChain을 사용하면 인메모리 배열부터 Pinecone과 같은 호스팅 벡터 데이터베이스에 이르기까지 다양한 소스에서 벡터를 쉽게 저장하고 검색할 수 있습니다.

LangChain은 OpenAI, Cohere 및 AI21에서 제공하는 주류 LLM과 Hugging Face에서 사용 가능한 오픈 소스 LLM을 지원합니다. 지원되는 모델 및 API 엔드포인트 목록이 빠르게 늘어나고 있습니다.

위의 흐름은 LangChain 프레임워크의 핵심을 나타냅니다. 스택 상단에 있는 애플리케이션은 Python 또는 JavaScript SDK를 통해 LangChain 모듈 중 하나와 상호 작용합니다. 이 모듈의 역할을 이해해 봅시다.