인공지능 - stuff란 무엇인가?

1 분 소요

📌 1. stuff란 무엇인가?

stuffRetrievalQA 체인 안에서 검색된 문서들을 처리하는 방식을 지정하는 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) 원리는 다음과 같습니다.

프로세스

  1. 문서 조각(docs)을 임베딩(vector화) 합니다.
    (임베딩 모델: text-embedding-ada-002)

  2. 각각의 문서는 고차원 벡터(예: 1536차원)로 변환됩니다.

  3. 사용자가 질문(query)을 입력하면,
    • 그 질문도 같은 임베딩 모델로 벡터화합니다.
  4. 질문 벡터DB에 저장된 문서 벡터들의 유사도(similarity) 를 계산합니다.
    • 보통 코사인 유사도(Cosine Similarity) 를 사용합니다.
    • 또는 거리 기반(L2 거리)로도 찾을 수 있습니다.
  5. 가장 유사도가 높은 문서 4개를 선택해서 반환합니다.

핵심

  • “문자 그대로” 검색하는 게 아니라,
  • 의미상으로 가장 비슷한 문서를 찾는 겁니다.

👉 임베딩 기반 의미 검색(Semantic Search) 입니다.


📌 3. 쿼리는 무엇인가?

여기서 쿼리(query)는 사용자가 입력하는 질문입니다.

query = "톰 소여는 누구인가?"
  • 이 질문을 벡터 임베딩하여,
  • 벡터 DB(FAISS) 에서 관련 문서들을 검색하고,
  • 검색된 문서(Context)를 LLM에게 전달하여
  • LLM이 최종 답변을 생성하는 구조입니다.

요약

| 항목 | 설명 | |:—|:—| | 쿼리란? | 사용자가 입력한 자연어 질문 | | 쿼리 처리 | 질문 → 임베딩 → 벡터 검색 → 관련 문서 추출 | | 최종 흐름 | Context + Question → LLM → Answer 생성 |


✅ 전체 정리 (3줄 요약)

  • stuff는 검색된 문서들을 그냥 이어붙여서 한 번에 LLM에게 전달하는 가장 기본적인 체인 방식입니다.
  • 유사도 찾기는 질문과 문서 조각을 벡터화(임베딩) 해서 코사인 유사도 기반으로 가장 비슷한 것을 찾는 구조입니다.
  • 쿼리는 사용자가 입력한 질문이며, 이 질문을 벡터로 변환하여 관련 문서를 검색하는 데 사용됩니다.

댓글남기기