AI 문서 인용 비교: GPT·Claude·Gemini 검색 근거 확인

AI가 문서 이름을 달아 답했다고 해서 그 문서가 답의 모든 문장을 뒷받침하는 것은 아닙니다. 취소 수수료가 적힌 원문을 정확히 인용하면서도, 적용 공간을 바꿔 안내할 수 있습니다. 문서 검색 업무에서는 필요한 근거를 찾았는지, 인용이 어디를 가리키는지, 그 근거로 답을 할 수 있는지를 나눠 확인해야 합니다.

이번 글은 GPT-6.1 Sol, Claude Sonnet 5.5, Gemini 3.8 Flash를 각각의 공식 API 검색·인용 방식과 함께 비교합니다. OpenAI 문서 저장소를 이미 쓰고 있다면 Sol의 File Search, 문서 전문을 직접 넣고 원문 위치를 확인하려면 Sonnet의 Citations, Gemini의 파일 검색과 JSON 출력을 연결하려면 Flash를 시작 후보로 검토할 수 있습니다. 이는 기능에 따른 선택 제안입니다.

공식 문서 확인 기준일은 2026년 10월 13일 한국시간입니다. 세 모델에 같은 자료를 실제로 실행한 품질·속도 평가나 유료 API 호출은 하지 않았습니다. 아래는 모델 자체의 성능 순위가 아니라 모델과 자료 전달·검색·인용 구현을 묶은 비교입니다. 실습 문서와 오류 후보도 모두 합성 자료입니다.

전체 원문 D03에는 S14가 있고 Q03 R1 검색 후보에는 S13·S15 등이 있지만 수수료 문장 S14가 없어 행사실 차감액·환급액 각 25,000원 확정을 보류하는 합성 실습 요약 도해
합성 실습의 요약 도해입니다. 전체 원문 4개 중 D03에는 S14의 50% 차감·50% 환급 규정이 있지만, Q03의 R1 후보에는 S13·S15 등이 있고 S14는 빠졌습니다. 결제 이용료 50,000원인 행사실 E-H01의 차감액·환급액 각 25,000원은 이번 후보만으로 확정하지 않습니다. 실제 API 검색 결과나 모델 성능 순위가 아닙니다.

모델과 자료 전달 방식을 함께 고릅니다

공식 지원 기능 비교. 동일 조건의 정답률·검색 성능 순위가 아닙니다.
모델·정확한 API ID 이 글에서 비교하는 구현 유리한 작업 조건 주의점
GPT-6.1 Sol
gpt-6.1-sol
Responses API의 File Search와 vector store OpenAI 문서 저장소와 답변 흐름을 연결할 때 파일 인용 표시와 실제 검색된 본문을 함께 보관해야 합니다
Claude Sonnet 5.5
claude-sonnet-5-5
Messages API에 문서 블록을 직접 넣고 Citations 사용 제공한 문서의 인용문과 문자 위치를 확인할 때 이 설정 자체가 외부 문서를 검색하는 저장소는 아닙니다. 내장 인용과 strict JSON은 동시에 쓸 수 없습니다
Gemini 3.8 Flash
gemini-3.8-flash
Interactions API의 File Search와 file search store Gemini 파일 검색과 구조화 출력을 같은 흐름에 연결할 때 Interactions와 Legacy Generate Content의 응답 필드를 구별해야 합니다

Sol 모델 문서는 Responses API의 File Search 지원을, Claude 문서는 현재 활성 모델의 Citations 지원을 명시합니다. Gemini File Search 지원 목록에는 Flash 3.8이 있으며 Gemini 3 계열부터 검색과 구조화 출력을 함께 사용할 수 있습니다. Sol 모델 사양, Sonnet 모델 사양, Claude Citations, Gemini File Search

Claude에 문서 전문을 넣는 방식과 다른 두 서비스의 검색 저장소를 같은 검색 성능 시험으로 취급하면 조건이 달라집니다. 모델의 답변만 비교하려면 실제로 전달된 근거 묶음을 같게 맞추세요. 검색 시스템까지 비교하려면 전체 문서 집합을 고정한 뒤 검색된 근거와 최종 답을 따로 평가합니다.

API의 인용을 어디서 확인하나요

OpenAI: 파일 인용과 검색 결과를 함께 남깁니다

File Search 응답에는 검색 도구 항목과 답변 메시지가 따로 있습니다. 답변의 file_citation에는 파일 ID·이름과 답변 안의 인용 위치가 들어갑니다. 이 위치를 원문 PDF의 페이지나 원문 문자 좌표로 읽으면 안 됩니다. 검색 결과 본문은 기본 응답에 포함되지 않으므로 include에 file_search_call.results를 지정해 검수 자료를 확보하세요. OpenAI File Search 응답·검색 결과 포함 안내

