Chains
Chain은 챗봇 또는 언어모델의 대화를 구축하고 유기하는 기본 개념입니다. 입력체인과 출력체인으로 이루어져 있으며, 사용자의 입력과 언어모델, 모델의 응답을 하나의 연결고리로 묶어 대화 내용을 저장하고 관리하는데 사용됩니다.
Chain의 작동 방식은 다음과 같습니다.
대화 기록: 사용자가 챗봇이나 언어모델과 대화할 때 맥락을 유지하기 위해 사용자와 모델의 각 메세지는 시간순으로 저장됩니다.
입력 및 출력: 각각의 체인은 사용가의 입력을 담당하는 "입력 체인"과 모델의 응답을 담당하는 "출력 체인"으로 이루어져 있습니다. 이를 통해 모델은 대화에서 이전 메세지를 다시 참조할 수 있습니다.
문맥 이해: 체인이 이전 대화 기록을 보존함으로써 모델은 문맥을 이해하고, 이전 메세지를 참조하여 일관되고 문맥상 관련 있는 응답을 제공할 수 있습니다.
최대 길이: 메모리 사용량 및 계산 리소스를 관리하기 위한 최대 길이가 있습니다. 체인이 너무 길어지면 새 메세지를 위한 공간을 확보하기 위해 오래된 메세지가 제거되거나 잘릴 수 있습니다. 다만, 과거의 대화 내용 중에 중요한 정보가 삭제되면 맥락이 손실될 수 있습니다.
대화 지속: 실시간 챗봇 또는 언어모델 상호작용에서 입력 체인은 사용자의 새 메세지로 지속적으로 업데이트 되고, 출력 체인은 모델의 응답으로 업데이트 됩니다. 이를 통해 모델은 진행중인 대화를 추적하고 적절하게 대응할 수 있습니다.
kubChain에서는 아래와 같은 Chains를 제공합니다.
GET API Chain
OpenAPI Chain
POST API Chain
Conversation Chain
Conversational Retrieval QA Chain
LLM Chain
Multi Prompt Chain
Multi Retrieval QA Chain
Retrieval QA Chain
Sql Database Chain
VectorDB QA Chain
LLM Chain
LLM Chain은 가장 기본이 되는 Chain으로 언어모델과 prompt의 연결만으로 간단하게 사용할 수 있습니다.
Language Model을 연결할 때 일반 OpenAI모델을 사용한다면 Prompt Template를, ChatOpenAI모델을 사용한다면 Chat Prompt Template를 연결해야합니다.
Prompt Template의 System Message 부분을 통해 언어모델이 답변해야하는 상황을 설정할 수 있습니다.
Conversation Chain
LLM Chain이 단순이 언어모델과 사용자를 연결해주는 Chain이었다면, Conversation Chain은 언어모델이 사용자와의 대화 내용을 기억하면서 질의응답과 대화를 이어나갈 수 있게 하는 Chain입니다. 대화내용을 기억해야하기 때문에 Memory를 사용합니다.
LangChain에서 기본적으로 제공하는 Buffer Memory를 연결하여 대화내용을 기억할 수 있도록 합니다. Buffer Memory 이외에도 다양한 Memory 노드들이 있으니 더 자세한 내용은 Memory 탭을 참고하시기 바랍니다.
Conversational Retrieval QA Chain
Conversational Retrieval QA Chain은 검색 구성 요소를 사용하여 대화형 질의응답을 수행하기 위한 Chain입니다. 사용자의 질문에 대답하기 위하여 Vector Store에 저장된 데이터를 검색하고, 자연어로 대답합니다.
Vector Store에 저장할 데이터로는 .txt, .pdf, .docs 등 자연어 데이터는 모두 연결이 가능하지만 파일 형식에 맞는 Document Loader를 사용해야 합니다. 더 자세한 내용은 Document Loader 탭과 Vector Store 탭을 참고하시기 바랍니다.
Last updated