Prompt Enrichment
프롬프트 보강은 AI 모델에 요청을 전달하기 전에 사용자 데이터, 검색된 문서, 도구 결과 또는 예제를 추가하여 사용자에게 적합한 답변을 생성하도록 합니다.
프롬프트 보강은 AI 모델에 전달되기 전에 사용자 요청에 정보를 자동으로 추가하는 작업입니다. 애플리케이션 코드는 사용자와 모델 사이에서 사용자 입력에 포함되지 않은 계정 정보, 질문에 답할 문서, 도구의 실시간 데이터, 작업 예시 또는 더 상세하게 작성된 요청 자체를 보충합니다. "카메라가 왜 더 이상 감지되지 않나요?"라고 묻는 고객은 일곱 단어를 입력하지만, 대규모 언어 모델(LLM)에는 그 일곱 단어와 함께 고객의 기기, 소프트웨어 버전, 정확히 해당 문제를 다루는 도움말 문서가 전달됩니다. 이 용어는 여러 기법을 아우르는 포괄적인 용어이며, 그중 가장 잘 알려진 기법은 검색 증강 생성(RAG)입니다.
보강으로 추가되는 정보#
- 사용자 및 세션 데이터: 애플리케이션 자체 기록에서 가져온 프로필 필드, 요금제, 언어, 위치, 현재 날짜 또는 사용자가 보고 있는 페이지입니다.
- 검색된 지식: 요청과 관련된 텍스트를 문서 컬렉션이나 지식 그래프에서 검색해 찾은 구절입니다.
- 도구 결과: API의 주문 상태, 데이터베이스 행 또는 다른 모델의 출력처럼 현재 요청에 맞춰 가져온 값입니다.
- 선택된 예시: 모든 요청에 동일한 고정 예시 집합을 사용하는 대신 입력과 비슷한 예시를 요청별로 선택합니다.
- 다시 작성된 쿼리: 모델이 간결한 요청을 사용하기 전에 확장합니다. HyDE에서는 Luyu Gao와 동료들이 LLM을 사용해 가상의 답변을 작성한 뒤 해당 문서의 임베딩으로 실제 문서를 검색합니다. 이 방법은 질문만 제공한 동일한 비지도 검색기보다 높은 성능을 보였습니다.
다음 예시는 scikit-learn의 TF-IDF 유사도로 검색한 계정 데이터와 가장 관련성 높은 도움말 문서를 지원 질문에 추가해 보강합니다.
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity
# Context the user never typed: their account record and the help center's articles
account = {"plan": "Pro", "device": "USB webcam", "app_version": "2.3"}
articles = [
"Version 2.4 fixes USB webcams that are not detected after a system update.",
"Pro plans include ten concurrent video streams per workspace.",
"Invoices are available on the billing page as soon as a payment succeeds.",
]
question = "Why is my camera not detected anymore?"
# Retrieve the article most similar to the question
vectorizer = TfidfVectorizer().fit([*articles, question])
scores = cosine_similarity(vectorizer.transform([question]), vectorizer.transform(articles))[0]
best = articles[scores.argmax()]
# Assemble the enriched prompt the model actually receives
profile = ", ".join(f"{key}: {value}" for key, value in account.items())
prompt = f"Customer profile: {profile}\nRelevant article: {best}\nQuestion: {question}"
print(prompt)다음과 같이 출력됩니다.
Customer profile: plan: Pro, device: USB webcam, app_version: 2.3
Relevant article: Version 2.4 fixes USB webcams that are not detected after a system update.
Question: Why is my camera not detected anymore?사용자의 질문에는 웹캠, 버전 또는 업데이트에 대한 언급이 전혀 없지만, 보강된 프롬프트에는 "2.3에서 2.4로 업데이트"라고 답하는 데 필요한 정보가 모두 포함됩니다. 실제 운영 시스템에서는 일반적으로 밀집 임베딩을 사용하는 벡터 데이터베이스나 하이브리드 검색을 통해 검색하지만, 정보를 조합하는 단계는 동일합니다.
실제 보강 사례#
2023년 GitHub는 Copilot의 인접 탭 기법을 설명했습니다. 이 기법은 개발자가 열어 둔 파일에서 커서 주변 코드와 유사한 코드 조각을 검색해 프롬프트에 추가하며, 그 결과 사용자가 Copilot의 제안을 수락하는 빈도가 상대적으로 5% 증가했습니다. 고객 지원 챗봇은 모든 차례에 계정 및 주문 기록을 추가하며, AI 에이전트는 각 단계에 이전 도구 호출의 결과를 추가합니다.
비전 파이프라인은 탐지기가 찾은 정보를 프롬프트에 보강합니다. Ultralytics Platform Agents에서 LLM 블록은 선택된 비전-언어 모델에 각 이미지와 함께 이전 단계 블록의 결과(예: YOLO26 탐지 결과)를 전송합니다. 따라서 한 번 작성한 프롬프트에 워크플로가 처리하는 이미지마다 새로운 객체 탐지 결과가 보강됩니다.
보강에는 비용이 따릅니다. 추가하는 구절마다 토큰을 사용하므로 요금과 추론 지연 시간이 증가하며, 관련성이 낮거나 과도한 컨텍스트는 컨텍스트 로트라고 알려진 현상처럼 정확도를 떨어뜨립니다. 검색된 웹 페이지와 문서에는 프롬프트 인젝션 공격이 포함될 수도 있으며, 프롬프트에 추가하는 모든 개인 데이터는 모델을 실행하는 주체에게 전송되므로 데이터 프라이버시 문제가 발생할 수 있습니다.
프롬프트 보강과 관련 용어 비교#
- 검색 증강 생성(RAG): 외부 문서 컬렉션을 검색하는 보강 방식입니다. 보강에는 사용자의 요금제나 현재 날짜처럼 검색이 필요하지 않은 데이터도 포함됩니다.
- 프롬프트 엔지니어링: 사람이 프롬프트 템플릿을 설계합니다. 보강은 런타임에 해당 템플릿을 요청별 데이터로 채웁니다.
- 컨텍스트 엔지니어링: 각 단계에서 추가, 압축 또는 제거할 내용을 비롯해 애플리케이션 전반의 모델 컨텍스트를 관리합니다. 보강은 이 가운데 정보를 추가하는 작업입니다.
- 그라운딩: 모델 출력을 검증 가능한 출처에 연결합니다. 보강은 해당 출처를 프롬프트에 제공합니다.
- 프롬프트 압축: 정보량이 적은 토큰을 제거해 프롬프트를 짧게 만드는 방법이며, 추가된 컨텍스트가 긴 경우 보강 후에 적용되는 일이 많습니다.










