Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 알고리즘
- VectoreStore
- set활용
- queue
- frontend
- Two Pointer
- javascript
- dfs
- data platform
- AI
- javascirpt
- Stack
- DP
- retriever
- Weaviate
- 파이썬
- 인베딩
- 스택/큐
- 코딩테스트
- python
- 완전탐색
- 개발브로그
- modbus
- React
- Algorithm
- typescript
- 프로그래머스
- InfluxDB
- 좌표이동
- LLM
Archives
- Today
- Total
DM Log
[AI 개념 및 이해 #5] RAG: 검색과 생성을 결합하는 기술 본문
GPT의 한계 보완하는 방법
GPT 같은 LLM은 놀라운 언어 능력을 가지고 있음, 하지만 치명적인 한계 존재
- 최신 정보에 대한 업데이트 (학습 데이터 시점 제한)
- 문서 전체를 한 번에 처리가 어려움 (컨텍스트 윈도우 제한)
- 잘못된 정보 (환각, hallucinataion)를 생성하기도 함
👉 한계를 극복하기 위해 등장한 방식이 검색 증강 생성 (RAG, Retrieval-Augmented Generation)
RAG란?
[RAG]
Retrieval(검색) + Generation(생성)
- 질문을 임베딩으로 변환
- 벡터 DB에서 관련 문서 검색
- 검색 문서를 프롬프트에 삽입
- LLM이 문서 기반 답변 생성
RAG는 외부 지식 검색 결과를 LLM 입력에 주입하여 신뢰성 있는 답변을 생성하는 구조
[기본 구조]
사용자 질문 → [임베딩 변환] → [벡터 DB 검색] → 관련 문서
관련 문서 + 질문 → [LLM 입력] → 최종 답변
- 질문(Query): 사용자가 입력한 문장
- Retriever: 질문과 유사한 문서 조각 검색
- LLM: 검색 문서를 근거로 답변 생성
[RAG 장점]
1. 최신성 확보
- 모델 학습 시점 이후 데이터 반영
- 예: 사내 문서, 최신 논문, 뉴스 기사 검색
2. 환각 줄이기
- 모델이 지어내는 대신, 실제 문서 기반 답변 제공
3. 도메인 특화 기능
- 특정 기업 내부 자료, 특정 연구 분야 지식 등 제한된 데이터만 답변
[RAG 한계]
1. 검색 품질에 따라 답변 좌우
- 임베딩 모델 / 테그트 분할 전략 중요
2. 긴 문서 컨텍스트 제한
- 요약, Chunking 기법 필요
3.멀티 모달(이미지/표/코드 등) 처리 어려움
- 추가 연구 필요
개선 방안:
- 하이브리드 검색 (키워드 + 벡터)
- Re-ranker 모델 적용
- 요약 체인 결합
[활용 사례]
- 사내 문서 Q&A 시스템: 규정집, 매뉴얼, 사내 위키 기반 질문응답
- 연구 논문 요약 / 검색: 논문 문단 검색 후 요약 답변
- 헬프데스크 챗봇: FAQ 문서 검색 후 답변
- 법률 / 금융 데이터 질의: 최신 법률 문서, 금융 보고서 기반 답변
LanChain + RAG 예시
from langchain_openai import ChatOpenAI, OpenAIEmbeddings
from langchain_community.vectorstores import Chroma
from langchain.chains import RetrievalQA
# 1. 임베딩 모델과 LLM 초기화
embeddings = OpenAIEmbeddings(model="text-embedding-3-small")
llm = ChatOpenAI(model="gpt-4o")
# 2. 문서 벡터스토어 생성 (예시: Chroma)
texts = ["사과는 과일이다.", "자동차는 탈것이다.", "바나나는 노란색 과일이다."]
vectorstore = Chroma.from_texts(texts, embeddings)
# 3. RetrievalQA 체인 생성
qa = RetrievalQA.from_chain_type(
llm=llm,
retriever=vectorstore.as_retriever()
)
# 4. 질문 실행
result = qa.run("노란 과일은 무엇인가요?")
print(result)
출력 예시:
바나나는 노란색 과일입니다.
(부록) 용어 정리
- RAG: 검색 증강 생성 (검색 + 생성 결합)
- Retriever: 관련 문서를 찾아주는 모듈
- VectorStore: 임베딩 저장/검색 DB
- 환각(Hallucination): 실제 근거 없이 잘못된 답변 생성
'개발공부 > AI' 카테고리의 다른 글
[AI 개념 및 이해 #4] LangChain: LLM 오케스트레이션 프레임워크 (0) | 2025.09.07 |
---|---|
[AI 개념 및 이해 #3] 벡터 DB(Vector Database) 개념: Chroma, Pinecone, Weaviate 비교 (0) | 2025.09.07 |
[AI 개념 및 이해 #2] 임베딩(Embedding) 이해: 텍스트-벡터 변환 기술 (0) | 2025.09.06 |
[AI 개념 및 이해 #1] LLM(Language Model) 이해: GPT의 동작 (0) | 2025.09.06 |