파일 이름을 찾았으면 그 파일의 어떤 문장이 주장에 해당하는지 다시 확인합니다. 검색 결과 수를 줄일 때 필요한 예외 문장도 빠지지 않았는지 살펴보세요. 파일 인용 하나로 같은 단락의 추가 약속까지 승인하지 않습니다.

Claude: 문서 형식에 맞는 원문 위치를 봅니다

일반 텍스트의 내장 인용에는 인용문, 문서 인덱스, 시작·끝 문자 위치가 있습니다. 시작은 0부터 세고 끝 위치는 포함하지 않습니다. 텍스트가 있는 PDF는 1부터 세는 페이지, 사용자 지정 콘텐츠는 블록 위치를 사용합니다. 문서 입력에서 인용을 켜야 하며, 단순히 “출처를 적어 달라”는 요청과는 다릅니다. Claude 문서 형식·인용 위치

Citations와 output_config.format의 구조화 출력을 함께 지정하면 400 오류가 납니다. API 응답을 JSON 객체로 받는 것과 생성 답변을 엄격한 JSON 스키마로 제한하는 것은 다른 문제입니다. 내장 인용이 붙은 설명을 먼저 보관하고 검수표로 옮기거나, 내장 인용을 끈 구조화 출력 요청을 별도로 설계해야 합니다. 별도 변환에서 만든 근거 ID도 최초 인용과 대조하세요. Claude 인용과 구조화 출력의 호환 조건

Gemini: 사용한 API 경로부터 확인합니다

현재 Interactions File Search 문서는 답변 단계의 콘텐츠에 있는 annotations로 인용을 읽는 예제를 제공합니다. 파일 이름, 소스와 사용자 지정 메타데이터 등을 확인할 수 있습니다. PDF 페이지 정보가 있는 인용도 있지만, 모든 TXT 인용에 페이지 좌표가 생긴다고 가정하면 안 됩니다. 사용자 지정 메타데이터는 업로드 시 부여한 정보이므로 그 값과 실제 문서도 맞춰야 합니다. Gemini Interactions File Search 인용 안내

별도의 Legacy Generate Content 문서는 groundingMetadata를 사용합니다. Interactions 응답에서 그 필드만 찾고 “인용 없음”이라고 판단하거나, 두 경로의 예제를 섞지 마세요. 검색 근거와 JSON 값의 의미가 맞는지는 구조화 출력과 별도로 검사합니다. Gemini Legacy File Search 응답 안내

검색 누락과 답변 오류를 나눕니다

문서 집합 전체에는 근거가 있어도 이번 검색에서 모델에게 전달되지 않을 수 있습니다. 반대로 필요한 근거가 전달됐는데 모델이 적용 조건을 잘못 읽을 수도 있습니다. 원인을 구별해야 재시도할 위치가 정해집니다.

  1. 전체 자료 확인: 질문에 답할 문서와 문장이 있는지 먼저 확인합니다.
  2. 전달된 근거 확인: 실제 검색·입력 로그에서 그 문장이 모델에게 전달됐는지 확인합니다. 로그가 없으면 이 단계는 미확인입니다.
  3. 인용 위치 확인: 붙은 파일·문자·페이지 위치가 제공한 원문을 가리키는지 봅니다.
  4. 주장 지원 확인: 그 문장의 대상, 수치, 시점과 예외를 답변이 그대로 지켰는지 봅니다.

검색 후보에 행사실 수수료의 근거 문장이 빠졌다면 행사실의 취소 수수료를 확정할 수 없습니다. “전체 자료에 규정 없음”과 “이번 근거 묶음에 해당 문장이 없음”도 다른 상태로 기록합니다. 이 구분 없이 모델만 바꾸면 검색에서 빠진 같은 근거를 다시 놓칠 수 있습니다.

가격표에 문서 처리 비용을 더합니다

아래는 Standard 유료 API의 비캐시 텍스트 요금입니다. 단위는 미국 달러/100만 토큰이며 앱 구독료와 별개입니다.

2026-10-13 KST 공식 요금표 확인
모델 입력 출력 조건
GPT-6.1 Sol $2.00 $10.00 입력 272K토큰 초과 시 요청 전체 입력 $4.00·출력 $15.00
Claude Sonnet 5.5 $2.00 $10.00 이 표는 일반 텍스트 기본 요금
Gemini 3.8 Flash $0.75 $3.75 2026-12-31까지. 2027-01-01부터 $1.50·$7.50

