LLM 4

[LangChain] LLM Workflow : 병렬처리 구현

실행하려는 체인들이 각각 독립적일때, 메모리를 더 사용해서 수행시간을 단축시키기 위해 체인을 병렬처리할 수 있다. RunnableParallel을 이용해 체인을 병렬처리해보았다. RunnableParallel역시 다른 Runnable~시리즈처럼 Runnable 표준 인터페이스를 상속한다. 구현코드제공된 주제에 따라 간단한 설명과, 시를 써달라는 요청을 했다.from langchain_ollama.llms import OllamaLLMmodel = OllamaLLM( model="gemma2:2b")from langchain_core.prompts import PromptTemplateprompt1 = PromptTemplate.from_template( """ {topic}에 대해서 1줄..

[LangChain] LLM Workflow : Chaining 구현

LLM을 이용한 애플리케이션을 만들때, 가장 단순한 구조는 사용자의 입력을 받아 LLM이 질문에 대해 응답을 생성하고, 출력하는 Input - LLM - Output으로 이루어진 체인이다. 작업 요구 사항에 따라 여러 단계의 과정이 추가되어야하거나, 혹은 하나의 LLM에서 나온 응답을 다음 LLM이 받아서 처리하는 연속적인 처리 구조로 만들어야할 수 있다. 이러한 체이닝 구조의 워크플로우를 LangChain을 이용해 구현해보았다. LangChain에서 실행가능한 모든 것들은 Runnable이다. 이 Runnable은 LCEL이라는 LangChain에서 사용하는 도메인 랭귀지를 이용해 선언적으로 사용할 수 있다. | 연산자를 이용해 이전단계의 출력을 다음단계로 보내는 식이다.chain = (prompt |..

Langchain으로 간단한 RAG 구현하기

Langchain으로 소설 "난쟁이가 쏘아올린 작은 공" PDF 문서에 대한 답변을 제공해 줄 수 있는 간단한 RAG 애플리케이션을 구현했다. (코드에 대한 설명은 Gist 주석으로 대신한다.) 아직 잘 모르는 상태로 무작정 다이브했으니, 간단하게 개념을 정리하겠다. LLM이 답변을 지어내는 것을 방지하고, 커스텀한 컨텍스트 제공을 위해 LLM을 이용한 챗봇에는 검색증강생성(RAG)라는 기술을 사용한다. RAG 애플리케이션은 일반적으로 두 구성요소로 이루어진다. 1. 인덱싱(Indexing) - 소스에서 데이터를 수집하고 인덱싱하는 과정2. 검색과 생성(Retrieval and generation) - 유저에게 쿼리를 받아서 인덱스에서 관련 데이터를 찾아 모델에게 전달하는 실질적인 RAG 체인이다. 인..

LLM의 뜻과 한계 (할루시네이션, 지식단절현상)

Large Language Model - 방대한 양의 데이터로 사전 학습된 초대형 딥 러닝 모델. 트랜스포머 모델이라고 하는 일종의 신경망을 기반으로 한다. 트랜스포머 모델트랜스포머 모델은 문장 속 단어와 같은 순차 데이터 내의 관계를 추적해 맥락과 의미를 학습하는 신경망 예측할 수 없는 쿼리에 대해 대응 할 수 있고, 구조화되지 않은 질문이나 프롬프트에도 답변할 수 있다. 하지만 LLM은 수집하는 데이터만큼만 신뢰할 수 있는 정보를 제공하므로, 정확한 답변을 내놓을 수 없을때면 가짜 정보를 생성한다. 이를 "할루시네이션(Hallucination)"이라고 한다. 대표적으로 유명한 "세종대왕 맥북 던짐사건"짤이 있다. AI 모델은 확률을 사용하여 어떤 단어나 시각적 요소가 나타날지 '예측'하는데하므로 일부..