인공지능 개발자 수다(유튜브 바로가기) 자세히보기
반응형

자연어처리/Langchain 15

[Langchain] Tools 사용하기 (1)

에이전트(Agent)를 구성할 때는 에이전트가 사용할 수 있는 도구 목록(Tools)을 제공해야 한다.또한, 도구는 도구 호출을 지원하는 모델에 연결되어야 한다.tool_calling에 체크가 되어 있는 모델을 사용하자 (링크) Chat models | 🦜️🔗 LangChainChat models are language models that use a sequence of messages as inputs and return messages as outputs (as opposed to using plain text). These are generally newer models.python.langchain.com 1. Tool 생성1.1. 함수로 Tool 생성Tool은 함수를 이용해 데코레이터로 생..

[Langchain] VecterStore 사용하기

0. 개요Retriever를 사용하기 위해서는 검색 대상이 되는 벡터스토어(VectorStore)를 먼저 만들어야 한다. 벡터스토어(VectorStore)란 문서(텍스트 등)를 벡터 형태로 변환해서 저장하고, 유사도를 기반으로 빠르게 검색할 수 있게 해주는 구조이다. 일반적으로 문서를 검색할 때 키워드 매칭(예: Elasticsearch)을 많이 사용한다. 하지만 GPT와 같은 대규모 언어 모델(LLM)과 결합해 좀 더 ‘의미’ 기반의 검색, 즉 “유사한 문장을 찾는” 등의 기능을 위해서는 단어 자체가 아닌, 문장의 의미를 담고 있는 벡터(embedding)가 필요하다. 벡터스토어의 핵심 기능은 다음과 같다.삽입(Insertion): 텍스트를 받아 임베딩으로 변환한 후, 벡터 형태로 DB(혹은 인덱스)에..

[Langchain] Custom Retriever 만들기

출처 : Langchain 공식문서 Custom Retriever | 🦜️🔗 LangChainOverviewpython.langchain.com  1. 개념직접 만든 Retriver를 Langchain에 적용해 줄 수 있다.주로, Langchian에서 제공하는 Retriever가 아닌직접 만든 검색 시스템을 사용할 수 있다. 2. 방법1. BaseRetriever 를 상속받는다2. 다음 메서드를 오버라이딩 한다동기식 : _get_relevant_documents비동기식 : _aget_relevant_documents _get_relevant_documents 의 내용쿼리를 입력으로 받는다Document list를 반환한다class ToyRetriever(BaseRetriever): documen..

[langchain] 유저 채팅 토픽 분석 with BERTopic

