전체 글 542

Langchain으로 간단한 RAG 구현하기

Langchain으로 소설 "난쟁이가 쏘아올린 작은 공" PDF 문서에 대한 답변을 제공해 줄 수 있는 간단한 RAG 애플리케이션을 구현했다. (코드에 대한 설명은 Gist 주석으로 대신한다.) 아직 잘 모르는 상태로 무작정 다이브했으니, 간단하게 개념을 정리하겠다. LLM이 답변을 지어내는 것을 방지하고, 커스텀한 컨텍스트 제공을 위해 LLM을 이용한 챗봇에는 검색증강생성(RAG)라는 기술을 사용한다. RAG 애플리케이션은 일반적으로 두 구성요소로 이루어진다. 1. 인덱싱(Indexing) - 소스에서 데이터를 수집하고 인덱싱하는 과정2. 검색과 생성(Retrieval and generation) - 유저에게 쿼리를 받아서 인덱스에서 관련 데이터를 찾아 모델에게 전달하는 실질적인 RAG 체인이다. 인..

프로그래밍/AI 2025.01.08

벡터 임베딩(Vector Embedding)

AI 모델이 사용하는 모든 데이터는 숫자로 표현되어이햔다. 텍스트, 오디오, 비디오 같은 비정형 데이터를 모두 -1과 1 사이의 숫자로 표현하는 방법을 벡터 임베딩이라고 한다. AI 모델은 단어 사이의 거리를 계산해서 가장 가까운 단어를 조합하는 방식을 사용한다. 각 단어를 수치화 하여 이 단어들을 다차원 공간에서 점으로 표현하면 문맥상 관련된 단어는 서로 가까운 벡터를 갖게된다. 이러한 표현은 AI 모델이 데이터의 유사점과 차이점을 이해하는데 도움이 된다.

LLM의 뜻과 한계 (할루시네이션, 지식단절현상)

Large Language Model - 방대한 양의 데이터로 사전 학습된 초대형 딥 러닝 모델. 트랜스포머 모델이라고 하는 일종의 신경망을 기반으로 한다. 트랜스포머 모델트랜스포머 모델은 문장 속 단어와 같은 순차 데이터 내의 관계를 추적해 맥락과 의미를 학습하는 신경망 예측할 수 없는 쿼리에 대해 대응 할 수 있고, 구조화되지 않은 질문이나 프롬프트에도 답변할 수 있다. 하지만 LLM은 수집하는 데이터만큼만 신뢰할 수 있는 정보를 제공하므로, 정확한 답변을 내놓을 수 없을때면 가짜 정보를 생성한다. 이를 "할루시네이션(Hallucination)"이라고 한다. 대표적으로 유명한 "세종대왕 맥북 던짐사건"짤이 있다. AI 모델은 확률을 사용하여 어떤 단어나 시각적 요소가 나타날지 '예측'하는데하므로 일부..

[베트남 푸꾸옥] Phố Nướng / seafood & meat grill - 해산물, 고기

해산물, 고기 2종류의 음식을 하는 집이라 사진도 최초로 2개 올리겠다!부모님이 아무래도 깔끔한 걸 선호하셔서 푸꾸옥에 갔을때 5성급 호텔 식당들도 몇군데 가면서 음식을 먹어봤다.그 음식들도 환상적으로 맛있긴했지만, 그 가격이라면 응당 맛있어야한다고 생각한다. 이 집은 아마도 생물 해산물을 쓰지않는 것같지만, (생물도 팔긴함)그래서 더 합리적인 가격으로 해산물 모듬을 제공한다. (실제로 푸꾸옥 호텔 해산물 식당에서 생물 새우 1kg는 한국돈 4만원가량으로 비싼편이다.) 맛의 차이가 있느냐? 절대 아니다.그릴을 잘하는 집이기때문에 굽기와 양념 스킬이 장난아니다... 뭘 던져줘도 잘 할 것같은집?푸꾸옥 다른 식당에서는 조개 요리가 해감이 덜되어있거나 한국인 입맛에 맞는 양념이 되어있지않은데,이 곳 양파 오일..

