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

Langchain 16

[Langchain] Splitter (Chunker) 만들기

0. 개요RAG를 하기 위해 데이터를 모으는 과정에서데이터를 일정 크기로 잘라야 한다.오늘은 문자열을 자르는 다양한 기법에 대해 공부해 보자 Langchain version : 0.3.25 1. Fixed-size 기반 분할1.1. 개념Fixed-size 기반 분할은 텍스트를 일정한 길이 단위로 잘라내는 방식이다.길이 기준은 문자 수(character) 혹은 토큰 수(token) 로 설정할 수 있다.예를 들어, 한 텍스트를 500자 단위로 나누거나, OpenAI tokenizer 기준 300토큰 단위로 나누는 것이 이에 해당한다.보통은 chunk overlap을 함께 사용해 문맥 단절을 완화한다. 1.2. 장점과 단점장점단점✔ 구현이 간단하고 빠르다✘ 의미 단위가 끊길 수 있다 (문장 중간에서 분할)✔ ..

[LangGraph] Prebuilt ReAct Agent 사용법

langchain 버전: 0.3.23langgraph 버전: 0.3.20 0. LangGraph란LangGraph는 복잡한 LLM 워크플로우를 설계하고 실행할 수 있도록 해주는그래프 기반 실행 프레임워크 각 단계(노드)를 LLM, 함수 호출, 조건 판단으로 나눠서마치 "AI 플로우차트"처럼 구성함LangGraph는 이런 복잡한 흐름을 그래프 구조로 시각화하고 제어할 수 있게 해주는 도구 LangGraph의 구성요소요소설명Graph실행 흐름 전체를 표현하는 객체Node각 단계(=작업 단위). LLM 실행, 툴 호출, 조건 분기 등을 담음EdgeNode 간 흐름. 조건 분기(if), 반복(loop) 등State노드 실행 사이에 공유되는 컨텍스트 (예: chat history, 변수)GraphRunner그래프..

[Langchain] Tools 사용하기 (1)

langchain 버전: 0.3.23 에이전트(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 생성T..

[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] 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 예시 코..

반응형