Cohere 검색 증강 생성(RAG)
Cohere 검색 증강 생성(RAG)
RAG(Retrieval Augmented Generation)는 모델의 출력을 외부 데이터 소스에 '근거'(grounding)시켜서 답변의 정확도를 높이고 환각(hallucination)을 줄이는 기법이에요. Cohere에서는 Command 계열 생성 모델과 Chat API를 함께 쓰면, 외부 문서를 컨텍스트로 넘겨주는 방식으로 RAG를 쉽게 구현할 수 있어요. 모델이 문서를 참고해 답하면서, 그 출처를 인용(citation)으로 함께 뱉어 주는 것까지 이어져요.
Chat API로 RAG 시작하기
Chat API를 RAG 용도로 호출할 때 최소한으로 넘겨야 하는 파라미터는 세 가지예요.
model— 사용할 모델 IDmessages— 사용자의 질의documents— 응답의 컨텍스트로 쓸 문서 정의
response = co.chat(
model="command-a-plus-05-2026",
messages=messages,
documents=documents,
)
HTTP로는 POST https://api.cohere.ai/v2/chat에 model, messages, documents를 담아 요청하면 돼요.
RAG의 세 단계
RAG는 크게 세 단계로 나눌 수 있어요.
1단계: 검색 질의 생성
질문을 받으면 먼저 답에 필요한 정보를 찾을 검색 질의를 만듭니다. 문서를 부족하게 가져오면 답이 부실해지고, 너무 많이 가져오면 노이즈가 생기므로 이 단계의 질의 설계가 중요해요.
2단계: 관련 문서 가져오기
검색 API를 통해 관련 문서를 불러오는 단계예요. 정보를 실제로 가져오는 부분은 사용하는 검색 API에 따라 크게 달라서 이 가이드에서는 자세히 다루지 않아요. 다만, 문서를 작은 조각으로 나눌 때 ±400 단어 정도의 청크(chunk) 로 나누는 게 Cohere 모델 성능에 가장 좋다는 점은 기억해 두면 좋아요.
컨텍스트 길이 한도를 맞추려면, 관련성 높은 문서를 우선 가져오되 가장 덜 관련된 문서를 먼저 버리는 전략을 써요. 이때 Cohere의 Rerank 엔드포인트(rerank)로 문서를 질의 대비 관련성 순으로 정렬하면, 어떤 문서를 떨어뜨릴지 판단하기 쉬워져요.
3단계: 인용 포함 응답 생성
마지막으로 2단계에서 확보한 documents를 Chat API에 다시 전달해 응답을 생성해요. 문서에는 "title", "snippet", "last updated"처럼 의미 있는 키 몇 개를 붙이는 게 좋고, 관련성 있는 데이터만 포함하는 걸 권장해요.
documents = [
{
"data": {
"title": "Tall penguins",
"snippet": "Emperor penguins are the tallest.",
}
}
]
documents 안의 각 항목에는 id 필드가 있어요. 이 id는 인용 생성 시 문서를 가리키는 참조 ID로 쓰여요. id를 넘기지 않으면 API가 문서의 위치를 기준으로 ID를 자동 생성해요. 이 설정에서 Cohere 모델은 답변을 생성하면서 각 문장 범위(span)가 어떤 문서에 기반하는지 세밀한 인용을 기본 제공해요.