요금은 Sol 가격·장문 조건, Claude 가격, Gemini 가격·유효기간에서 확인했습니다. 실제 과금 출력에는 청구되는 추론 토큰도 포함해야 합니다. 같은 문서라도 모델별 토큰량은 다릅니다.

  • OpenAI File Search: Responses API 도구 호출은 1,000회당 $2.50, 저장은 하루 1GB당 $0.10이며 첫 1GB는 무료입니다. 여기서 1GB는 2의 30승 바이트입니다. 검색된 입력 토큰과 모델 출력 비용도 별도입니다. 도구 호출 100회를 가정한 $0.25는 검색 호출료만 계산한 값입니다. OpenAI 도구 요금·단위
  • Claude 문서 직접 입력: 전달한 문서가 입력 과금에 들어갑니다. 외부 검색기를 붙이면 그 검색·저장 비용까지 더해야 합니다. 이 글의 직접 입력 방식에 다른 서비스의 저장소 요금을 대신 적용하지 않습니다.
  • Gemini File Search: 저장과 질문 시 임베딩은 무료이며 검색된 문서 토큰은 일반 입력 요금으로 청구됩니다. 색인 임베딩은 선택한 임베딩 모델 요금을 확인해야 합니다. 공식 File Search 일반 요금 행의 $0.15와 gemini-embedding-2의 텍스트 $0.20은 모두 100만 토큰 기준이지만 같은 행이 아닙니다. 선택한 모델을 기록하고 해당 요율을 사용하세요. Gemini File Search 과금 구성, Gemini 임베딩 요금

따라서 입력 단가만으로 문서 검색의 총비용 순위를 만들 수 없습니다. 문서 전체를 매번 전달하는지, 일부만 검색하는지, 얼마나 저장하는지와 수정 요청 수를 함께 기록하세요. 위 표에는 캐시·Batch·속도 옵션·지역 요금·세금·환율을 넣지 않았습니다.

같은 원문에서 근거 묶음만 바꾸는 실습

첨부 자료는 가상의 회의실 취소 규정 4개 문서, 24개 문장과 질문 6개로 구성했습니다. D01은 공간 코드, D02는 일반실, D03은 행사실, D04는 적용 순서와 정보 범위를 정합니다. D01로 공간을 확인하고 D04의 절차에 따라 D02 또는 D03을 선택합니다. 행사 목적이 공간 구분을 바꾸지는 않습니다.

문서·문장 표식 D01과 S01 등은 이 실습에서 만든 ID입니다. 실제 API가 반환한 파일 ID나 문자·페이지 좌표가 아닙니다. 원문과 기대답을 대조하기 위한 작은 자료이며 실제 검색 성능을 재현한 벤치마크가 아닙니다. 공휴일이 없고 이용 시작 전 취소라는 조건도 원문에 명시했습니다.

Q01~Q04·Q06의 결제 이용료는 예약마다 50,000원. Q05는 처리기간만 확인합니다. 전체 원문의 기대 체크입니다.
질문 확인할 답 핵심 근거
Q01 일반실 G-M01, 전영업일 16:40 취소 차감 0원·환급 50,000원 S08
Q02 일반실 G-M01, 당일 취소 20% 차감 10,000원·환급 40,000원 S10
Q03 행사실 E-H01, 전영업일 16:40 취소 50% 차감 25,000원·환급 25,000원. 일반실 전액 환급 제외 S14·S15
Q04 일반실에서 행사, 행사실에서 회의. 각각 당일 취소 목적이 아닌 공간 코드 적용. 일반실 환급 40,000원·행사실 환급 25,000원 S01·S02·S10·S14·S16·S17
Q05 취소 후 3영업일 안에 입금되는가 처리일수·입금 완료일은 제공되지 않아 확정 불가 S22·S23
Q06 일반실 G-M01, 전영업일 정확히 17:00 취소 기한에 포함. 환급 50,000원 S08·S09

금액 계산은 질문의 50,000원에 원문의 차감률을 적용합니다. 일반실 당일 취소는 50,000 × 20% = 10,000원 차감, 50,000 − 10,000 = 40,000원 환급입니다. 계산 금액이 원문 문장에 그대로 적혀 있다고 인용하지 마세요.

실습은 세 조건으로 나눕니다. 첫 번째는 문서 4개 전문입니다. 두 번째 R1은 일부 근거 문장을 의도적으로 빠뜨린 질문별 합성 검색 후보입니다. 세 번째 R2는 빠진 문장을 해당 질문의 후보에 추가합니다. R1·R2는 문서 개정판이 아니며 원문은 그대로입니다. 실제 서비스의 검색 결과를 복제한 자료도 아닙니다.