[베트남 푸꾸옥] Hủ Tiếu Mực Tư Hường - 쌀국수, 반쎄오

푸꾸옥은 섬 전체가 관광지라서 허울만 좋은가게들이 많다.맛있다고 하더라도 (베트남 물가기준) 가격이 비싼데 한국의 그저 그런식당맛...이돈씨가 절로나온다.그래서 정말 잘 찾아야한다. 즈엉동 야시장에서 조금만 걸어가면 있는 이 집은푸꾸옥에서 먹어본 베트남 요리집중에 최고다. 가격도 반쎄오 + 돼지고기 꼬치 + 돼지고기 짜조 + 오징어 쌀국수 + 공심채 볶음 5종합쳐 290k, 지금 환율로 만 육천원이다.  도착해서 처음으로 먹어본 베트남 음식집이라서 정말 감탄하며 먹었지만,마음속 깊은곳에서는 혹시 이게 평균일까? 이 집을 뛰어넘을 수 있는 집이있을까? 있으면 어떡하지??라는 의문이 터져나왔다. 후회하지 않기위해 근방의 유명한 집들도 먹어보고 시장을 돌면서 음식상태를 봤지만역시 이 집이 정말 최고의 로컬맛집..

[중앙대] 세울타코 - 타코

세울타코는 Take-out / 배달 전문점이다.배달의 민족에 떠서 먹었는데 집에서 걸어서 3분이었던...ㅋㅋㅋ 여기에서 가장 잘 나가는 메뉴는 새우 타코다.한 입 깨무는순간 새우살이 엄청나게 톡톡 터지는데, 타코를 처음 먹을때부터 끝까지 계속 터진다..새우가 엄청나게 많다는 말!ㅋㅋㅋ 타코 또띠야는 부드러운 스타일이라 술술넘어간다.보통 타코는 엄청나게 자극적인 소스들로 도배되어있는데, 이 집은 과카몰리 소스와 아삭아삭한 야채들로 딱! 적절한 최고의 간을 맞추고있다.

DASHI - 키워드 알림 업데이트

얼마전 뜨거운 순간 기능을 업데이트하면서, DB도 추가하고 채팅 처리 파이프라인을 따로 빼면서 평소 해보고 싶었던 기능을 추가해보기로 했다. 그건 바로 키워드 알림! 예를 들어서 내가 스트리머가 "발헤임"이라는 게임을 정말 해주길 기다리고있는데, 채팅에서 "발헤임"이라는 키워드가 나왔을 경우 정말 그것과 관련한 이야기를 하고 있을 확률이 높다. 이렇게 내가 방송을 보지 못하는 순간에도 관련된 키워드가 언급되었는지 확인 하기위한 용도로 은 유용하게 쓰일 수 있다. Discord로 로그인키워드 알림기능을 오랫동안 망설였던 이유 중의 80%는 이 서비스에 'DB가 없었다'였지만, 20%는 '로그인이 없었다'였다. 그렇다! 로그인을 추가해야한다. 단순히 유저 식별만 가능하면되므로, Discord OAuth2를 ..

Alembic으로 쉽게 DB 마이그레이션하기

Alembic 도입 계기개발하고 있는 토이 프로젝트에 (정말정말 귀찮지만-) DB를 도입했다.최대한 기술스택을 간단하게 가져가고싶었지만 더 풍부한 기능지원을 위해 굴복했다. Python ORM 라이브러리 SQLAlchemy를 도입했는데, 계속 테이블을 수정하면서 수동 마이그레이션에 한계가 있다고 느껴서 찾아보니 Alembic이라는 SQLAlchemy 사용자용 DB 마이그레이션 툴이 있더라. 회사에서 백엔드 코드를 눈팅하면서 본 마이그레이션 파일들이 이녀석이 만든것이었다. 사용하기도 간편해서 다음번에 또 쓸 것 같아 간단히 사용법을 기록하겠다. 시작하기초기화Alembic을 사용하기에 앞서, 아래 명령어로 초기화하면 설정 파일인 alembic.ini 파일과 Alembic 프로젝트가 만들어진다.alembic ..