인공지능 - stuff란 무엇인가?
📌 1. stuff
란 무엇인가?
stuff
는 RetrievalQA
체인 안에서 검색된 문서들을 처리하는 방식을 지정하는 chain_type
옵션입니다.
chain_type='stuff'
의 의미는:“검색된 문서(Chunks)를 모두 하나로 이어붙여서(context) LLM에 통째로 넣고 답변하게 하자”
라는 뜻입니다.
즉, 검색된 여러 문서를 “그냥(stuff) 하나로 합쳐서” 프롬프트에 넘기는 방식입니다.
특징
| 항목 | 설명 | |:—|:—| | 처리 방법 | 모든 검색 결과를 순서대로 이어 붙여 하나의 입력(context)으로 만듬 | | 장점 | 가장 단순하고 빠름 | | 단점 | 문서가 너무 많거나 길면 LLM 입력 한도(Token limit)에 걸릴 수 있음 |
다른 방식도 있음
stuff
: 그냥 이어붙이기 (가장 기본)map_reduce
: 각각 요약 → 요약들 다시 요약refine
: 초안 작성 → 문서마다 다듬기map_rerank
: 각각 답변 작성 → 가장 좋은 답변 선택
👉 stuff는 가장 단순하고 빠른 기본 전략이라고 기억하면 됩니다.
📌 2. 유사도 찾는 매커니즘은 무엇인가?
여기서는 FAISS 벡터 DB를 사용하고 있고,
유사도 검색(Nearest Neighbor Search) 원리는 다음과 같습니다.
프로세스
-
문서 조각(docs)을 임베딩(vector화) 합니다.
(임베딩 모델:text-embedding-ada-002
) -
각각의 문서는 고차원 벡터(예: 1536차원)로 변환됩니다.
- 사용자가 질문(query)을 입력하면,
- 그 질문도 같은 임베딩 모델로 벡터화합니다.
- 질문 벡터와 DB에 저장된 문서 벡터들의 유사도(similarity) 를 계산합니다.
- 보통 코사인 유사도(Cosine Similarity) 를 사용합니다.
- 또는 거리 기반(L2 거리)로도 찾을 수 있습니다.
- 가장 유사도가 높은 문서 4개를 선택해서 반환합니다.
핵심
- “문자 그대로” 검색하는 게 아니라,
- 의미상으로 가장 비슷한 문서를 찾는 겁니다.
👉 임베딩 기반 의미 검색(Semantic Search) 입니다.
📌 3. 쿼리는 무엇인가?
여기서 쿼리(query)는 사용자가 입력하는 질문입니다.
query = "톰 소여는 누구인가?"
- 이 질문을 벡터 임베딩하여,
- 벡터 DB(FAISS) 에서 관련 문서들을 검색하고,
- 검색된 문서(Context)를 LLM에게 전달하여
- LLM이 최종 답변을 생성하는 구조입니다.
요약
| 항목 | 설명 | |:—|:—| | 쿼리란? | 사용자가 입력한 자연어 질문 | | 쿼리 처리 | 질문 → 임베딩 → 벡터 검색 → 관련 문서 추출 | | 최종 흐름 | Context + Question → LLM → Answer 생성 |
✅ 전체 정리 (3줄 요약)
- stuff는 검색된 문서들을 그냥 이어붙여서 한 번에 LLM에게 전달하는 가장 기본적인 체인 방식입니다.
- 유사도 찾기는 질문과 문서 조각을 벡터화(임베딩) 해서 코사인 유사도 기반으로 가장 비슷한 것을 찾는 구조입니다.
- 쿼리는 사용자가 입력한 질문이며, 이 질문을 벡터로 변환하여 관련 문서를 검색하는 데 사용됩니다.
댓글남기기