RAG(Retrieval-Augmented Generation)
기업은 범용 언어모델을 그대로 사용하는 것이 아니라 사내 문서, 정보, 고객데이터 등을 추가해 기업전용 AI시스템을 구축하며 LLM은 이때 존재하지않는 정보를 생성하는 환각 Hallucination문제가 발생할 수 있다. 이를 해결하기 위해 외부 문서를 검색한 후 검색 결과를 바탕으로 답변을 생성하는 RAG 기법을 사용한다.
기업에서 ChatGPT와 같은 LLM을 업무에 활용할 때 거의 필수적으로 사용한다 .
검색(Retrieval) + 생성(Generation) 합친 기술
2025년까지의 데이터를 학습했는데 우리 회사 2026년 휴가 규정이 뭐야? 라 질문했을때
LLm은 모르지만 답을 만들어낼 수 있는데 이것이 Hallucination(환각).
모르는 내용을 마치 사실인 것처럼 만들어내는 현상.
즉 기존 LLM은 모르면 추축할 수 있지만 RAG는 검색한 문서를 근거로 답한다.
가장 많이 사용하는 라이브러리는 LangChain 회사문서를 읽어 Embedding를 생성하고
Vector DB를 생성해 질문에 비슷한 문서 3개 등을 찾아 LLM에게 전달한다.
이렇게 질문과 검색된 문서를 하나의 프롬프트로 합쳐 답변을 생성한다.
from langchain.document_loaders import TextLoader
loader = TextLoader("company_rule.txt")
documents = loader.load()
from langchain.embeddings import HuggingFaceEmbeddings
embedding = HuggingFaceEmbeddings(
model_name="sentence-transformers/all-MiniLM-L6-v2"
)
from langchain.vectorstores import FAISS
db = FAISS.from_documents(
documents,
embedding
)
query = "신입사원 휴가는?"
docs = db.similarity_search(
query,
k=3
)
context = "\n".join(doc.page_content for doc in docs)
prompt = f"""
다음 문서를 참고하여 답변하세요.
문서:
{context}
질문:
{query}
"""
response = model.generate(prompt)
회사 규정에 따르면
신입사원은 최초 1년 동안
월 1개의 연차를 사용할 수 있습니다.