일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 프로그래머스
- 완전탐색
- modbus
- javascript
- python
- queue
- React
- rag
- heapq
- LLM
- typescript
- InfluxDB
- backend
- DP
- OpenAI
- javascirpt
- BFS
- 알고리즘
- frontend
- 파이썬
- 코딩테스트
- VectoreStore
- turbo
- retriever
- AI
- 스택/큐
- Two Pointer
- chroma
- dfs
- Algorithm
- Today
- Total
목록전체 글 (68)
DM Log
벡터DB를 활용한 문서 검색 실습Chroma를 이용해 문서를 벡터화하고, 검색하는 실습 진행Chroma는 설치가 간편하고 LangChain에서 기본적으로 지원하기 때문에, RAG 실습환경 세팅 1. 필수 라이브러리 설치pip install langchain langchain-community langchain-openai chromadb 2. OpenAI API Key 설정export OPENAI_API_KEY="your_api_key_here" # macOS/Linuxsetx OPENAI_API_KEY "your_api_key_here" # Windows PowerShell 또는 코드 상단import osos.environ["OPENAI_API_KEY"] = "your_api_key_her..
문제 링크 - https://school.programmers.co.kr/learn/courses/30/lessons/42628?language 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr [문제 간단 요약] 큐에 숫자를 삽입하거나 최댓값/최솟값을 삭제하는 연산이 주어진다.모든 연산을 수행한 후, 큐가 비어 있지 않다면 [최댓값, 최솟값]을 반환하고, 비어 있으면 [0, 0]을 반환한다. [문제 해결 방안]✅ Heap파이썬의 heapq는 최소 힙만 지원하므로,최솟값 관리: 일반 힙(li)최댓값 관리: 음수 변환하여 힙(revert_li)삽입 시 두 힙에 모두 넣어 동기화삭제 시 조건에 맞게 하나에서 heap..
GPT의 한계 보완하는 방법GPT 같은 LLM은 놀라운 언어 능력을 가지고 있음, 하지만 치명적인 한계 존재최신 정보에 대한 업데이트 (학습 데이터 시점 제한)문서 전체를 한 번에 처리가 어려움 (컨텍스트 윈도우 제한)잘못된 정보 (환각, hallucinataion)를 생성하기도 함👉 한계를 극복하기 위해 등장한 방식이 검색 증강 생성 (RAG, Retrieval-Augmented Generation)RAG란?[RAG]Retrieval(검색) + Generation(생성)질문을 임베딩으로 변환벡터 DB에서 관련 문서 검색검색 문서를 프롬프트에 삽입LLM이 문서 기반 답변 생성RAG는 외부 지식 검색 결과를 LLM 입력에 주입하여 신뢰성 있는 답변을 생성하는 구조[기본 구조]사용자 질문 → [임베딩 변환..
LanChain 필요성LLM은 강력하지만, 한계 존재긴 문서 처리의 어려움외부 데이터베이스 / 검색엔진과 연결 불가능프롬프트 직접 설계 필요복잡한 워크플로 (검색 → 요약 → 답변 등)을 구현하기 번거러움👉 한계를 해결하고 LLM + 외부 데이터 + 다양한 기능을 연결하는 것이 LangChainLangChain 핵심 아이디어단순 LLM 호출을 넘어, 모듈화된 컴포넌트를 연결해 AI 애플리케이션을 빠르게 구축하도록 설계[핵심 아이디어]Chain: LLM과 여러 모듈을 연결한 파이프라인Agent: 도구(tool)를 선택 실행 가능하도록 하는 지능형 에이전트Memory: 대화나 상태를 저장하여 문맥 유지[주요 컴포넌트] LangChain의 핵심 구성 요소1. Document LoaderPDF, TXT, 웹페..
검색 시스템의 진화기존검색 시스템은 단어 일치에 의존LLM 시대에서 검색 시스템은 의미 기반 검색을 가능하게 하는 벡터 데이터베이스 기술 등장전통 DB vs 벡터 DB[전통 DB]키워드 기반 인덱싱 (역섹인, B-트리 등)정확히 같은 단어를 찾아서 검색SQL 기반 쿼리[벡터 DB]텍스트, 이미지, 오디오 등 비정형 데이터를 벡터(숫자 좌표)로 저장질의(query)도 벡터화 → 가장 가까운 벡터를 검색유사한 의미를 가진 데이터 검색 기능 👉 즉, 벡터 DB는 검색 키워드 ≠ 단순 문자열 → 검색 키워드 = 벡터(의미 표현) 벡터 DB[벡터 DB 동작 원리)문서 임베딩 생성 (예: OpenAI text-embedding-3-small)벡터 DB에 저장 (텍스트 + 임베딩 + metadata)사용자 질문..
문제 링크 - https://school.programmers.co.kr/learn/courses/30/lessons/43105 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr[문제 간단 요약]꼭대기에서 시작해 바로 아래 왼쪽/오른쪽으로만 이동지나간 숫자의 합이 최대가 되는 경로의 합을 반환[문제 해결 방안]동적 프로그래밍 적용아래 행에서 위로 올라가며 각 칸에 만들 수 있는 최대 합을 누적바텀업 방식 사용 시 전체 원소를 한 번씩만 갱신[문제 해결 코드 - python]def solution(triangle): answer = 0 dp = [] for i in range(len(triangle)..
컴퓨터의 텍스트 이해 방식사람은 "사과"를 보면 과일을 떠올리고, "애플"을 보면 회사나 아이폰을 연상한다. 하지만 컴퓨터는 "사과"를 단순한 문자열로 인식한다.텍스트 의미적 관계를 이해하기 위해서는 텍스트를 수학적 공간의 좌표 즉, 벡터 공간의 좌표로 변환이 필요하며, 이를 임베딩이라고 한다.임베딩은 RAG, 추천 시스템, 검색 엔진, 챗봇 등 AI 서비스의 기반이 되는 핵심 개념이다.백터 표현의 필요성텍스트는 문자나 단어 나열 (그대로 비교 불가능)단순한 방법: 원-핫 인코딩(one-hot encoding)사과: [1,0,0,0,...]바나나: [0,1,0,0,...]한계:차원이 단어 수만큼 커짐사과와 배의 의미적 유사성을 표현 불가추후, 단어 / 문장을 저차원 벡터 공간에 배치해 의미적 거리로 비교..
LLM의 중요성 LLM은 자연어를 이해하고 생각하는 법용 엔진검색, 요약, 번역, 코딩 보조, 지식질의 등 텍스트가 있는 곳이면 적용 가능"어떻게 동작하는지"를 모르면, 환각 / 최신성 / 프롬프트 민감성 같은 한계를 제대로 다룰수 없음언어 모델의 개념LLM은 다음에 올 단어를 예측 하는 것확률적 정의문장 w1, w2, …, wT의 확률을 최대화즉, 매 순간 이전까지의 문맥을 보고 다음 토큰의 분포를 출력 학습은 대규모 텍스트 말뭉치에서 정답(실제 다음 토큰)과 모델 예측 분포의 차이를 줄이는 방향으로 진행 (교차 엔트로피 손실)[확률 기반 언어 모델의 등장 (n-gram 등)]1) n-gram 모델개념: 바로 앞의 n-1개만 보고 다음 단어 예측 (마코프 가정)장점: 단순하고 빠름한계: 장기 의존성 ..