본문 바로가기

LangChain&LangGraph

(15)
Meta prompt 생성 Agent # 목적LLM 등에서 사용되는 프롬프트를 대화형 모델을 통해 생성해주는 Agent로 "프롬프트를 만드는 프롬프트" 라고 불린다.프롬프트 안에서 one-shot, few-shot 등을 통해 모델 품질, 구조,최적화 등에 영향을 미친다.프롬프트를 작성하기위하여 사용자의 요구사항을 충분히 수집하고 넘어 가는 것이 중요하다.충분히 수집하고 난 후에 다음단계로 진행하여 원하는 양식의 프롬프트를 LLM 이 생성하도록 한다. # 구성도요구사항이 충족될 때까지 gathering_infomation에서 사용자에게 추가정보를 요청 한다. # 핵심템플릿에서 4가지 타입을 제시하여 정보를 차례대로 수집하라고 제시 ( objective, variables, constraints, requirements )def get_pr..
langGraph 의 라우팅 # 목적사용자의 질의를 풍성하게 하기위하여 Rewrite를 수행한다Rewrite 된 내용을 기반으로 일반 대화인지, 내부 retreiver 를 활용할지, 웹에서 검색할지를 llm 이 판단한다이때 판단하기위하여 baseModel을 활용한다baseModel 은 본래 파이썬에서 클래스나 API 개발시 데이터 모델링에 사용되는 라이브러리로 타입을 정형화하여 타입 검사를 수행함 이를 활용하여 llm 의 with_structured_output 과 같이 활용하면 원하는 답변을 얻을 수 있음 # 구성도 Retriever 활용 로그https://smith.langchain.com/public/3652730b-7b3a-4c62-9e2a-41f883356fe8/r LangSmith smith.langchain.com..
langGraph 활용 Agent_node # 목적1. 사용자의 Query 를 Agent 가 판단하여 대답을 생성한다.2. 도구가 필요하지 않는 답변의 경우 llm 이 즉시 답변한다3. 만약 도구 사용시 query 와 도구로 생성한 데이터간 연관성을 검사하고 연관성이 떨어지는경우 쿼리를 교정하여 성능을 향상 시킨다.4. 연관성이 높은 경우 llm 에 넣어 최종 답변을 사용한다. # 구성도# 핵심Tool : Agent 가 활용할 도구들 ( pdf_retriever ,web search, mcp 등등) https://python.langchain.com/docs/integrations/tools/ Tools | 🦜️🔗 LangChainTools are utilities designed to be called by a model: their inp..
Vectorstores 정의 : 임베딩 된 벡터 데이터를 저장하고 벡터 간 유사도 계산과 빠른 검색을 효율적으로 지원 목적 : 사용자 요청에 따라 벡터간 유사도를 계산 지 유형: FAISS : 로컬 기반, gpu 지원Chroma : 로컬 기반Pinecone : 외부 api , 비용 필요대표 알고리즘 ANN : 고차원 벡터 공간에서 주어진 쿼리 벡터와 가장 가까운 이웃 벡터를 정확히 찾는 것이 아니라, 약간의 정확도 희생을 감수하고 빠르게 "충분히 가까운" 이웃을 찾는 근사 검색 기법KD-Trees : 데이터를 계층적으로 분할하는 트리 구조Locality-Sensitive Hashing (LSH) : 벡터를 특정 해시값으로 변환Annoy : Spotify에서 개발한 ANN 알고리즘HNSW: 최상위 레이어에서 -> 하위 레..
카톡 기반 RAG 프로토타입 성능 개선편-1 이전 구성도이슈 : 1. 뉴스 정보 : mcp 서버에서 받아온 api 호출값이 제목, 본문 요약, 원본 링크 URL 정보로 풍부하지 못함2. 원본 링크 : 다양한 뉴스 채널별로 html 구조가 달라 파싱의 어려움3. 답변 생성 시간 : 카카오톡에서 response 시간 5초 이상시 timeout 됨4. 답변 품질 : 뉴스 정보의 품질 하락으로 인하여 모델에서 생성되는 답변 품질 또한 하락5. 단방향 프로세스 : 모든 질문에 대해 naver 뉴스를 검색하여 처리하려함 개선 된 구성도적용 내용 1. 뉴스 정보 : 네이버에 등록된 원본 뉴스에 대해서 파싱 추가 2. 원본 링크 : langchain WebBaseLoader 활용하여 파싱 예정3. 답변 생성 시간 : 카카오톡에 callback 가능하도록 요청 (..
Embedding 정의 : splitter 된 text등의 문서 내용을 고차원으로 변환 하는 역할 목적 : 변환된 고 차원 데이터간 유사도를 비교하여 근접한 chunk 색출 유형: Sparse : 단어 기반 전통적 기법BM25 TF-IDF Dense : 의미적 관계를 파악 FastText Word2Vec MTEB : 허깅페이스 MTEB(Massive Text Embedding Benchmark) 리더보드는 전 세계 인공지능(AI) 개발자들이 텍스트 임베딩 모델의 성능을 객관적으로 비교하고 평가하는 핵심 지표로 활용되고 있다. https://huggingface.co/spaces/mteb/leaderboard MTEB Leaderboard - a Hugging Face Space by mteb huggingf..
Text spliter 정의 :대용량 데이터를 일정한 기준을 기반으로 chunk 로 분할하기 위한 기법 목적 : RAG등에서 query 와 유사도를 비교하여 데이터 증강 등 제공하여 성능 향상 지원 기술 유형:규칙 기반 :character text splitterrecursive character text splittertoken text splittersemantic chunker등등모델 기반bert-base-uncased , roberta-base docling굉장히 다양한 연구가 이루어 지고 있는것으로 보임 핵심 : 얼마나 적절한 크기로 "서로 영향있는 문장을 끊기지않고 연속성을 보존한체 제공"할 것인가 중요 문장 연속성 판단의 중요성문맥 유지: 문맥 파악함으로써 텍스트의 전반적인 의미가 유지되고 자연스러운 흐름을 이해..
카톡 기반 RAG 프로토타입 ~ing 1. 프로토타입 구성도 2. 사용 기술 Client - 카카오톡 오픈 채널 활용Server - GCP - n1-standard-8 (vCPU 8개, 메모리 30GB), - c0-deeplearning-common-cu121-v20241118-debian-11 - 1xNVIDIA T4웹서버 - FAST APILLM - MLP-KTLim/llama-3-Korean-Bllossom-8B-gguf-Q4_K_MMCP server - https://github.com/isnow890/naver-search-mcp외부 Data - Naver news 3. 핵심 메커니즘1. 카카오톡 사용자의 오픈 채널을 통해 뉴스 정보 요청 - 임시 응답 2. 웹 서버에서 요청 "내용" 파싱{'bot': {'id': 'ididi..