LangChian vs llamaIndex vs DSPy
대형 언어 모델(LLM)과 벡터 검색 기술이 발전하면서, 이 기술들을 활용해 AI 애플리케이션을 쉽게 개발할 수 있는 새로운 프레임워크들이 등장했습니다. 이 프레임워크들은 복잡한 챗봇부터 심화된 추론을 할 수 있는 AI 애플리케이션까지 다양한 종류의 프로그램을 쉽게 만들 수 있게 도와줍니다.
가장 유명한 프레임워크 중 하나는 "LangChain" 입니다. LangChain은 2022년 10월에 해리슨 체이스라는 사람이 시작한 오픈 소스 프로젝트인데, 빠르게 인기를 얻어 많은 개발자들이 기여하고 있습니다. 이 프레임워크는 문서나 데이터 소스, API 등을 잘 지원하며, 특히 Qdrant 같은 벡터 저장소와의 통합이 뛰어납니다. 덕분에 개발자들은 복잡한 AI 애플리케이션을 쉽게 만들 수 있습니다.
하지만 LangChain과 같은 도구가 있어도, 여전히 개발자들은 "프롬프트 엔지니어링"이라는 기술을 사용해 최적의 LLM 프롬프트(명령어)를 만들어야 했습니다. 이 프롬프트를 최적화하거나, 여러 단계를 거쳐 복잡한 AI를 만드는 것은 여전히 어려운 일이었습니다.
AI 애플리케이션을 실제로 만들다 보면, 단순히 한 번 LLM을 호출하는 것만으로는 원하는 결과를 얻기 어렵습니다. 대신, 모델이 웹 브라우저 같은 외부 도구와 상호작용하고, 필요한 정보를 문서에서 가져와야 합니다. 그리고 이 결과들을 여러 단계를 거쳐 결합해 최종 결과를 만들어냅니다.
여기서 중요한 점은, 프롬프트를 자동으로 조정하고, 중간 단계의 결과들을 잘 결합해주는 아키텍처가 필요하다는 것입니다. 하지만 기존 방식으로는 이를 손쉽게 처리하기 어렵습니다.
2023년 10월, 스탠포드 대학의 연구자들이 "DSPy"라는 라이브러리를 발표했습니다. 이 도구는 LLM 프롬프트와 가중치를 자동으로 최적화해주기 때문에, 개발자가 일일이 프롬프트를 만들 필요가 없습니다. 특히, 여러 번 LLM을 호출해야 할 때 DSPy는 매우 강력한 도구입니다.
각 LLM 프레임워크(LangChain, llamaIndex) 간단한 기능비교을 하고, 특히 DSPy 프레임워크에 대해서 좀 더 살표보겠습니다.
LangChain, LlamaIndex, DSPy는 모두 LLM 오케스트레이션 프레임워크로, 대형 언어 모델(LLM)을 다양한 작업에 효율적으로 활용하기 위한 도구들을 제공합니다. 이 세 가지 프레임워크의 특징과 차이점을 중심으로 논의해보겠습니다.
체인 기반 작업 구성: LangChain은 LLM을 체인(chain) 형태로 구성하여 복잡한 작업을 단계적으로 처리할 수 있게 합니다. 예를 들어, 텍스트 생성 후 그 텍스트를 분석하거나, 데이터를 검색한 후 해당 결과를 요약하는 등, 여러 단계의 작업을 하나의 체인으로 엮을 수 있습니다.
다양한 도구와의 통합: LangChain은 외부 데이터 소스, API, 데이터베이스 등과 쉽게 통합할 수 있으며, 프롬프트 엔지니어링, 메모리 관리 등의 기능도 지원합니다.
유연성: 사용자가 특정 작업을 위해 맞춤형 체인을 설계할 수 있어 매우 유연한 사용이 가능합니다. 특히 복잡한 자연어 처리(NLP) 워크플로우를 설계하고자 할 때 강점이 있습니다.
데이터 인덱싱 및 검색 최적화: LlamaIndex는 주로 대규모 데이터를 효율적으로 인덱싱하고, 이 인덱스를 통해 LLM이 데이터를 빠르고 정확하게 검색할 수 있도록 돕는 역할을 합니다. 특히 비정형 데이터(예: 문서, 텍스트 파일, 웹 페이지 등)를 구조화된 형태로 변환하여 효율적인 검색을 지원합니다.
데이터 연결성 강화: LlamaIndex는 LLM이 실시간으로 대규모 데이터를 검색할 수 있도록 데이터와 모델을 효과적으로 연결합니다. 이를 통해 LLM이 보다 정확하고 관련성 높은 결과를 생성할 수 있습니다.
경량화된 인덱스 관리: 인덱스 관리와 데이터 검색에 특화된 도구로, 대규모 데이터셋을 효율적으로 관리하면서도 높은 성능을 유지합니다.
현재 LLM은 루프 및 조건문과 같은 제어 연산을 수행하는 데 한계가 있고 지식을 정제하거나 보강하기 위한 별도의 기술이 필요한 등 몇 가지 단점이 있지만, DSPy는 프로그래밍 중심 전략을 사용하여 이러한 문제를 극복하기 위해 노력하고 있습니다. (아래 별도 설명)
공식 웹사이트: https://www.langchain.com/
라이선스: MIT License
공식 웹사이트: https://www.llamaindex.ai/
라이선스: MIT License
공식 웹사이트: https://github.com/stanfordnlp/dspy
라이선스: MIT License
여러가지 비교 포인트가 있겠지만, 그 중에서 LangChain, LlamaIndex, DSPy 프레임워크의 시각화 기능에 대해서 살펴보겠습니다.
시각화 별점: ★★★★☆ (4/5) - LangChain은 LangGraph라는 도구를 통해 체인 기반 워크플로우를 시각적으로 표현할 수 있습니다. LangGraph는 체인의 각 단계를 시각적으로 보여주어, 사용자가 워크플로우의 흐름을 쉽게 파악할 수 있도록 돕습니다. 이 도구는 시각적 명확성을 제공하지만, 시각화의 복잡성과 유연성 면에서 최첨단 도구들에 비해 약간 부족할 수 있어 4점을 부여했습니다.
시각화 별점: ★★★★☆ (4/5) - LlamaIndex는 데이터 인덱싱 및 검색 과정을 시각적으로 표현하는 기능이 잘 지원됩니다. 특히, 대규모 데이터셋에서 검색된 결과를 시각화하고, 검색 과정의 효율성을 분석할 수 있는 기능이 포함되어 있습니다. 시각화 도구의 품질이 높지만, 일부 사용자는 더 심화된 시각화를 위해 외부 도구를 사용해야 할 수 있습니다.
참고 : https://docs.llamaindex.ai/en/stable/module_guides/observability
시각화 별점: ★★★☆☆ (3/5) - DSPy는 DSPy Visualizer라는 도구를 통해 모델의 학습 및 추론 과정을 시각화할 수 있습니다. 이 도구는 모델의 성능을 분석하고, 학습 과정을 시각적으로 이해할 수 있게 해줍니다. 다만, 시각화 기능이 기본적으로 포함되어 있지만, 다른 고급 시각화 도구에 비해 기능이 다소 제한적일 수 있습니다.
AI 시스템을 만들 때, 개발자들은 작업을 여러 단계로 나누고, 각 단계에서 사용할 언어 모델(LM)의 명령어를 조정해야 합니다. 이 과정에서 각 단계가 올바르게 작동하는지 확인하는 것이 중요합니다. 그러나 여러 단계의 언어 모델을 사용하는 파이프라인은 매우 복잡할 수 있으며, 각 단계에서 사용하는 명령어(프롬프트)를 조정하거나 수정하는 것이 까다로울 수 있습니다. 언어 모델은 입력된 프롬프트에 매우 민감하기 때문에, 프롬프트의 단어 선택이나 문장 구조가 조금만 바뀌어도 결과가 크게 달라질 수 있습니다. 따라서 프롬프트를 직접 조정하는 작업은 시간이 많이 걸리고 오류가 발생하기 쉬운 과정이 됩니다.
이러한 문제를 해결하기 위해 DSPy라는 도구가 등장했습니다. DSPy는 언어 모델을 프로그래밍 장치처럼 다루는 접근 방식을 제공합니다. 즉, 프롬프트를 수동으로 조정하는 대신, 모델이 자동으로 최적의 프롬프트를 생성하고 조정할 수 있도록 도와줍니다. DSPy는 언어 모델의 프롬프트와 가중치를 자동으로 최적화하는 기능을 제공하여, 수동으로 프롬프트를 수정하지 않고도 최적의 결과를 얻을 수 있게 해줍니다. 이 도구는 시그니처(Signatures), 텔레프롬프터(Teleprompters), 자동화된 조정이라는 세 가지 간단한 구성 요소를 통해 복잡한 프롬프트 문제를 해결합니다.
시그니처는 언어 모델이 어떤 정보를 받아야 하고 어떤 결과를 내야 하는지를 정의하는 역할을 합니다.
텔레프롬프터는 언어 모델이 정확하고 관련성 있는 응답을 생성하도록 유도하는 도구입니다.
DSPy는 프롬프트와 가중치를 자동으로 조정하여, 수동으로 프롬프트를 수정하지 않고도 모델이 최적의 결과를 생성하도록 돕습니다. 이로써 DSPy는 AI 모델의 복잡한 작업을 더 간단하고 효율적으로 처리할 수 있도록 지원합니다.
쉽게설명하면,
시그니처는 레시피와 같습니다. 레시피에는 요리에 필요한 재료(입력)와 조리 방법(출력)이 적혀 있습니다. 요리를 시작하기 전에 레시피를 보면, 어떤 재료를 준비해야 하고, 결과적으로 어떤 요리가 나올지 알 수 있죠. 텔레프롬프터는 길잡이와 같습니다. 산을 오를 때 길잡이가 "이쪽 길로 가면 더 안전하고 빠르다"고 알려주면, 우리는 그 지시에 따라 더 쉽게 목적지에 도착할 수 있죠. 마찬가지로, 텔레프롬프터는 모델이 올바른 방향으로 결과를 생성하도록 도와줍니다.
# install : pip install dspy-ai
import dspy
llm = dspy.OpenAI(model='gpt-3.5-turbo-1106', max_tokens=300) dspy.configure(lm=llm)
#체인생성
qa = dspy.ChainOfThought('question -> answer')
#질문
response = qa(question="Where is Paris?")
#답변
print(response.answer)
프로그램에서 하나의 LLM을 사용하는 것은 제한되지 않으며, 여러개를 사용할 수 있습니다. DSPy는 OpenAI 등의 모델뿐만 아니라 Ollama 통해서 로컬로 사용가능합니다. 참고로, 모든 LLM 호출은 기본적으로 캐시됩니다.
DSPy는 프롬프트 생성 및 최적화 프로세스를 자동화하고 수동 프롬프트 엔지니어링의 필요성을 크게 줄입니다. 이를 통해 LLM으로 작업하는 것이 더 쉬워지고 확장 가능한 AI 워크플로우를 구축하는 데 도움이 됩니다.
이 프레임워크에는 BootstrapFewShot 및 MIPRO와 같은 내장된 최적화기가 포함되어 있어 프롬프트를 자동으로 개선하고 특정 데이터 세트에 맞게 조정합니다.
DSPy는 범용 모듈과 옵티마이저를 사용하여 신속한 엔지니어링의 복잡성을 단순화합니다. 이를 통해 LLM 처리의 복잡성에 대한 걱정 없이 복잡한 다단계 추론 애플리케이션을 쉽게 만들 수 있습니다.
DSPy는 동일한 프로그램에서 여러 LLM을 사용할 수 있는 유연성을 비롯하여 다양한 LLM을 지원합니다.
DSPy는 프롬프트보다 프로그래밍에 집중함으로써 AI 애플리케이션, 특히 복잡한 다단계 추론이 필요한 애플리케이션에 대해 더 높은 신뢰성과 성능을 보장합니다.
새로운 프레임워크로서 DSPy는 LangChain에 비해 커뮤니티가 작습니다. 따라서 리소스, 예제 및 커뮤니티 지원이 제한적입니다.
DSPy는 튜토리얼과 가이드를 제공하지만, 시작할 때 문제가 발생할 수 있는 LangChain보다 문서가 덜 광범위합니다.
DSPy를 시작할 때는 DSPy가 제공하는 모듈에 제한을 느낄 수 있습니다.
참고로, 랭체인과 통합하는 형태로 있습니다.
렝체인과 통합 : https://python.langchain.com/v0.1/docs/integrations/providers/dspy/
LangChain와 llamaIndex 와 DSPy는 모두 고유한 기능을 제공하며 강력한 AI 애플리케이션을 구축하는 데 도움을 줄 수 있습니다. LangChain 과 llamaIndex 는 다양한 데이터 소스 및 API와의 광범위한 통합이 필요한 프로젝트에 이상적입니다. 반면에 DSPy는 복잡한 다단계 애플리케이션을 구축하기 위한 강력한 패러다임을 제공합니다.
https://python.langchain.com/v0.1/docs/get_started/introduction