Grounding
AI 응답을 실제 데이터나 지식에 기반하게 하는 것
AI 응답을 실제 데이터나 지식에 기반하게 하는 것
Grounding은 AI 모델의 응답을 실제 데이터, 문서, 또는 신뢰할 수 있는 지식 소스에 기반하게 하는 기술입니다. LLM이 학습 데이터에만 의존하지 않고 외부의 사실적 정보를 참조하여 더 정확하고 최신의 답변을 생성하도록 합니다.
Grounding의 필요성은 LLM의 Hallucination 문제에서 비롯됩니다. LLM은 학습 데이터의 패턴을 기반으로 그럴듯한 텍스트를 생성하지만, 이것이 항상 사실과 일치하지는 않습니다. Grounding은 이 문제를 해결하는 핵심 전략입니다.
대표적인 Grounding 기법으로는 RAG(Retrieval-Augmented Generation)가 있습니다. 사용자 질문에 관련된 문서를 먼저 검색하고, 이를 컨텍스트로 제공하여 LLM이 답변을 생성하게 합니다. Google의 Vertex AI Search나 Azure의 Cognitive Search가 이를 지원합니다.
실무에서 Grounding은 기업 내부 문서 기반 챗봇, 고객 지원 시스템, 법률/의료 분야 AI 어시스턴트 등에서 필수적입니다. 답변의 출처를 명시하고 사실 확인이 가능한 AI를 만들기 위한 핵심 요소입니다.
from langchain.embeddings import OpenAIEmbeddings
from langchain.vectorstores import Chroma
from langchain.chat_models import ChatOpenAI
from langchain.chains import RetrievalQA
# Grounding을 위한 RAG 파이프라인 구현
def create_grounded_qa_system(documents):
# 1. 문서를 벡터 DB에 저장
embeddings = OpenAIEmbeddings()
vectorstore = Chroma.from_documents(
documents=documents,
embedding=embeddings,
persist_directory="./chroma_db"
)
# 2. Retriever 설정 (상위 3개 관련 문서 검색)
retriever = vectorstore.as_retriever(
search_type="similarity",
search_kwargs={"k": 3}
)
# 3. Grounded QA 체인 생성
llm = ChatOpenAI(model="gpt-4", temperature=0)
qa_chain = RetrievalQA.from_chain_type(
llm=llm,
chain_type="stuff",
retriever=retriever,
return_source_documents=True # 출처 반환
)
return qa_chain
# 사용 예시
qa_system = create_grounded_qa_system(company_docs)
result = qa_system("회사 휴가 정책이 어떻게 되나요?")
print(f"답변: {result['result']}")
print(f"출처: {[doc.metadata['source'] for doc in result['source_documents']]}")
"고객 문의 챗봇에 Grounding을 적용해야 합니다. FAQ 문서와 제품 매뉴얼을 벡터 DB에 넣고, 항상 출처를 표시하면 Hallucination으로 인한 잘못된 안내를 방지할 수 있어요."
"Grounding과 Fine-tuning의 차이는 목적입니다. Fine-tuning은 모델의 스타일이나 도메인 지식을 학습시키고, Grounding은 실시간으로 외부 정보를 주입해서 사실성을 높입니다. 둘을 함께 사용하면 효과적입니다."
"Grounding 품질은 Retriever 성능에 달려있어요. 단순 키워드 검색보다 Semantic Search가 훨씬 낫고, Reranker를 추가하면 관련성이 더 높은 문서를 가져올 수 있습니다."
Grounding의 품질은 소스 문서의 품질에 직접적으로 의존합니다. 오래되거나 부정확한 문서는 오히려 잘못된 답변을 유도할 수 있습니다.
관련 문서를 찾지 못했을 때의 fallback 전략이 필요합니다. "정보를 찾을 수 없습니다"라고 명확히 안내하는 것이 Hallucination보다 낫습니다.
검색된 문서가 너무 많거나 길면 LLM 컨텍스트 윈도우를 초과합니다. 문서 chunking과 요약 전략을 함께 설계하세요.