0. 개요0.1. 왜 사용하는가채팅 서버를 관리하다 보면유저들이 어떠한 질문을 채팅모델에 던지는지궁금해지기 마련이다.그렇지만 데이터가 수십만개가 넘어 가면유저들이 어떠한 질문을 하는지 파악하기가 어려워 진다. 이번 포스팅 에서는 군집분석(Clustering)을 통해유저의 질문 데이터를 비슷한 데이터끼리 묶어주고토픽을 찾아 볼 것이다. 관련 모델은BERTopic 이 있다.이 모델을 이용해질문 데이터에서 토픽을 추출해 보자. 0.2. 분석 순서BERTopic의 분석 순서는 다음과 같다. 1. 문장 벡터화 (Sentence Embedding)2. 클러스터링 (HDBSCAN)3. 토픽 추출 (TF-IDF & c-TF-IDF)4. 결과 시각화 및 분석 1. 문장 벡터화먼저, 문자열 형태의 데이터는 임베딩(Embe..

[Langchain] RAG 성능 평가 with Regas

1. 개요RAG 시스템을 평가하는 기준에는 정확도, 실행 시간, 비용 등이 있겠다.이번 포스팅에서는 정확도에 대한 이야기를 하겠다. Ragas는 RAG의 정확도를 평가할때사용하기 편리한 프레임워크 이다. 설치pip install ragas2. 매트릭(Metric)2.1. Faithfulness$$ faithfulness = \frac{the\ number\ of\ claims\ in\ the\ response\ supported\ by\ the\ retrieved\ context}{total\ number\ of\ claims\ in\ the\ response} $$ 식의 의미 : 전체 질문 중에서 Rag를 통해 답을 얻은 비율3. 사용 방법 평가용 데이터셋 생성딕셔너리의 키값은고정임from ragas ..

[Langchain] 임베딩(Embedding)과 유사도 검색 방법 for Retriever

1. 임베딩(Embedding)정의 : 임베딩은 단어, 문장, 이미지 등과 같은 데이터를 숫자 벡터(연속된 실수 공간)로 표현하는 방식 (사진 출처: google 머신러닝 기초과정) 단어나 문장을 임베딩 모델(BERT, GPT 등)을 통해 고정된 차원의 실수 벡터로 바꾸면, 각각의 벡터가 해당 단어(또는 문장)의 의미 정보를 함축적으로 담게 된다. 이때, 데이터는 의미가 유사한 두 벡터는 사이가 가깝도록 만든다. 2. 임베딩 모델주된 학습 목적은 의미가 유사한 문장은 유사한 벡터로, 의미가 다른 문장은 다른 벡터로 매핑하도록 하는 것생성 모델과 달리, 토큰을 문장으로 생성하는 것이 아니라 문장을 하나의 벡터로 표현하는 데 집중 2.1. 고전적인 모델고전적인 모델에는 Word2vec이 유명하다.Word2v..

[Langchain] Retriever 사용하기

출처 : Langchain 공식문서 How-to guides | 🦜️🔗 LangChainHere you’ll find answers to “How do I….?” types of questions.python.langchain.com 1. Retriever 는 무엇인가Retriever는 주어진 질문에 대해 벡터스토어 에서 관련된 정보를 검색 검색은 챗봇이 챗 모델의 훈련 데이터 외부의 데이터로 응답을 증강하는 데 사용 retriever를 적용하는 것은 다음을 고려한다.방법이 다양하기 때문에, 상황과 데이터에 맞는 방법을 채택한다.Custom으로 만들 것인가간단하게 만들 것인가.다양한 방법을 조합해서 만들 것인가어느 부분에 적용할 것인가 (prompt에 문서 삽입, 질문을 메타에 맞게 변형, 명확한 질..

[langchain] 채팅 히스토리와 메모리 (History, Memory)

0. 개요LangChain에서 대화 히스토리는 Memory 에서 관리한다.모델이 이전에 어떤 맥락(대화 이력 등)을 가지고 있었는지 유지이전 대화 내용을 연속적으로 반영하기 위한 구조 관리 방법과거 대화 내용을 요약하거나핵심만 발췌하거나혹은 토큰 제한(token limit)에 맞춰서 관리 1. 채팅 히스토리(History)채팅 내용을 물리적인 공간에 저장/관리 하는 기능대화(메시지)들을 실제로 보관하는 역할in-memory, redis, postgres, file, mongodb 등 다양한 곳에 저장할 수 있음 1.1. 인메모리(in-memory)에 저장인메모리(in-memory) 대화 기록 저장ChatMessageHistory 클래스 사용프로그램이 동작하는 동안만 메시지를 기억하고, 종료 시에는 사라진..

[langchain] Message 다루기

0. 개요메세지는 채팅모델의 입력/출력 입니다.메세지는 내용(content) 와 역할(role)로 구성되어 있습니다.  메세지를 다루는 세가지 방법1. Trim2. Filter3. 동일 유형의 메세지 병합  메세지는 모델과의 대화를 저장하고 추적하는데 주로 사용 1. Trim 기법1.1. trim_messages 란이전 대화 내용을 적절히 잘라서 LLM이 처리할 수 있도록 조정하는 역할llm은 메세지의 크기가 제한되어 있기 때문에, 토큰의 수를 다듬어야 한다. trim 기법은 크게 두가지가 있다.토큰수 기반 Trimming (Trimming based on token count)메시지 수를 기반 Trimming (Trimming based on message count) 1.2. Trimming 예시 코..

[langchain] LangChain Expression Language(LCEL)

1. LangChain Expression Language(LCEL) 소개LangChain 표현 언어, 혹은 LCEL은 LangChain 컴포넌트들을 연결하는 선언적 방식입니다. LCEL은 처음부터 프로토타입을 코드 수정 없이 바로 프로덕션에 배포할 수 있도록 설계되었습니다. 간단한 “프롬프트 + LLM” 체인부터 100단계 이상의 복잡한 체인까지, 많은 사용자들이 LCEL 체인을 성공적으로 프로덕션에서 운영하고 있습니다.2. LCEL 사용 이유2.1. streaming supportLCEL로 체인을 구축하면 가장 빠른 첫 토큰 출력 시간을 확보할 수 있습니다 (첫 번째 출력 조각이 나올 때까지 걸리는 시간). 예를 들어, 일부 체인의 경우 LLM에서 나오는 토큰을 바로 스트리밍 출력 파서로 전송하여, ..

반응형