예를 들어 Q03의 R1에는 행사실의 50% 규정인 S14가 없습니다. 일반실의 전액 환급을 대신 적용하거나 행사실의 25,000원을 추측하면 실패입니다. 제공된 후보로는 수수료를 확정할 수 없다고 남기고, R2에 S14가 들어온 뒤 계산합니다. Q04는 일반실 근거는 있지만 행사실의 수치 근거만 빠지므로 답 전체를 지우기보다 확인 가능한 주장과 보류할 주장을 나눕니다.

Q05도 두 범위를 구별합니다. R1에서 처리기간을 찾지 못한 것만으로 전체 자료에도 규정이 없다고 단정하지 않습니다. R2의 S22·S23은 전체 묶음에 처리일수·입금 완료일이 제공되지 않았음을 명시하므로, 자료 범위를 확인한 뒤에도 3영업일 입금은 확정할 수 없습니다.

인용은 정확한데 답이 틀리는 세 경우

S08 일반실 전영업일 전액 환급을 행사실 E-H01 전액 환급 주장에 붙인 적용 공간 오류와 S10 일반실 당일 20% 차감·80% 환급을 3영업일 입금 주장에 붙인 처리기간 근거 없음의 두 행 비교 도해
합성 실습의 원문 요약과 의도적 오답 주장을 비교한 도해입니다. S08의 일반실 전영업일 17:00까지 전액 환급은 행사실 E-H01의 전액 환급 주장을 지지하지 않습니다. S10의 일반실 당일 취소 20% 차감·80% 환급은 3영업일 안에 입금된다는 처리기간 주장을 지지하지 않습니다. 요약 카드이며 실제 모델 응답이나 API 인용 화면이 아닙니다.

다음은 의도적으로 만든 오류 후보입니다. 실제 GPT·Claude·Gemini 응답이 아닙니다. 세 후보에 붙인 문구는 원문에 존재하지만 옆의 주장을 지지하지 않습니다.

문구 존재 검사는 통과해도 주장 지원 검사는 반려되는 합성 사례
오류 후보 붙인 원문 반려 이유
행사실 E-H01을 전영업일 16:40에 취소하면 전액 환급된다 S08 일반실의 전영업일 17:00까지 전액 환급 인용의 적용 공간이 일반실입니다. 행사실은 S14·S15를 봐야 합니다
일반실 G-M02에서 행사를 열 예정이므로 당일 취소에 50%를 차감한다 S14 행사실의 50% 차감 행사 목적을 공간 코드로 바꿨습니다. 일반실에는 S10의 20%를 적용합니다
일반실 당일 취소 환급금은 3영업일 안에 입금된다 S10 당일 취소의 20% 차감·80% 환급 환급 비율은 처리기간을 말하지 않습니다. S22·S23에 따라 기간은 미제공입니다

Q02의 답에 “40,000원 환급”과 “3영업일 안에 입금”을 한 문장으로 받았다면 둘을 나눠 검수합니다. 첫 주장은 질문의 금액과 S10으로 계산할 수 있지만 두 번째 주장에는 근거가 없습니다. 인용 표시가 하나 달렸다는 이유로 두 주장 모두 합격시키지 마세요.

실습 파일로 직접 확인하는 순서

실습 묶음은 원문 TXT, 질문 CSV·JSON, 공통 요청문, R1·R2 후보 JSON, 기대답·오류 후보와 빈 실행·검수 기록표를 포함합니다. 실행 코드·매크로·API 키가 없으며 파일을 열어도 모델이나 검색 서비스를 자동 호출하지 않습니다.

AI 문서 인용 비교 실습 ZIP 다운로드 (합성 자료·수동 검수용)

