본문 바로가기

RAG 연습

(12)
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..
RAG 서버 카카오톡과 연결 하기 RAG 서버 구축후 일단 큰 이슈가 두가지 있엇다.1. 구글에서 gpu 사용 가능하도록 바우처를 900~1000불을 추가 해줬다. GOOD2. RAG서버의 추론 속도가 너무 느리다. 따라서 GPU를 지원하는 서버로 전환을 하여 재 구축을 수행하였다 [스펙]n1-standard-8 (vCPU 8개, 메모리 30GB)gpu : 1xNVIDIA T4cpu 플랫폼 : Intel Skylake 이미지 : c0-deeplearning-common-cu121-v20241118-debian-11 (CUDA 12.1 지원 버전) 위 스펙으로 처음부터 재구축 진행 완료 이제 카카오톡에서 메시지를 보내면 RAG 서버에서 응답을 받을 수 있도록 진행 해 보았다 챗봇 만드는 과정은 인터넷에 너무나 많아서 생략.. 일단 아래와 ..
pdf 활용 RAG 테스트 - 기본 기본적으로 알아할 요소 정리 1. 인코딩 - 자연어나 데이터를 컴퓨터가 이해할 수 있는 변환2. 임베딩 - 텍스트(문장, 단어 등)를 **고차원 벡터(Vector)**로 변환하는 과정 예를 들어, 단어나 문장 같은 텍스트를 고정 길이의 숫자 배열로 바꾸어 의미적으로 비슷한 단어일수록 벡터 공간에서 가까운 위치에 있도록 만드는 것입니다. 이렇게 변환된 벡터는 유사도 계산, 검색, 추천, 분류 등 다양한 머신러닝 및 자연어처리 작업에서 활용됩니다. 임베딩 모델 또한 주어진 대규모 데이터를 기반으로 각 항목을 의미 있는 벡터 표현으로 변환하는 방법을 학습함 임베딩 마다의 차이1. 학습 데이터셋과 방식2. 모델 구조와 아키텍처3. 학습 목표와 손실 함수4. 벡터 차원 수 (embedding dimension)...
jupyter notebook 활용 llm 테스트 1. 웹 접근 2. test.py 클릭 3. 아래 내용 입력> ! pip install langchain-community> !pip install -U langchain-ollama from langchain_ollama.llms import OllamaLLMfrom langchain.chains import LLMChainfrom langchain.prompts import PromptTemplate# Ollama LLM 초기화 OLLAMA_BASE_URL = "http://localhost:11434" # Ollama 서버 주소OLLAMA_CHAT_MODEL = "ollama-ko-0710:latest" # Ollama에서 실행중인 모델 이름llm = OllamaLLM(model=OLLAMA_CHA..