실습 ZIP: ai_search_citation_manual_practice_20261013.zip, 18개 파일·21,342바이트. SHA-256: a9a581f543d305dc3268285638aecc5a97221223361f589df95c1a66ed2530d5

  1. ZIP을 빈 폴더에 풀고 README를 읽습니다. reviewer_only 폴더는 검수용으로 남기고 모델에게 제공하지 않습니다. ZIP 전체를 모델에 올리면 정답이 노출될 수 있습니다.
  2. 전문 조건에서는 원문 4개, common_request.txt, 질문 하나만 전달합니다. 질문은 CSV·JSON 중 한 형식으로 제공합니다.
  3. R1 조건은 새 대화에서 같은 질문과 그 질문의 후보만 제공합니다. 전체 원문, 다른 질문의 후보, 이전 전문 답과 R2를 함께 넣지 않습니다. R2도 분리된 새 요청으로 진행합니다.
  4. 답의 각 주장을 값 일치, 인용문·위치, 주장 지원, 해당 회차의 근거 유무로 나눠 검수합니다. 의미상 같은 내용을 지지하는 다른 원문 조합도 사람이 확인합니다.
  5. 실제 API 검색을 시험하면 공급자가 돌려준 검색·응답·인용 자료를 원형으로 보관합니다. R1·R2 후보는 API 요청 스키마가 아닙니다. 실제 반환된 후보가 다르면 고정 후보 실습과 별도 기록으로 남깁니다.

공통 요청의 핵심은 다음과 같습니다.

제공한 원문 또는 해당 질문의 후보만 근거로 답한다.
공간 코드와 적용 순서를 먼저 확인한다.
독립적으로 검수할 사실 주장마다 ID를 붙인다.
각 주장에 근거 문서·문장 ID와 실제 원문 문구를 연결한다.
계산값은 적용 규정과 계산식을 함께 제시한다.
후보에 근거가 없으면 해당 항목을 보류한다.
후보의 누락을 전체 원문의 규정 부재로 확대하지 않는다.
서술 답과 주장별 근거를 받으며 엄격한 JSON을 요구하지 않는다.

이 요청문만으로 API의 내장 인용이 켜지지는 않습니다. 위 공식 API 설정을 별도로 적용해야 합니다. 앱에서 파일을 넣는 방식도 동일한 API 도구 실행을 보장하지 않으므로, 사용한 제품·모델·기능을 기록하세요. 처음 답과 수정 답을 따로 남기며 기대답을 미리 보여 준 실행은 비교에서 제외합니다.

틀렸을 때 다시 확인할 위치

  • 파일 준비 오류: 자료 목록과 처리 상태를 확인합니다. OpenAI 저장소의 파일 상태가 completed인지 확인한 뒤 검색합니다. 원문이 빠졌거나 텍스트를 읽지 못했다면 입력 문제부터 복구합니다.
  • 검색 근거 누락: 전체 문서의 정답 문장이 이번 근거 묶음에 있는지 확인합니다. 범위·필터·후보 수 등을 바꾼 회차는 변경 내용을 남기고 새 조건으로 비교합니다.
  • 적용 조건 오독: 이미 근거가 있다면 해당 주장의 공간 코드·비율·시점을 다시 연결하도록 요청합니다. 최초 실패와 수정 비용을 지우지 않습니다.
  • 인용 처리 오류: 사용한 API의 원형 응답에서 인용을 찾습니다. Claude의 문자 좌표를 확인할 때는 입력 원문을 공백 정리나 줄바꿈 변환으로 바꾸지 않습니다. Gemini 경로를 바꿨으면 응답 필드도 맞춥니다.
  • 없는 약속 추가: 환급 처리일처럼 문서에 없는 값은 답을 보류하고 필요한 자료를 확인합니다. 근거 없이 더 보수적인 날짜를 만들어 넣어도 검수를 통과한 것이 아닙니다.

실제 비교 기록에는 정확한 모델 ID, API 경로, 추론 설정, 자료 해시, 검색·입력 조건, 원응답과 인용, 수정 횟수, 실제 usage와 청구 항목을 남깁니다. 같은 이름의 High 설정이 제조사 사이에서 같은 계산량을 뜻하지는 않습니다. 조회 로그를 확보하지 못했다면 검색 근거 유무를 미확인으로 둡니다.

내 업무의 시작 후보를 정하는 기준

이미 쓰는 문서 저장소와 결과를 확인하는 방식부터 보세요. OpenAI 기반 검색 흐름을 유지하려면 Sol과 검색 결과 보관을, 전문 문서의 원문 위치를 직접 확인하려면 Sonnet의 내장 인용을, Gemini 검색과 구조화 출력을 연결하려면 Flash와 API 경로별 인용 처리를 검토할 수 있습니다. 기능에 맞춰 후보를 좁힌 뒤 같은 자료와 검수 기준으로 실제 답을 비교합니다.

검색으로 전달된 자료가 다른 상태에서 답의 차이를 모두 모델 성능 차이로 설명하지 마세요. 근거를 찾는 단계, 원문을 가리키는 단계, 그 원문으로 주장할 수 있는 범위를 지키는 단계가 모두 확인돼야 업무 답을 채택할 수 있습니다.

작성자 소개